共计 1290 个字符,预计需要花费 4 分钟才能阅读完成。
1. ADRC 基本原理回顾
ADRC(Active Disturbance Rejection Control,自抗扰控制)是一种不依赖于精确模型的控制方法,主要由三部分组成:跟踪微分器(TD)、扩张状态观测器(ESO)和非线性状态误差反馈(NLSEF)。

- 跟踪微分器(TD):用于安排过渡过程,提供无超调的跟踪信号及其微分信号。
- 扩张状态观测器(ESO):将系统内部不确定性和外部扰动视为 ” 总扰动 ”,并进行实时估计和补偿。
- 非线性状态误差反馈(NLSEF):根据误差及其微分,采用非线性组合方式生成控制量。
2. 参数调节痛点分析
ADRC 参数调节的难点主要体现在:
- 参数耦合性强 :TD、ESO 和 NLSEF 三部分参数相互影响,难以独立调节
- 工程经验依赖度高 :缺乏系统性的调节方法论,往往依赖调试经验
- 性能指标多维度 :需要兼顾响应速度、抗扰能力、鲁棒性等多方面要求
3. 参数调节方法论
推荐采用分步调节策略,按照 TD→ESO→NLSEF 的顺序进行:
- TD 参数调节
- 主要调节参数:速度因子 r 和滤波因子 h0
- 调节原则:r 决定跟踪速度,h0 影响平滑性
-
调节步骤:先增大 r 加快响应,再调整 h0 消除振荡
-
ESO 参数调节
- 主要调节参数:带宽 ω0 和观测器阶数
- 调节原则:ω0 越大,扰动估计越快但噪声敏感
-
调节步骤:从低频开始逐步提高 ω0,直至扰动抑制效果满意
-
NLSEF 参数调节
- 主要调节参数:非线性函数参数(α、δ)和增益系数
- 调节原则:α 决定非线性程度,δ 影响平滑区大小
- 调节步骤:先线性控制(α=1),再逐步引入非线性特性
4. MATLAB/Python 代码示例
% TD 参数调节示例
r = 100; % 速度因子
h0 = 0.01; % 滤波因子
% ESO 参数调节示例
beta01 = 100; % 观测器带宽
beta02 = 300;
beta03 = 1000;
% NLSEF 参数调节示例
alpha1 = 0.5; % 非线性参数
alpha2 = 1.5;
delta = 0.1; % 线性区大小
# Python 实现示例
def ADRC_controller():
# TD 参数
r = 100.0 # 速度因子
h = 0.01 # 滤波因子
# ESO 参数
beta = [100, 300, 1000] # 观测器带宽系数
# NLSEF 参数
alpha = [0.5, 1.5] # 非线性指数
delta = 0.1 # 线性区间
5. 工程实践中的避坑指南
-
误区 1 :盲目提高 TD 速度因子 r 导致系统振荡
解决方案 :配合增大滤波因子 h0 保持平滑性 -
误区 2 :ESO 带宽过高引入测量噪声
解决方案 :增加前置滤波或适当降低带宽 -
误区 3 :NLSEF 非线性过度导致控制量突变
解决方案 :合理设置 δ 值保证线性区足够
6. 性能验证方法
- 时域指标
- 阶跃响应:上升时间、超调量、调节时间
-
抗扰测试:扰动抑制时间和残余误差
-
频域指标
- 幅值裕度、相位裕度
- 敏感函数分析
总结与思考
ADRC 参数调节是一个系统性工程,需要结合理论分析和实验调试。针对不同应用场景(如电机控制、飞行器控制等),参数调节策略会有哪些差异?如何平衡响应速度和鲁棒性的要求?这些问题值得深入探讨和实践验证。
建议读者在实际应用中,先进行小信号测试验证基本参数,再逐步扩展到全工况范围,并做好参数变化对系统性能影响的记录分析,形成自己的参数调节经验库。
正文完
