共计 2231 个字符,预计需要花费 6 分钟才能阅读完成。
背景痛点
在工业控制系统中,ADRC(自抗扰控制)因其优秀的抗扰动能力和鲁棒性而广受关注。然而,ADRC 的参数调节一直是一个难点,尤其是在面对复杂工况时,工程师常常会遇到以下问题:

- 超调与响应速度的矛盾 :提高响应速度往往会导致系统超调增大,反之亦然。
- 扰动抑制与动态响应的平衡 :在强扰动环境下,如何既能快速抑制扰动,又能保持系统的动态响应性能。
- 参数耦合性强 :ADRC 的三个核心环节(TD、ESO、NLSEF)的参数相互影响,调节难度大。
传统试错法不仅效率低下,而且严重依赖工程师的经验,难以实现快速优化。因此,系统化的参数调节方法论显得尤为重要。
技术对比:ADRC vs. PID
与传统 PID 控制相比,ADRC 的参数调节有以下核心差异:
- 参数数量 :PID 通常只需调节 3 个参数(KP、KI、KD),而 ADRC 需要调节 TD、ESO、NLSEF 三环的多个参数,复杂度更高。
- 物理意义 :PID 参数(比例、积分、微分)的物理意义直观,而 ADRC 参数(如 ESO 带宽、非线性函数参数)的物理意义需要更深入的理解。
- 抗扰动能力 :ADRC 通过 ESO 实时估计并补偿扰动,因此参数调节更注重扰动抑制与动态响应的平衡。
实现方案
1. TD(跟踪微分器)参数调节
TD 用于安排过渡过程,其核心参数包括:
- 速度因子 r :决定跟踪速度,r 越大,跟踪越快,但可能引入噪声。
- 滤波系数 h :用于平滑微分信号,h 越小,滤波效果越强,但会引入相位滞后。
MATLAB 示例代码:
function [x1, x2] = TD(v, r, h)
persistent x1_last x2_last
if isempty(x1_last)
x1_last = 0;
x2_last = 0;
end
x1 = x1_last + h * x2_last;
x2 = x2_last + h * fst(x1_last - v, x2_last, r, h);
x1_last = x1;
x2_last = x2;
end
function f = fst(x1, x2, r, h)
d = r * h;
d0 = h * d;
y = x1 + h * x2;
a0 = sqrt(d^2 + 8 * r * abs(y));
if abs(y) > d0
a = x2 + (a0 - d) / 2 * sign(y);
else
a = x2 + y / h;
end
if abs(a) > d
f = -r * sign(a);
else
f = -r * a / d;
end
end
2. ESO(扩张状态观测器)参数调节
ESO 用于估计系统状态和总扰动,其核心参数包括:
- 带宽 ω :决定观测器响应速度,ω 越大,估计越快,但可能放大噪声。
- 非线性函数参数 α、δ:用于调节非线性函数的形状,影响估计精度。
MATLAB 示例代码:
function [z1, z2, z3] = ESO(y, u, beta01, beta02, beta03, h, alpha, delta)
persistent z1_last z2_last z3_last
if isempty(z1_last)
z1_last = 0;
z2_last = 0;
z3_last = 0;
end
e = z1_last - y;
fe = fal(e, alpha, delta);
z1 = z1_last + h * (z2_last - beta01 * e);
z2 = z2_last + h * (z3_last - beta02 * fe + u);
z3 = z3_last + h * (-beta03 * fe);
z1_last = z1;
z2_last = z2;
z3_last = z3;
end
function f = fal(e, alpha, delta)
if abs(e) > delta
f = abs(e)^alpha * sign(e);
else
f = e / (delta^(1 - alpha));
end
end
3. NLSEF(非线性控制律)参数调节
NLSEF 用于生成控制量,其核心参数包括:
- 误差增益 β1、β2:决定控制律的强度和动态特性。
- 非线性函数参数 α、δ:用于调节非线性函数的形状,影响控制性能。
MATLAB 示例代码:
function u = NLSEF(e1, e2, beta1, beta2, alpha, delta)
u = -beta1 * fal(e1, alpha, delta) - beta2 * fal(e2, alpha, delta);
end
验证环节
阶跃响应仿真
通过 MATLAB/Simulink 搭建 ADRC 控制系统,对比不同参数下的阶跃响应曲线。例如:
- TD 参数影响 :增大 r 会加快跟踪速度,但可能引入超调。
- ESO 参数影响 :增大 ω 会提高扰动估计速度,但可能放大噪声。
- NLSEF 参数影响 :增大 β1、β2 会增强控制强度,但可能导致系统不稳定。
抗扰测试
在系统中施加阶跃扰动,观察 ADRC 的扰动抑制能力。通过调整 ESO 带宽 ω,可以明显看到扰动抑制效果的差异。
稳定性分析
使用 Bode 图分析系统开环频率特性,确保相位裕度和增益裕度满足稳定性要求。参数超限(如 ω 过大)会导致相位裕度不足,系统失稳。
避坑指南
- ESO 带宽过高 :虽然能提高扰动估计速度,但会放大噪声,甚至导致系统不稳定。
- TD 速度因子过大 :虽然能加快跟踪速度,但会引入超调和振荡。
- NLSEF 增益过大 :虽然能增强控制强度,但会导致系统响应过于激进,甚至失稳。
- 忽略参数耦合 :TD、ESO、NLSEF 的参数相互影响,需综合考虑调节。
互动设计
思考题
- 如何通过参数敏感度分析,确定 ADRC 各参数对系统性能的影响程度?
- 在工程实践中,如何权衡 ESO 带宽 ω 的选择,以实现扰动抑制与噪声放大的平衡?
- 针对不同的被控对象,ADRC 的参数调节策略是否需要调整?如何调整?
欢迎读者在评论区分享自己的调参经验和心得,共同探讨 ADRC 参数调节的最佳实践!
正文完
