chap2_4.m

来自「大滞后PID控制SMITH算法」· M 代码 · 共 82 行

M
82
字号
%Big Delay PID Control with Smith Algorithm
clear all;close all;
Ts=20;

%Delay plant
kp=1;
Tp=60;
tol=80;
sys=tf([kp],[Tp,1],'inputdelay',tol);
dsys=c2d(sys,Ts,'zoh');
[num,den]=tfdata(dsys,'v');

M=1;
%Prediction model
if M==1  %No Precise Model: PI+Smith
   kp1=kp*1.10;
   Tp1=Tp*1.10;
   tol1=tol*1.0;
elseif M==2|M==3  %Precise Model: PI+Smith
   kp1=kp;
   Tp1=Tp;
   tol1=tol;
end

sys1=tf([kp1],[Tp1,1],'inputdelay',tol1);
dsys1=c2d(sys1,Ts,'zoh');
[num1,den1]=tfdata(dsys1,'v');

u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;
e1_1=0;
e2=0.0;
e2_1=0.0;
ei=0;

xm_1=0.0;
ym_1=0.0;
y_1=0.0;

for k=1:1:600
    time(k)=k*Ts;
   
S=2;
if S==1
   rin(k)=1.0;     %Tracing Step Signal
end
if S==2
   rin(k)=sign(sin(0.0002*2*pi*k*Ts));  %Tracing Square Wave Signal
end

%Prediction model
xm(k)=-den1(2)*xm_1+num1(2)*u_1;
ym(k)=-den1(2)*ym_1+num1(2)*u_5;  %With Delay 

yout(k)=-den(2)*y_1+num(2)*u_5;

if M==1       %No Precise Model: PI+Smith
   e1(k)=rin(k)-yout(k);
   e2(k)=e1(k)-xm(k)+ym(k);
	ei=ei+Ts*e2(k);
	u(k)=0.50*e2(k)+0.010*ei;
   e1_1=e1(k);
elseif M==2   %Precise Model: PI+Smith
   e2(k)=rin(k)-xm(k);
	ei=ei+Ts*e2(k);
	u(k)=0.50*e2(k)+0.010*ei;    
	e2_1=e2(k);
elseif M==3  %Only PI
   e1(k)=rin(k)-yout(k);
	ei=ei+Ts*e1(k);
	u(k)=0.50*e1(k)+0.010*ei;   
   e1_1=e1(k);
end

%----------Return of smith parameters------------
xm_1=xm(k);
ym_1=ym(k);

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_1=yout(k);
end
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('rin,yout');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?