clear
clc
global LK
LK.p =0.1;
LK.i =0.1;
LK.d =0.07;
LK.ee =0;
LK.es =0;
LK.ed =0;
LK.zi =0;
y =[];for x =1:100
out =Pid(8);
y =[y out];
end
x =1:100;plot(x,y)
function [ put ]=Pid(top )
global LK
LK.ee = top - LK.zi;
LK.es = LK.es + LK.ee;
put = LK.p*LK.ee + LK.i*LK.es + LK.d*(LK.ee-LK.ed);
LK.ed = LK.ee;
LK.zi = put;
end
2增量式
clear
clc
global LK
LK.p =0.1;
LK.i =0.1;
LK.d =0.007;
LK.e0 =0;
LK.e1 =0;
LK.e2 =0;
LK.zi =0;
y =[];
y1 =[];for x =1:100
out1 =Pid1(5);
y =[y out1];
end
x =1:100;plot(x,y)
hold on
function [ put1 ]=Pid1(top)
global LK
LK.e0 =(top - LK.zi);
put = LK.p*(LK.e0-LK.e1)+ LK.i*LK.e0 + LK.d*(LK.e0-2*LK.e1+LK.e2);
LK.e2 = LK.e1;
LK.e1 = LK.e0;
LK.zi = put+LK.zi;
put1 = LK.zi;
end