一、误差基本概念

1.1 误差的定义

做控制这么多年,我越来越觉得——误差这东西,就像影子一样甩不掉。

你设计了一个完美的PID控制器,仿真跑得漂漂亮亮。结果一上硬件,输出就是差那么零点几伏。为什么?因为真实世界从来不是理想模型。误差,说白了就是测量值或计算值与真实值之间的偏差。

用公式表达就是:

误差 = 测量值 - 真实值

嗯,看起来简单。但实际项目中,这个「真实值」往往是个哲学问题——你永远无法绝对精确地知道它。我们能做的,只是用更高精度的仪器去逼近。

1.2 误差的分类

我个人习惯把误差分成三类,这样排查问题的时候思路会清晰很多。

系统误差

这类误差有规律、可重复。比如传感器零偏、放大器温漂、ADC量化误差。我在做电机电流环的时候,遇到过霍尔传感器在25℃和85℃下输出差了2.3%。这就是典型的系统误差。

特点:

  • 大小和方向固定,或按一定规律变化
  • 理论上可以通过标定或补偿消除
  • 重复测量不会减少
我的经验:系统误差是「好朋友」——因为它有规律,你就能建模补偿。我曾经用三次多项式拟合了一个温度-偏移曲线,把精度从5%提到了0.3%。

随机误差

这类误差没有固定规律,服从统计分布。比如电路热噪声、AD转换的抖动、机械振动引起的读数波动。

你想想看,同一个传感器测同一个物理量,连续读100次,每次都不一样。这就是随机误差在作怪。

特点:

  • 大小和方向随机,但服从正态分布
  • 无法完全消除,但可以通过多次测量取平均来减小
  • 标准差决定了测量精度的极限
注意:随机误差不是「错误」。它反映的是系统本身的噪声底限。我曾经有个项目,客户要求0.1%精度,结果传感器本身的随机噪声就有0.08%。这就很尴尬了——你再怎么滤波,也突破不了物理极限。

粗大误差

这类误差就是「出格」的数据。比如传感器突然断线、电磁干扰导致的一个异常跳变、人为读数看错。

特点:

  • 明显偏离正常范围
  • 必须剔除,不能参与计算
  • 通常由外部异常引起
避坑指南:我曾经在调试一个数据采集系统时,发现每隔几分钟就有一个离谱的跳变。查了三天,最后发现是隔壁工位的电焊机一开机就产生强电磁干扰。从那以后,我所有ADC输入都加了RC低通滤波和软件限幅。

1.3 误差的表示方法

绝对误差

就是测量值减去真实值。单位与测量值相同。

绝对误差 = 测量值 - 真实值

比如你测一个5V电压,读数是4.98V,绝对误差就是-0.02V。

但绝对误差有个问题——它不告诉你这个误差相对于测量范围来说是大还是小。测5V差0.02V,和测0.1V差0.02V,严重程度完全不一样。

相对误差

相对误差 = 绝对误差 / 真实值 × 100%

还是上面那个例子:

  • 测5V,绝对误差-0.02V,相对误差-0.4%
  • 测0.1V,绝对误差-0.02V,相对误差-20%

你看,同样的绝对误差,相对误差差了50倍。所以做小信号测量时,我特别关注相对误差。

表示方法 公式 适用场景
绝对误差 Δ = x - x₀ 量程固定、精度要求明确的场合
相对误差 δ = Δ / x₀ × 100% 不同量程比较、精度等级标注
引用误差 γ = Δ / 量程 × 100% 仪表精度等级标定(如0.5级表)
小技巧:我习惯在项目文档里同时标注绝对误差和相对误差。绝对误差给硬件工程师看(他们关心ADC位数够不够),相对误差给算法工程师看(他们关心控制精度能不能达标)。

1.4 离散系统误差特点

离散系统和连续系统最大的区别在哪?采样和量化。

你想想看,连续系统里信号是光滑的,误差也是连续的。但离散系统里,我们只在采样时刻拿到数据,中间发生了什么?不知道。

离散系统误差的几个典型特点:

  • 采样误差:采样频率不够高,会丢失高频信息。我遇到过用1kHz采样一个500Hz的信号,结果混叠成了一个低频信号——这就是奈奎斯特定理没遵守的后果。
  • 量化误差:ADC把连续值变成离散数字,必然有舍入。12位ADC的量化步长是3.3V/4096 ≈ 0.8mV。这个误差是随机的,但范围固定。
  • 截断误差:做定点数运算时,乘法结果要截断或舍入。我早期做DSP算法时,就因为截断方式没选对,导致一个积分器慢慢漂到了饱和。
  • 时序误差:任务调度延迟、中断响应抖动,都会导致采样时刻不精确。这在高速控制系统中是致命问题。
血的教训:我曾经做一个伺服驱动器项目,电流环采样周期标称50μs。结果实际跑起来,因为中断优先级设置不当,采样周期抖到了±10μs。电流环直接震荡,电机嗡嗡响。查了两周才发现是RTOS任务抢占导致的。

下面这张图是我总结的离散系统误差来源框架,帮你快速定位问题:

离散系统误差来源框架 离散系统误差 采样相关误差 量化与计算误差 混叠误差 时序抖动 量化噪声 截断误差 控制精度下降 系统稳定性变差 系统性能不达标

这张图把离散系统误差分成了两大块:采样相关和量化计算相关。我每次做系统设计时,都会对着这张图逐项排查,基本能覆盖90%的误差来源。

核心观点:离散系统的误差不是「坏东西」,它是系统设计的一部分。你理解了它,就能补偿它。你忽略了它,它就会在关键时刻给你「惊喜」。

好了,这一章的内容就到这里。误差的基本概念是后续所有补偿方法的基础。下一章我们会深入讨论系统误差的建模与标定方法——嗯,到时候我会分享一个我实际用过的分段线性插值补偿案例,挺实用的。


公众号:蓝海资料掘金营,微信deep3321