基于Simulink的自抗扰控制器扩张状态观测器的仿真
基于Simulink的自抗扰控制器(ADRC)扩张状态观测器(ESO)的仿真
一、系统架构设计
1. ADRC-ESO模块结构
% Simulink模型框图
% 输入信号
u = reference_signal; % 参考信号
y = plant_output; % 被控对象输出
% ESO模块
[ z1, z2, z3 ] = ESO_Block(y, u, params);
% NLSEF控制器
u_control = NLSEF(z1, z2, z3, params);
% 执行器与被控对象
plant = Plant_Model(u_control);
2. 关键参数配置
| 参数 | 典型值 | 说明 |
|---|---|---|
| 观测器带宽(ωo) | 50-100 rad/s | 应为控制器带宽的5-10倍 |
| 控制器带宽(ωc) | 10-20 rad/s | 根据系统响应需求调整 |
| 非线性因子(α1,α2) | 0.5,0.25 | 影响观测器收敛速度 |
| 补偿因子(δ) | 0.01-0.1 | 抑制高频噪声 |
二、ESO模块实现
1. S函数实现(ESO_Block.m)
function [sys,x0,str,ts] = ESO_Block(t,x,u,flag,params)
switch flag
case 0
sizes = simsizes;
sizes.NumContStates = 3;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 3;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0;0;0]; % 初始状态估计
str = [];
ts = [0 0];
case 3
% 扩张状态观测器方程
y = u(1); % 系统输出
u_in = u(2); % 控制输入
e1 = x(1) - y;
e2 = x(2) - (y - x(1))/params.dt; % 速度估计
% 非线性反馈律
fal1 = fal(e1, params.alpha1, params.delta);
fal2 = fal(e2, params.alpha2, params.delta);
% 观测器更新
sys(1) = x(2) + params.beta1 * fal1;
sys(2) = x(3) + params.beta2 * fal1 + params.beta3 * fal2;
sys(3) = -params.beta4 * fal2;
case 4
sys = [];
case 9
sys = [];
end
end
function y = fal(e, a, delta)
if abs(e) <= delta
y = e * a^2 * e / (2*delta^a);
else
y = a^2 * sign(e);
end
end
2. Simulink模块封装
- 创建Subsystem模块
- 添加3个Integrator模块(状态变量z1,z2,z3)
- 添加Sum、Gain和Product模块实现观测器方程
- 配置参数对话框(ωo=50, β1=100, β2=300, β3=1000)
三、应用案例(永磁同步电机速度环)
1. 电机模型
% PMSM电机参数
J = 0.01469; % 转动惯量 (kg·m²)
R = 0.5; % 定子电阻 (Ω)
Ld = 0.0085; % d轴电感 (H)
Lq = 0.0085; % q轴电感 (H)
Ke = 0.1; % 反电动势常数 (V·s/rad)
B = 0.001; % 黏性摩擦系数 (N·m·s/rad)
% 状态方程
function dx = motor(t,x,u)
id = u(1); iq = u(2);
ω = x(1); θ = x(2);
% 电压方程
Vd = R*id - Ld*ω*iq + Ke*ω;
Vq = R*iq + Ld*ω*id + Ke*θ;
% 电磁转矩
Te = 1.5*Ke*(iq*cos(θ) - id*sin(θ));
% 运动方程
dx = [ω; (Te - B*ω)/J];
end
2. ADRC控制器设计
% ESO参数
params.omega_o = 50; % 观测器带宽
params.dt = 0.0001; % 采样时间
params.beta1 = 100; % 增益系数
params.beta2 = 300;
params.beta3 = 1000;
params.alpha1 = 0.5; % 非线性因子
params.alpha2 = 0.25;
params.delta = 0.01; % 补偿因子
% NLSEF参数
params.kr = 0.5; % 前馈增益
params.kp = 20; % 比例增益
params.ki = 0.1; % 积分增益
参考仿真 自抗扰控制器扩张状态观测器仿真simulink www.youwenfan.com/contentcnk/79500.html
3. 仿真模型搭建
- 信号源:正弦参考信号(10 rad/s → 30 rad/s阶跃)
- 负载扰动:在0.05s时添加突加负载(T=0.5 N·m)
- 观测器模块:集成ESO_S-Function
- 控制器模块:NLSEF+FAL函数
- 示波器:观测转速跟踪、扰动估计和误差曲线
浙公网安备 33010602011771号