1. 扰动从哪来?为什么"看不见"就补不掉
伺服系统的扰动(Disturbance)是破坏速度/位置精度的元凶,常见来源:
- 负载突变:机械负载突然加载/卸载,如切削进刀、抓取物体
- 齿槽转矩:与转子位置相关的周期性扰动(见《齿槽转矩补偿》)
- 摩擦力矩:静摩擦、库仑摩擦、粘滞摩擦,低速时尤其明显(爬行)
- 参数失配:惯量 J 辨识不准、R/L 随温度漂移——会让整定好的控制器"变差"
- 转矩脉动:磁场谐波产生的周期性转矩波动
对付扰动有两条路线:
- 建模前馈:知道扰动规律(如齿槽按角度查表、死区按电流极性),直接补。缺点:只能补"已知"的扰动
- 观测器估计:不管扰动是什么来源,用可测信号(电流、速度)把总扰动估计出来再抵消——通用、鲁棒,正是本文主题
在 dq 坐标下,无论扰动来自负载、摩擦还是参数失配,机械层面都表现为一个"额外转矩 Td"作用在转子上。观测器的任务就是把这个 Td(总和扰动)实时估计出来。
2. 扰动观测的本质:从机械方程"反推"
电机转子运动方程:
J·dω/dt = Te − Td ⟹ Td = Te − J·dω/dt
其中电磁转矩 Te 是已知的(Te = Kt·iq,Kt=1.5·p·ψf),转速 ω 是可测的(编码器/观测器)。所以理论上扰动直接能算出来!
但问题在于 dω/dt 是对速度差分求导——编码器速度本身有量化噪声,差分一次噪声被放大,几乎没法直接用。工程解法:加一个低通滤波器 Q(s),把高频噪声滤掉,只保留低频的扰动成分:
T̂d = Q(s)·(Te − J·s·ω) , Q(s) = 1/(τ·s + 1)
τ 决定观测带宽 fobs = 1/(2πτ):τ 越小观测越快,但吃进更多噪声
这就是扰动观测器 DOB(Disturbance Observer)的核心——它本质是一个"带通"的扰动估计器。DOB 是前馈性质的:扰动先于 PI 积分被抵消,所以对突然加载的抑制远好于靠速度环 PI 慢慢"追"。
2.1 观测带宽怎么选
- 太低:观测跟不上扰动变化,补偿滞后、效果差
- 太高:把速度噪声当成扰动,补偿反而注入噪声、引发振荡
- 经验:观测带宽取 速度环带宽的 3~5 倍,同时低于速度反馈滤波/编码器噪声频率
3. 四种主流扰动观测器
3.1 DOB(扰动观测器)——最直观
结构如上:用 Te − J·s·ω 反推扰动,再经 Q(s) 低通。实现最简单、物理意义最清晰,是工业应用最广的方案。缺点:依赖 J 的准确性(J 不准则估计有偏),且直接差分速度对噪声敏感。
3.2 龙伯格扰动观测器(Luenberger Observer)——状态估计
把扰动当作一个"缓变状态",用状态空间建模:
dω̂/dt = (Kt·iq − T̂d)/J + L1·(ω − ω̂)
dT̂d/dt = L2·(ω − ω̂)
假设扰动缓变 dTd/dt≈0;用测量速度与估计速度的误差 e=ω−ω̂ 校正两个估计
增益 L1、L2 由极点配置决定:特征方程 s² + L1·s + L2/J = (s+ωobs)²,取临界阻尼(ζ=1)得 L1=2ωobs、L2=ωobs²·J。相比 DOB,龙伯格观测器不直接差分速度,噪声特性更好,是工程上很实用的选择。
3.3 滑模扰动观测器(SMO)——鲁棒但抖振
用滑模项代替线性校正:把 e=ω−ω̂ 驱动到滑模面,由等效控制项得到扰动估计。优点:对参数失配和模型误差鲁棒性强;缺点:存在抖振(chattering),需要边界层/饱和函数软化,否则补偿信号高频抖动。常见于追求强鲁棒性的高端伺服。
3.4 扩张状态观测器(ESO)——ADRC 的核心
自抗扰控制(ADRC)的"心脏":把总扰动(包含模型误差)扩张成一个新状态,用一个二阶观测器同时估计转速和总扰动:
e = ω − ω̂1
ω̂̇1 = ω̂2 + β1·e + b0·u
ω̂̇2 = β2·e
ω̂2 就是总扰动估计;b0≈Kt/J 为控制增益;β1、β2 按带宽整定(β1=2ωobs、β2=ωobs²)
ESO 的优势:不依赖精确模型,把"模型误差+外部扰动"一起估计,非常适合工况复杂、参数多变的场合(机器人关节、变负载设备)。
| 观测器 | 核心思想 | 抗参数失配 | 实现难度 | 典型场景 |
|---|---|---|---|---|
| DOB | 反推 + 低通 Q | 中(依赖 J) | ★☆☆ | 工业通用、入门首选 |
| 龙伯格 | 状态估计 + 极点配置 | 中 | ★★☆ | 高性价比、噪声敏感场合 |
| 滑模 SMO | 滑模面 + 等效控制 | 强 | ★★★ | 强鲁棒高端伺服 |
| ESO | 扰动扩张为状态 | 强(不依赖模型) | ★★☆ | ADRC、变负载/机器人 |
4. 补偿策略:把估计扰动变成 iq 前馈
观测到扰动 T̂d 后,把它转换为 iq 补偿量叠加到电流指令上:
Δiq = T̂d / Kt , iq,ref = iq,PI + Δiq
速度环 PI 输出(iq,PI)加上扰动前馈 Δiq,共同作为电流环指令
为什么有效?没有观测器时,负载加载会让速度跌下来,速度环 PI 需要时间积分"追"回去——速度已经跌了才补。有了观测器,扰动在速度跌落之初就被估计出来并立即前馈抵消,速度几乎不掉。等效刚性大幅提升(扰动抑制能力 ≈ 观测带宽以内的频带)。
① 电流环要够快:前馈补偿要经过电流环执行,电流环带宽不足会"拖延"补偿;② 别超出电流/电压极限:扰动太大时 Δiq 可能饱和,要做限幅与速度环输出的协调。
5. 与齿槽、死区补偿的分工
本站已有两篇"补偿"文章,它们和观测器是互补关系:
- 齿槽转矩补偿:位置相关的确定性扰动 → 查表/谐波前馈,相位准、无延迟
- 死区补偿:电压域的确定性误差 → 电压前馈,按电流极性
- 本文观测器:未知/多变的总扰动(负载/摩擦/参数失配)→ 估计+前馈
工程上常常三管齐下:确定性扰动用建模前馈(齿槽/死区),残留和负载突变用观测器兜底。观测器"看不见"高于观测带宽的快速扰动,那些恰恰需要建模前馈来补——两者频带互补。
6. 交互式演示:速度环抗扰仿真
下面仿真一个带速度环 PI + 电流环惯性的伺服系统,在 t=0.3s 施加阶跃负载。对比无扰动观测(红)与带观测器前馈(绿)的速度响应:看速度跌落量和恢复时间,再调观测带宽感受"快与噪"的权衡。
观察要点:
- 加载瞬间:无补偿时速度明显跌落、靠 PI 慢慢恢复;带观测时跌落大幅减小、恢复更快——这就是扰动观测的价值
- 把观测带宽调大:补偿越来越准,但速度/补偿信号噪声随之增大;调小:平稳但补偿滞后——快与噪的权衡
- 把负载调到 0:两条线重合,观测器不注入干扰
- 下方图是扰动估计(绿)与真实负载(灰):观测器用约一个观测周期的时间"追"上真实扰动
7. 代码实现(C语言)
7.1 龙伯格扰动观测器 + 前馈补偿
7.2 简易 DOB(Q 滤波)
7.3 参数与调试建议
- J 要准:观测器的 J 用辨识值(可用惯量辨识),J 偏差会让估计有偏
- 观测带宽:从速度环带宽的 3 倍起步,逐步加大到"速度跌落明显减小"且补偿信号不抖为止
- 前馈限幅:Δiq 与速度环输出共用 iq 限幅,防止大扰动时饱和失控
- 验证:加阶跃负载看速度跌落;把观测器输出 T̂d 与已知负载对比,确认估计收敛
8. 工程要点与常见误区
- 观测器不是万能的:它只能抑制观测带宽以内的扰动;快速扰动要靠建模前馈(齿槽/死区)补
- 观测带宽是核心旋钮:太慢补偿滞后,太快注入噪声。永远从慢往快调
- J 不准会"带偏":DOB/龙伯格都依赖 J;用惯量辨识把 J 校准到 10% 以内再上观测器
- 与 PI 配合:观测器解决"带宽内扰动",速度环 PI 仍负责"稳态与模型误差",二者不冲突
- 先保证电流环:扰动前馈要经过电流环执行,电流环带宽上不去,观测补偿也白搭
- 留意饱和:大负载 + 前馈可能顶到电压/电流极限,务必限幅并做抗饱和
扰动观测 = 用 Te 与 dω/dt 反推 Td,再用低通/状态估计滤噪声;补偿 = 把估计扰动转成 Δiq=T̂d/Kt 前馈。选型上:通用选 DOB、噪声敏感选龙伯格、强鲁棒选滑模、变负载/机器人选 ESO。