如何从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.