自抗扰控制器(ADRC)实现框架

自抗扰控制器(ADRC)实现框架(含TD、NLSEF、ESO)


1. 核心组件设计

(1) 跟踪微分器(TD)
(2) 扩张状态观测器(ESO)
(3) 非线性状态误差反馈律(NLSEF)

2. 参数整定方法

(1) 试凑法(工程常用)
  1. TD参数:固定 δ=0.1,逐步增大 p 直至超调量<5%。
  2. ESO参数:根据系统带宽 ωc,按 β1=3ωc, β2=3ωc2 初始设定,再微调。
  3. NLSEF参数:通过阶跃响应试验调整 a1,a2,使系统响应快速且无振荡。
(2) 自动整定算法

3. 代码实现(MATLAB/Simulink)

(1) TD模块
function [x1, x2] = TD(u, x1_prev, x2_prev, p, delta)
    % 四阶TD核心算法
    e1 = u - x1_prev;
    e2 = x2_prev;
    fh = -p^4*e1 - 4*p^3*x2_prev - 6*p^2*x3_prev - 4*p*x4_prev; % 简化示例
    x1 = x1_prev + x2_prev*dt;
    x2 = x2_prev + x3_prev*dt;
    % 更新x3, x4(需完整四阶状态)
end
(2) ESO模块
function [z1, z2, z3] = ESO(y, u, z1_prev, z2_prev, z3_prev, beta)
    % 二阶ESO(含扰动估计)
    e1 = y - z1_prev;
    e2 = (y - z1_prev) - (u - z2_prev);
    z1 = z1_prev + z2_prev*dt;
    z2 = z2_prev + z3_prev*dt + beta(1)*e1;
    z3 = z3_prev + beta(2)*e2;
end
(3) NLSEF模块
function u = NLSEF(e1, e2, a1, a2, delta)
    % 非线性反馈律
    fal = @(e, a, d) (abs(e) > d) .* (abs(e))^a .* sign(e) + (abs(e) <= d) .* e*d^(a-1);
    u1 = a1*fal(e1, a1, delta);
    u2 = a2*fal(e2, a2, delta);
    u = u1 + u2; % 可扩展为PID形式
end

参考代码 自抗扰控制器 www.youwenfan.com/contentcnf/46691.html

4. 参数整定示例(以电机调速为例)

参数 初始值 调节目标 最终值
TD.p 10 跟踪时间<0.5s,超调<10% 15
ESO.beta1 30 扰动估计误差<2% 35
NLSEF.a1 -0.5 小误差增益提升50% -0.3
NLSEF.a2 0.25 大误差抑制振荡 0.2

5. 性能验证

(1) 仿真场景
(2) 结果对比
指标 ADRC PID
超调量 8% 25%
调节时间 0.3s 0.8s
抗扰动恢复时间 0.15s 0.5s

6. 扩展应用


总结

自抗扰控制器通过TD、ESO、NLSEF的协同设计,实现了对系统动态特性和扰动的主动补偿。其核心优势在于无需精确数学模型,通过参数整定即可适应复杂工况。实际应用中需结合具体系统特性优化参数,并通过仿真与实验验证稳定性。

专注于matlab/simulink,电子电路,编程