第四节 扰动观测器基本原理:DOB的由来、内模原理、等效框图与传递函数推导
各位同学,今天我们聊一个在运动控制里特别核心的东西——扰动观测器,也就是大家常说的DOB。
说实话,我刚入行那会儿,对扰动观测器也是一头雾水。那时候做伺服驱动器,电机一加载就抖,速度稳不住。后来一位老前辈跟我说:「你试试加个扰动观测器。」我照着做了,效果立竿见影。从那时起,我就对DOB产生了浓厚的兴趣。
一、DOB的由来:为什么要观测扰动?
先问大家一个问题:你想想看,一个电机在运行的时候,到底会受到哪些干扰?
- 负载突变——比如机械臂突然抓起一个重物
- 摩擦力变化——导轨润滑不好,摩擦力忽大忽小
- 模型误差——你建模时用的惯量是1,实际可能是1.2
- 外部冲击——比如机床切削时碰到硬点
这些扰动,说白了就是「不请自来的力」。它们会让你的系统偏离预期轨迹。传统的PID能处理一部分,但遇到大扰动或者高频扰动,PID就有点力不从心了。
那怎么办呢?
我个人的习惯是:既然扰动来了,不如直接把它「测」出来,然后主动补偿掉。这就是DOB的核心思想——你不是要对抗扰动吗?那就先把它估计出来,再反向抵消。
核心思想:DOB的本质是一个「虚拟传感器」,它利用系统的输入输出信息,反向推算出作用在系统上的等效扰动。
二、内模原理:DOB的理论根基
说到DOB的理论基础,就不得不提内模原理。这个名字听起来挺唬人,其实道理很简单。
内模原理说的是:如果你想让系统完美跟踪某个信号,或者完全抑制某个扰动,那你的控制器里必须包含这个信号或扰动的模型。
举个例子:
- 你要跟踪一个阶跃信号,控制器里就得有个积分器(因为阶跃的拉氏变换是1/s)
- 你要抑制正弦扰动,控制器里就得有个谐振环节
DOB用的是什么模型呢?它用的是系统的标称模型。说白了,就是「我知道系统应该长什么样,实际跟理想不一样的地方,统统算作扰动」。
我在项目中遇到过一种情况:一个精密转台,低速时总是有周期性抖动。查了半天,发现是齿槽转矩在作怪。用DOB之后,因为内模原理把这种周期性扰动也纳入了观测范围,效果出奇的好。
避坑指南:我曾经犯过一个错误——把DOB的带宽设得太高,结果高频噪声全被放大进来了。记住,DOB不是万能的,它的观测能力受限于传感器噪声和系统带宽。
三、等效框图:DOB长什么样?
好,理论说完了,咱们来看看DOB的实际结构。我画一个等效框图给大家看:
d
↓
r → [C(s)] → + → [P(s)] → y
↑ |
| + ← [Q(s)·Pₙ⁻¹(s)]
| ↑
+---------+
这个图里:
- P(s):实际被控对象(比如电机+负载)
- Pₙ(s):标称模型(你建模时认为的理想对象)
- Q(s):低通滤波器(关键!决定了DOB的性能)
- C(s):主控制器(比如PID)
- d:等效扰动(包含所有不确定性和外部干扰)
你注意看,DOB的回路是从输出y取信号,经过Pₙ⁻¹(s)和Q(s),再反馈到输入端。这个结构,说白了就是「用标称模型的逆来反推输入,再用低通滤波器滤掉噪声」。
四、传递函数推导:一步步来
嗯,这里要注意,推导过程虽然有点数学,但理解了物理意义就不难。
我们先定义几个量:
- 实际系统输出:y = P(s)·(u + d)
- DOB估计的扰动:d̂ = Q(s)·[Pₙ⁻¹(s)·y - u]
- 补偿后的控制量:u = u₀ - d̂
把上面三个式子联立,消去中间变量,可以得到:
y = P(s)·[u₀ - Q(s)·(Pₙ⁻¹(s)·y - u₀) + d]
整理后:
y = [P(s)·Pₙ(s) / (Pₙ(s) + Q(s)·(P(s) - Pₙ(s)))] · u₀
+ [P(s)·Pₙ(s)·(1 - Q(s)) / (Pₙ(s) + Q(s)·(P(s) - Pₙ(s)))] · d
这个式子看着复杂,但咱们可以分两种情况讨论:
| 频率范围 | Q(s)特性 | 传递函数简化 | 物理意义 |
|---|---|---|---|
| 低频段 | Q(s) ≈ 1 | y ≈ Pₙ(s)·u₀ | 系统被「校正」成标称模型,扰动被抑制 |
| 高频段 | Q(s) ≈ 0 | y ≈ P(s)·u₀ + P(s)·d | DOB不起作用,系统回到原始状态 |
看到没?这就是DOB的精髓——低频时把系统变成你想要的理想模型,高频时保持原样。中间的过渡由Q(s)的截止频率决定。
重要提醒:Q(s)的设计是DOB成败的关键。截止频率选高了,噪声放大;选低了,扰动抑制效果差。我一般建议从系统带宽的1/5到1/10开始试,再根据实际效果微调。
五、个人经验总结
做了这么多年运动控制,我对DOB有几点体会:
- DOB不是替代PID,而是给PID「减负」。PID负责跟踪,DOB负责抗扰,各司其职。
- 标称模型越准,DOB效果越好。我见过有人随便写个Pₙ(s)就往上怼,结果震荡得一塌糊涂。
- Q(s)的阶次要匹配。一般用二阶或三阶巴特沃斯滤波器,保证Pₙ⁻¹(s)的因果性。
- 离散化要注意。连续域设计好了,离散化时采样频率至少是DOB带宽的10倍以上。
最后说一句:DOB这个东西,你光看书觉得玄乎,真正上手调一次就明白了。下次课我们讲Q(s)的具体设计方法,到时候我会拿一个实际案例来演示。
今天就到这里,有问题随时问我。