PID Controller 不完全微分
不完全微分PID 仿真结果图
1.4
1.2
1
r i n , y o u t 0.80.6
0.4
0.2
[***********]1200
time(s)2015-7-90:[***********]
%PID Controller 不完全微分
%2015-07-09 0:30
clear all;
close all;
ts=20;
sys=tf([1.1],[160,1],'inputdelay',100); dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
ud_1=0;
y_1=0;y_2=0;y_3=0;
error_1=0;
ei=0;
for k=1:1:100
time(k)=k*ts;
rin(k)=1.0;
%Linear model
yout(k)=-den(2)*y_1+num(2)*u_5;
D(k)=0.01*rands(1);
yout(k)=yout(k)+D(k);
error(k)=rin(k)-yout(k);
%PID Controller with partly differential ei=ei+error(k)*ts;
kc=0.30; ki=0.0055; TD=140;
kd=kc*TD/ts;
Tf=180;
Q=tf([1],[Tf,1]);
M=1;%M=1不完全微分 M=2普通pid 控制
alfa=Tf/(ts+Tf);
ud(k)=kd*(1-alfa)*(error(k)-error_1)+alfa*ud_1; u(k)=kc*error(k)+ud(k)+ki*ei;
ud_1=ud(k);
%PID控制器输出限幅
if u(k)>=10
u(k)=10;
end
if u(k)
u(k)=-10;
end
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k);
error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)_2015-7-9_0:30');
ylabel('rin,yout');
title('不完全微分PID 仿真结果图');