3. 误差数学模型
聊完了误差来源和分类,咱们得动真格的了——怎么把误差这个东西用数学描述出来?
你想想看,如果连描述都描述不清楚,谈何分析和补偿?
我个人习惯,先把误差当成一个“信号”来处理。既然是信号,那就有传递函数、有状态空间、有灵敏度,还有统计特性。这一套下来,误差就不再是玄学,而是可以计算、可以预测的东西了。
3.1 误差传递函数
先说说我最常用的工具——误差传递函数。
说白了,就是系统输入到误差输出的传递关系。假设我们有一个闭环系统,参考输入是 R(s),输出是 Y(s),那误差 E(s) = R(s) - Y(s)。
Φe(s) = E(s) / R(s) = 1 / (1 + G(s)H(s))
这里 G(s)H(s) 是开环传递函数。嗯,这里要注意:误差传递函数的分母就是闭环特征多项式。系统稳不稳定,看它就知道。
我在项目中遇到过一件事:有个伺服系统,空载时跟踪精度很好,一加上负载就开始抖。我一开始以为是摩擦补偿没做好,后来一算误差传递函数,发现是开环增益在负载变化时掉得太厉害,导致低频误差放大。说白了,是刚度不够。
3.2 误差状态空间模型
传递函数适合单输入单输出,但现代系统哪有这么简单?多变量、耦合、时变……这时候就得用状态空间了。
误差状态空间模型怎么建?我习惯这样操作:
- 先写出系统的状态方程:ẋ = Ax + Bu, y = Cx + Du
- 定义误差状态:e = r - y(r是参考输入)
- 如果参考输入是常数或已知轨迹,可以构造增广系统
举个例子,一个简单的积分器系统:
系统:ẋ = u, y = x
误差:e = r - x
误差动态:ė = -u + ṙ
如果 r 是阶跃(ṙ=0),则:
ė = -u
取 u = Ke,则 ė = -Ke
——误差以指数衰减,时间常数 1/K
你看,状态空间模型的好处是:能直观看到误差的动态行为。而且可以处理多变量耦合——这在MIMO系统中特别有用。
3.3 误差灵敏度分析
灵敏度分析,说白了就是回答一个问题:系统参数变了,误差会怎么变?
我把它分成两类:
- 参数灵敏度: 比如电阻值漂移了5%,误差会变大多少?
- 扰动灵敏度: 比如电源纹波进来,误差响应有多大?
数学上,灵敏度函数定义为:
其中 P 是某个参数。这个比值越小,说明系统对参数变化越不敏感——也就是鲁棒性越好。
我记得有一次做精密温控系统,发现温度传感器标称精度0.1°C,但实际误差能到0.3°C。一算灵敏度,发现是传感器安装位置的热阻太大,导致测量延迟。说白了,不是传感器不行,是安装方式不对。灵敏度分析帮我找到了真正的瓶颈。
3.4 误差的统计特性
前面讲的都是确定性误差——模型已知、参数确定。但现实世界哪有那么完美?
噪声、量化误差、随机扰动……这些都是随机过程。对付它们,得用统计方法。
均值(Mean)
均值描述误差的“中心趋势”。如果误差均值不为零,说明系统存在系统偏差——也就是常说的“偏置”。
μ_e = E[e(k)] = lim(N→∞) (1/N) Σ e(k)
实际中,我们常用样本均值来估计:
μ̂_e = (1/N) Σ e(k)
我在做ADC校准的时候,发现采集1000个点,均值总是偏0.5个LSB。查了半天,原来是参考电压的直流偏置。补偿掉这个均值后,精度直接提升了一个等级。
方差(Variance)
方差描述误差的“离散程度”。方差大,说明误差波动剧烈——系统不够稳定。
σ²_e = E[(e(k) - μ_e)²]
标准差 σ_e 更常用,因为它和误差有相同的量纲。
协方差(Covariance)
协方差描述两个误差变量之间的相关性。在多变量系统中特别重要。
Cov(e₁, e₂) = E[(e₁ - μ₁)(e₂ - μ₂)]
如果协方差为正,说明两个误差同向变化;为负则反向变化;为零则不相关。
举个例子:在双轴运动平台上,X轴和Y轴的误差如果正相关,那圆轨迹就会变成椭圆。我遇到过这种情况,后来发现是机械耦合导致的——X轴运动时Y轴也跟着动了一点。通过协方差分析,我量化了这个耦合量,然后用前馈补偿掉了。
知识体系总览
下面这张图,是我梳理的误差数学模型整体框架。你可以把它当作本章的“地图”:
这张图把四种方法串起来了。我个人觉得,最理想的做法是:先用传递函数做初步分析,再用状态空间处理多变量耦合,然后用灵敏度找到关键参数,最后用统计方法评估随机误差的影响。四步走完,误差的“底细”基本就摸清了。
好了,这一章的内容就到这儿。误差数学模型是后续所有分析和补偿方法的基础——你把它吃透了,后面讲误差观测、误差补偿、鲁棒设计的时候,就会顺很多。
公众号:蓝海资料掘金营,微信deep3321