PID 的 MATLAB 仿真程序: %PID Controler 不完全微分 clear all; close all; ts=20; sys=tf([1],[60,1],'inputdelay',80); 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]); %Low Freq Signal Filter M=2; %M=1 不完全微分, %M=2 普通 Pid 控制
if M==1 %Using PID with Partial differential 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); elseif M==2 %Using Simple PID u(k)=kc*error(k)+k