📄 t21zp.m
字号:
%------------------------------------------------------------------
% This program is used to solve (ot test) the step response
% of Close Loop System by Zero-pole placement
% NOTE: The 'iden_c21i.m' must be executed first.
%------------------------------------------------------------------
Ts=120;
Kp=0.9012, Ti=Kp/0.1904, Td=0.4719/Kp,
af2=K*Kp*Ti*Td;
af1=K*Kp*Ti;
af0=K*Kp;
bt3=Ti*b2;
bt2=Ti*(b1+K*Kp*Td);
bt1=Ti*(b0+K*Kp);
bt0=K*Kp;
%printsys([af2 af1 af0]/bt3,[bt3,bt2,bt1,bt0]/bt3);
[V1,V2,Kop]=tf2zp([af2 af1 af0]/bt3,[bt3,bt2,bt1,bt0]/bt3);
figure(4)
clf;
plot(real(V1(1)),imag(V1(1)),'ro',real(V1(2)),imag(V1(2)),'ro');
hold on
plot(real(V2(1)),imag(V2(1)),'r*',real(V2(2)),imag(V2(2)),'r*',...
real(V2(3)),imag(V2(3)),'r*');
xlabel('Re'); ylabel('Im'); Title('The Zero-Pole Position of Close Loop');
grid on
%axis([-5,0.2,-5,5]);
[Nop,Dop]=zp2tf([1],[V2(2) V2(3)],1);
omiga0=sqrt(Dop(3));
kosi0=Dop(2)/(2*omiga0),
% Calaulate the PID parameters
kosi=kosi0-0.4; omiga=omiga0; s1=-V2(1);
figure(5)
clf;
xlabel('t'); ylabel('y'); Title('The Step Response of Close Loop');
for (i=1:1:6)
Kp=(b2*omiga^2+2*kosi*omiga*s1*b2-b0)/K;
Ti=(K*Kp)/(b2*s1*omiga^2);
Td=(2*kosi*omiga*b2+b2*s1-b1)/(K*Kp);
[t,xx,yf]=sim('t21b',Ts);
figure(5)
hold on
plot(t,yf);
%i,
kosi=kosi+0.1;
%s1=s1+0.04,
%omiga=omiga-0.02;
af2=K*Kp*Ti*Td;
af1=K*Kp*Ti;
af0=K*Kp;
bt3=Ti*b2;
bt2=Ti*(b1+K*Kp*Td);
bt1=Ti*(b0+K*Kp);
bt0=K*Kp;
[V1,V2,Kop]=tf2zp([af2 af1 af0]/bt3,[bt3,bt2,bt1,bt0]/bt3);
figure(4)
hold on
plot(real(V1(1)),imag(V1(1)),'bo',real(V1(2)),imag(V1(2)),'bo');
plot(real(V2(1)),imag(V2(1)),'b*',real(V2(2)),imag(V2(2)),'b*',...
real(V2(3)),imag(V2(3)),'b*');
%pause
end
kosi=kosi0-0.1,
Kp=(b2*omiga^2+2*kosi*omiga*s1*b2-b0)/K,
Ti=(K*Kp)/(b2*s1*omiga^2),
Td=(2*kosi*omiga*b2+b2*s1-b1)/(K*Kp),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -