如何从PID中获取错误?
How to get errors from PID?
需要添加PID控制器。你能帮我如何从PID中得到误差、积分误差和导数误差吗?我需要这些值来通过遗传算法生成 PID 参数。
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
A = [-b/J K/J
-K/L -R/L];
B = [0
1/L];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
Ts = 1/10;
T = 3.5;
sysd = c2d(sys, Ts);
t = 0:Ts:T;
nSamples = length(t);
y = NaN(1, nSamples);
u = ones(1, nSamples);
X = [0; 0];
for i=1:nSamples
y(i) = sysd.C * X + sysd.D * u(i);
X = sysd.A * X + sysd.B * u(i);
end
figure;
step(sys);
figure;
plot(t, y, 'r')
值得庆幸的是,很多人已经在 MATLAB 中设计了 PID 控制器,因此您可以从他们的示例中学习。这是来自 MATLAB 文件交换的 PID controller。误差的导数和积分分别保存在变量"Der"和"Int"中。
如果您随 MATLAB 一起安装了控制系统工具箱,那么您已经可以使用强大的 built-in 功能来设计 PID 控制器。您可能想利用 PID tuner.
需要添加PID控制器。你能帮我如何从PID中得到误差、积分误差和导数误差吗?我需要这些值来通过遗传算法生成 PID 参数。
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
A = [-b/J K/J
-K/L -R/L];
B = [0
1/L];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
Ts = 1/10;
T = 3.5;
sysd = c2d(sys, Ts);
t = 0:Ts:T;
nSamples = length(t);
y = NaN(1, nSamples);
u = ones(1, nSamples);
X = [0; 0];
for i=1:nSamples
y(i) = sysd.C * X + sysd.D * u(i);
X = sysd.A * X + sysd.B * u(i);
end
figure;
step(sys);
figure;
plot(t, y, 'r')
值得庆幸的是,很多人已经在 MATLAB 中设计了 PID 控制器,因此您可以从他们的示例中学习。这是来自 MATLAB 文件交换的 PID controller。误差的导数和积分分别保存在变量"Der"和"Int"中。
如果您随 MATLAB 一起安装了控制系统工具箱,那么您已经可以使用强大的 built-in 功能来设计 PID 控制器。您可能想利用 PID tuner.