1. 为什么要引入 ADRC:PID 的"误差驱动"天花板
三闭环(位置环→速度环→电流环)是伺服驱动的主流架构(见《三闭环带宽分配与PI整定》)。每个环都用一个 PI 控制器,靠"误差驱动"工作:先有误差,积分器再慢慢追。这种结构有三个天然短板:
- 滞后性:误差出现 → PI 积分追赶 → 修正生效,中间隔着至少一个积分时间常数。负载突变时速度必然先跌落,再被"追回来"
- 积分副作用:为了消除稳态误差必须保留积分项,但积分会带来超调、积分饱和(windup),阶跃给定与扰动抑制之间需要折中
- 分不清"误差"与"扰动":PI 把一切偏差都当"误差"处理,不区分是参考没跟上还是外部扰动——所以对扰动的抑制永远被动
上一篇文章(《转矩扰动观测与补偿》)解决了一半问题:用 DOB / 龙伯格 / ESO 把扰动估计出来前馈抵消。ADRC 把这条思路贯彻到底,并补上了另外两块拼图:过渡过程安排(TD)与把对象动态本身也当作扰动的一部分。
不知道对象长什么样不要紧——把"模型内部不确定性 + 外部扰动"合并成一个总扰动 f,用 ESO 估计它,再在控制量里减掉它(除以 b0),系统就变成了一个干净的"积分器串联",剩下交给一个简单反馈律。这就是"自抗扰"三个字的含义:自己抗掉自己的扰动。
2. ADRC 三件套:TD、ESO、反馈律
经典 ADRC(韩京清,1980s–2000s)由三部分组成,线性化版本 LADRC(高志强,2003)把三者全部参数化为两个带宽,工程可调。先建立统一语言:考察一阶对象
ẏ = f(y, d, t) + b·u , b ≈ b0(已知名义增益)
y 是被控量(如转速 ω),u 是控制量(如 iq),f 是总扰动(内部动态不确定 + 外部扰动),b0 是控制增益的名义值
2.1 TD 跟踪微分器:给参考"安排过渡过程"
阶跃参考直接进控制器,速度环会瞬间输出最大电流、位置环会瞬间要求最大速度——超调随之而来。TD 的作用是把生硬的阶跃"揉"成一条光滑、有界的过渡曲线 v(t),控制器跟踪的是 v(t) 而不是阶跃本身。
v̇1 = v2
v̇2 = −r²·(v1 − vref) − 2r·v2
速度因子 r 决定过渡快慢:过渡时间 ≈ 4/r;v1→vref,v2 就是"跟踪微分"(即参考速度)
对速度环(一阶)用一阶 TD 就够:v̇ = (vref − v)/Ttd,即一个参考低通;对位置环(二阶)用上面的二阶 TD,既安排位置过渡,又顺便给出平滑的参考速度 v2。TD 还解决了另一个问题:对噪声的微分放大——直接对位置差分求速度噪声爆炸,TD 输出的 v2 是"跟踪微分",天然带滤波。
2.2 ESO 扩张状态观测器:总扰动的"第三只眼"
把总扰动 f 当作一个扩张出来的新状态,用可测的 y 和已知的 u 同时估计 y 和 f。承接上一篇的 ESO 概念,这里给出伺服工程最常用的两个规格:
e = y − z1
ż1 = z2 + β1·e + b0·u (z1→y 的估计)
ż2 = β2·e (z2→总扰动 f 的估计)
带宽法:β1 = 2ωo,β2 = ωo²
e = y − z1
ż1 = z2 + β1·e (位置估计)
ż2 = z3 + β2·e + b0·u (速度估计)
ż3 = β3·e (总扰动估计)
带宽法:β1=3ωo,β2=3ωo²,β3=ωo³
带宽法(高志强)是 LADRC 工程化的关键:所有观测器增益由一个参数 ωo 决定,全部极点配置在 −ωo 处(重根、临界阻尼)。物理意义:ESO 能准确估计的扰动频率上限就是 ωo,ωo 越大观测越快,但把测量噪声放大得越厉害。
2.3 反馈律 + 扰动补偿:把对象"掰直"
u = (u0 − z2) / b0
一阶对象:u0 = kp·(v − z1) ,kp = ωc
二阶对象:u0 = kp·(v1 − z1) + kd·(v2 − z2) ,kp=ωc²,kd=2ωc
把 u=(u0−z2)/b0 代回对象 ẏ=f+b·u:
ẏ ≈ u0 + (f − z2) ⟹ 当 z2 ≈ f 时,ẏ ≈ u0
对象被"线性化"成一个纯积分器!剩余误差 (f−z2) 是观测器带宽以内的估计残差,由反馈律的 ωc 兜底
这就是 ADRC 的精髓:不消除扰动,而是把扰动"看见"后抵消,系统只剩一个干净的积分器。控制一个"积分器"只需要一个比例(一阶)或 PD(二阶),响应时间由 ωc 直接决定,与对象参数几乎无关——这就是鲁棒性(对参数不敏感)的来源。
一阶 LADRC 补偿后等效于 PI + 扰动前馈:u0=kp·e 相当于 P,z2 的估计/补偿相当于"智能积分"(比普通积分快得多且不 windup),kp=ωc 对应 P 增益。所以 LADRC 调参比 PI 还直观:一个 ωc 定响应快慢,一个 ωo 定扰动抑制带宽。
3. 三环 ADRC:电流环 / 速度环 / 位置环各自怎么用
伺服三环对象特性差异很大,ADRC 的收益也不同。先给结论,再逐个展开:
| 控制环 | 对象近似 | 主要扰动 | ADRC 收益 | 工程建议 |
|---|---|---|---|---|
| 电流环 | 一阶 RL:di/dt=(u−Ri−e)/L | 反电动势 e、死区、R/L 温漂 | 中(扰动可估,但电流环带宽已高) | 主流仍用 PI + 前馈;LADRC 是"高级选项" |
| 速度环 | 一阶机械:J·dω/dt=Te−Td | 负载突变、摩擦、惯量摄动 | 高(抗扰提升最明显) | 首选 LADRC,b0=Kt/J |
| 位置环 | 二阶:速度环等效惯性 + 积分 | 速度环等效延迟、外部力、爬行 | 高(TD 消超调 + 抗外部力) | ADRC + TD,无超调跟踪 |
3.1 电流环:PI 仍是主流,ADRC 是增强项
电流环对象 L·di/dt = u − R·i − eemf,是一阶、参数(R/L)相对已知、带宽要求极高(通常 1~3 kHz)。传统做法:PI + 反电动势前馈(ud/uq 解耦)。LADRC 在这里的收益是:LESO 把反电动势、死区误差、R/L 温漂全部当作总扰动估计并补偿,理论上可以省掉解耦前馈。
代价也很现实:电流环采样率高达 10~20 kHz,LESO 需要同样的执行频率;b0=1/L 标定误差会直接吃掉相位裕度;且电流环用 PI 时带宽已经足够高,抗扰提升有限。所以工程结论:电流环保持 PI(必要时加电压前馈),把 ADRC 的算力留给速度环——这是三环 ADRC 的务实起点。
3.2 速度环:LADRC 的主战场
速度环对象 J·dω/dt = Kt·iq − Td(B 与摩擦并入 Td),写成 LADRC 形式:
ẏ = f + b·u → y=ω,u=iq,b0=Kt/J
f = (Te·ΔKt − Td − B·ω − JΔ·dω/dt)/J —— 负载、摩擦、惯量辨识误差、转矩常数漂移全在里面
LESO(2阶):z1→ω,z2→f(量纲为加速度);控制律 u=(u0−z2)/b0
关键好处:J 不需要很准——J 的偏差只是让 b0 偏一点,LESO 会把"b0·u 与真实加速的差"也计入总扰动 f 并补偿掉,等效于自动修正模型。这是速度环 LADRC 相对 DOB/龙伯格(依赖 J 精度)的最大优势。
速度环 LADRC 的完整结构(含一阶 TD):
ωref → TD → v(光滑参考)
↓ u0=ωc·(v−z1) → u=(u0−z2)/b0 → iq
ωmeas → LESO → z1(滤波速度)、z2(总扰动)
3.3 位置环:二阶 ADRC + TD,无超调跟踪
位置环对象是"速度环等效一阶惯性 + 积分":θ̈ = f + b·u,二阶。位置环 ADRC 的两个亮点:
- TD 安排过渡:阶跃位置给定经二阶 TD 变成梯形速度曲线,位置响应无超调,且峰值速度/峰值电流可控(速度因子 r 越小越"温柔")——这正对伺服定位场景(无超调 + 快速)
- 3 阶 LESO 抗外部力:负载拖拽、机械爬行、速度环等效延迟都被 z3 估计并补偿,定位刚度显著提升,不会出现"被外力推走又慢慢爬回"的软定位
三环级联时的带宽经验(在《三闭环带宽分配》基础上给 ADRC 版本的取值):
| 环 | 控制器带宽 | 观测器带宽 | 说明 |
|---|---|---|---|
| 电流环(PI) | fci = 1~3 kHz | — | 给速度环留 5~10 倍裕量 |
| 速度环 LADRC | fc = 电流环/10 ~ /5 | fo = 3~5 × fc | ωo 上限受速度反馈噪声限制 |
| 位置环 ADRC | fc = 速度环/5 ~ /3 | fo = 3~5 × fc | TD 速度因子 r 按 4~6 倍位置环带宽选 |
不必。三环全 ADRC 意味着三层 LESO 叠加,观测器层数多、噪声被逐级放大、相位损失累积,整定也复杂。务实组合:电流环 PI(+前馈)+ 速度环 LADRC + 位置环 ADRC(带 TD),这是工业伺服里"抗扰收益 / 实现成本"最划算的配置。电流环的 ADRC 适合对参数漂移极敏感、且采样率充裕的场合。
4. 交互式演示
4.1 演示A:速度环 LADRC vs PI 抗扰对比
同样的机械对象(J、Kt 已知),分别用 PI 速度环(按带宽法整定)与 LADRC 速度环(ωc/ωo 带宽法),t=0.3s 施加阶跃负载。调负载、控制器带宽、观测带宽,观察两种方案的速度跌落与恢复:
观察要点:
- 加载瞬间:PI 速度跌落明显、靠积分慢慢追回;LADRC 的 ESO 在几个观测周期内把扰动"看穿"并前馈,跌落大幅减小——这就是自抗扰的价值
- 调 ωo:观测带宽越高,扰动估计越快、跌落越小,但速度噪声被放大(勾选噪声复选框后更明显)——快与噪的权衡
- 调 ωc:决定无扰动时的阶跃响应快慢与 LADRC 的闭环带宽;一般 ωc 取 PI 速度环带宽同量级
- 下方图:真实负载(灰)与 z2 估计(绿),看估计收敛速度
4.2 演示B:位置环 ADRC 的 TD 过渡过程
位置环用二阶 ADRC(3 阶 LESO + 线性反馈,仿真采用模型辅助 ESO(GESO):把已知的速度环时间常数注入观测器,可显著降低带宽需求),对比直接阶跃给定与经 TD 安排过渡的响应,并在 t=0.5s 施加外部拖拽力看定位刚度:
观察要点:
- 无 TD 时(过渡时间 0):位置环输出瞬间饱和到速度限幅(120 mm/s),速度指令呈矩形冲击,机械冲击与电流尖峰大;增大过渡时间:TD 把参考安排为平滑 S 形轨迹,峰值速度受控、无冲击
- t=0.5s 加外部拖拽:ESO 立即估计出外力(状态栏显示 z3 估计值,单位 mm/s²)并前馈补偿,定位刚度高,位置几乎不偏移
- 下方图为速度曲线:无 TD 时速度直接冲到限幅(矩形),带 TD 时速度呈梯形、柔和
5. 代码实现(C语言)
5.1 速度环 LADRC(一阶对象 + 2阶LESO + 一阶TD)
5.2 位置环 ADRC(二阶对象 + 3阶LESO + 二阶TD)
5.3 参数整定与调试步骤
- 定 b0:速度环 b0=Kt/J(J 用辨识值即可,不必很准——误差会被 ESO 当扰动吃掉);位置环 b0 用"电流环+机械"等效增益估算
- 先定 ωc:把 ωo 设成 10×ωc(让观测足够快),单独调 ωc 到阶跃响应满意的快慢(等同调 P)
- 再调 ωo:从 3×ωc 逐步加大,观察抗扰(加载跌落)改善与噪声放大,取"跌落足够小且电流/速度不抖"的最大值
- 最后加 TD:位置环按"无超调 + 峰值速度可接受"选过渡时间 Ttd;速度环 TD 可选(一阶低通)
- 限幅必须做:u 限幅后存回 u_prev(否则 LESO 用未限幅控制量会"以为"系统执行了更大的指令,造成估计偏差)
- 验证:阶跃负载看跌落;给位置阶跃看超调;把 z2/z3 与已知负载对比确认收敛
6. 工程要点与常见误区
- ωo 不是越大越好:观测带宽上限受反馈噪声与采样率约束(工程经验 ωo ≤ 采样频率/10),超过会引入高频噪声振荡
- b0 偏差有裕度但不能离谱:b0 偏大 2~3 倍通常仍稳定(增益裕度),但过大过小都会影响动态;b0 上下界做工程保护
- 离散化:LESO 是积分器链,用欧拉法即可(TS 内稳定);如需更准用梯形法;控制周期 TS 建议 ≤ 1/(20·ωo)
- 别把 TD 当摆设:TD 是 ADRC 无超调的关键,也是"快速性与超调"矛盾的解——伺服定位不加 TD 等于放弃 ADRC 一半价值
- 与扰动观测器的关系:ESO 本质是"参数化好的龙伯格扰动观测器 + 模型不确定性吸收";07 篇的 DOB/龙伯格经验(观测带宽 3~5 倍速度环、J 辨识)在这里同样适用
- 电流环别轻易换 ADRC:高采样率 + 小时间常数下,PI 的相位裕度优势明显;先把速度/位置环换好,电流环作为进阶实验
- 抗饱和:速度/位置 LADRC 的指令 u 会顶到电流/速度限幅,务必限幅 + 限幅前存储 u_prev + 必要时 anti-windup 处理
ADRC = TD(把参考揉光滑)+ ESO(把总扰动看穿)+ 反馈/补偿(把对象掰成积分器)。工程上三环的务实组合是:电流环 PI+前馈、速度环 LADRC(b0=Kt/J,ωc 定响应、ωo=3~5ωc 定抗扰)、位置环 ADRC+TD(无超调定位+抗外部力)。两个带宽是全部旋钮,比 PI 更少、更直观。