第二章 故障模型与分类:传感器、执行器、系统组件的数学建模
各位好,我是老张。今天咱们聊聊故障建模这件事。
说实话,我刚入行那会儿,觉得故障诊断就是等出问题了再修。后来被现实狠狠教育了一回——某次现场测试,传感器读数飘了半小时我才发现,差点酿成大祸。从那以后我明白一个道理:没有好的故障模型,容错控制就是空中楼阁。
这一章,咱们就把三类核心故障的数学模型掰开揉碎讲清楚。
2.1 传感器故障模型
传感器是控制系统的眼睛。眼睛出了问题,你想想看,再好的算法也白搭。
常见的传感器故障有四种:
- 偏差故障:读数始终偏离真实值一个固定量
- 漂移故障:读数随时间缓慢偏离
- 精度下降:噪声方差变大
- 完全失效:输出卡死或为零
数学上,我习惯用一个统一模型来描述:
y_s(t) = y_true(t) + f_s(t) + v(t)
其中 y_s 是传感器输出,y_true 是真实值,f_s(t) 是故障项,v(t) 是噪声。
具体到每种故障:
| 故障类型 | 数学模型 | 典型参数 |
|---|---|---|
| 偏差 | f_s(t) = b (常数) | b = 0.5V |
| 漂移 | f_s(t) = α·t | α = 0.01V/s |
| 精度下降 | v(t) ~ N(0, σ²), σ增大 | σ从0.1变为0.5 |
| 卡死 | y_s(t) = c (常数) | c = 3.2V |
避坑指南:我曾经在电机转速传感器上遇到过漂移故障,一开始以为是正常温漂,结果漂了2%还没报警。后来我加了个一阶差分检测,专门抓这种慢变故障。
2.2 执行器故障模型
执行器是控制系统的手脚。手脚不灵便,系统就失控了。
执行器故障主要有:
- 增益变化:输出与输入的比例关系改变
- 死区/饱和:小信号无响应,或输出卡在极限
- 卡死:输出固定在某个位置不动
- 完全失效:输出为零或失控
我常用的执行器故障模型长这样:
u_act(t) = ρ(t) · u_cmd(t) + u_bias(t)
ρ(t) 是增益因子,正常时为1。u_bias(t) 是偏置项。
举个例子,阀门卡死在50%开度:
u_act(t) = 0.5 (常数,与u_cmd无关)
说白了,这就是ρ=0,u_bias=0.5的情况。
注意:执行器故障往往比传感器故障更危险。传感器坏了你还能看到错误数据,执行器坏了系统可能直接失控。我建议在建模时,优先考虑执行器故障的检测隔离。
2.3 系统组件故障模型
组件故障是最麻烦的。它直接影响系统的动态特性。
比如:
- 电阻/电容参数漂移:时间常数变化
- 结构损伤:刚度、阻尼系数改变
- 泄漏/堵塞:流体系统的流量系数变化
对于线性系统,我习惯用参数摄动模型:
ẋ(t) = (A + ΔA)x(t) + (B + ΔB)u(t)
y(t) = (C + ΔC)x(t)
ΔA、ΔB、ΔC 就是故障引起的参数变化量。
举个例子,一个RC低通滤波器的电阻从10kΩ漂到12kΩ:
正常:τ = RC = 10k × 1μF = 0.01s
故障:τ' = 12k × 1μF = 0.012s
ΔA = -1/τ' + 1/τ ≈ -16.7
核心要点:组件故障建模的关键是找到哪些参数会变化,以及变化范围有多大。我一般会先做灵敏度分析,找出对系统性能影响最大的参数。
2.4 三类故障的统一框架
实际系统中,三类故障往往同时存在。我画了张图帮大家理解它们的关系:
从这张图能看出来:
- 传感器故障影响反馈信号质量
- 执行器故障影响控制输入
- 组件故障改变系统本身特性
三者相互影响,但建模思路是统一的——找到故障对系统数学描述的影响方式。
2.5 故障注入的工程实现
光有模型不够,还得能注入到系统中测试。我常用的方法:
// 传感器故障注入示例(C语言风格)
float sensor_fault_inject(float true_value, int fault_type, float t) {
float bias = 0.5; // 偏差量
float drift_rate = 0.01; // 漂移速率
float stuck_value = 3.2; // 卡死值
switch(fault_type) {
case 0: return true_value; // 无故障
case 1: return true_value + bias; // 偏差
case 2: return true_value + drift_rate * t; // 漂移
case 3: return stuck_value; // 卡死
default: return true_value;
}
}
我的经验:故障注入测试时,一定要先跑一遍无故障的基线数据。不然你都不知道系统正常时是什么表现。我曾经跳过这步,结果把正常波动当成了故障,折腾了两天。
2.6 小结
这一章咱们把三类故障的数学模型讲清楚了:
- 传感器故障:偏差、漂移、精度下降、卡死
- 执行器故障:增益变化、死区、卡死、失效
- 组件故障:参数摄动、结构变化
记住一个原则:模型越精确,诊断越容易。但也不要过度建模,够用就好。
嗯,今天就到这里。这些模型在后续章节会反复用到,建议大家动手写写代码,把每种故障都注入到仿真系统里看看效果。