adrc代码matlab
时间: 2023-11-07 11:04:59 浏览: 43
ADRC是自抗扰控制的缩写,是一种控制技术。ADRC控制器包括三个部分:跟踪微分器(TD)、非线性组合和扩张状态观测器(ESO)。TD部分用于提高系统响应速度和减小超调量,非线性组合部分用于将TD的输出与系统状态进行组合,ESO部分用于估计补偿系统中的不确定因素。
以下是ADRC的MATLAB代码的一部分:
```matlab
% TD部分
function [v1, v2] = fcn(u)
persistent v1_1 v2_1
h = 0.1;
delta = 10; if isempty(v1_1)
v1_1 = 0;
end
if isempty(v2_1)
v2_1 = 0;
end
d = delta * h;
d0 = h * d;
y = v1_1 - u * h * v2_1;
a0 = sqrt(d * d + 8 * delta * abs(y));
a = 0;
out1 = 0;
if abs(y) > d0
a = v2_1 + (a0 - d) / 2 * sign(y);
end
if abs(y) <= d0
a = v2_1 + y / h;
end
if abs(a) > d
out1 = -delta * sign(a);
end
if abs(a) <= d
out1 = -delta * a / d;
end
out = out1;
v1 = v1_1 + h * v2_1;
v2 = v2_1 + h * out;
v1_1 = v1;
v2_1 = v2;
end
```