程序7
Kvc=10;%Kvcopm>8 Kgang=2.02;%K/alpha Kvu=2*Kgang/5;
alpha=Kvc/Kvu%alpha即z/p 程序8
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p]; Gc=2.02*tf(nc,dc);
G2=G*Gc;%引入K/alpha
sys2=feedback(G2,1);%单位负反馈,构成闭环
程序9
tf1=10000; a=1;
t=[0:0.1:tf1]; u=a*t;%斜坡输入
y_t=lsim(sys2,u,t);
plot(t,y_t,'b-',t,u,'r:') yss=y_t(length(t));
y_deta=u(length(t))-yss if y_deta<(a/8)%稳态误差小于a/8 disp('yes')%符合要求(1) else
disp('no')%不符合 end
程序10
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p]; Gc=2.02*tf(nc,dc);
G2=G*Gc;%引入K/alpha
sys2=feedback(G2,1);%单位负反馈,构成闭环 step(sys2) 程序11
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p];
31
Gca=2.02*tf(nc,dc); Gcb=1.90*tf(nc,dc);
Gcc=2.1*tf(nc,dc);%引入K/alpha G2a=G*Gca; G2b=G*Gcb; G2c=G*Gcc;
sys2a=feedback(G2a,1);%单位负反馈,构成闭环 sys2b=feedback(G2b,1); sys2c=feedback(G2c,1); step(sys2a,'b--') hold on
step(sys2b,'r:') step(sys2c,'y-')
程序12 hold off
clg
n=[2];d=[1 6 5 0]; rlocus(n,d),hold on grid
z=0.4559;
hs=12*z;
hc=12*sqrt(1-z^2);
plot([0 -hs],[0 hc],'--',[0 -hs],[0 -hc],'--') text(-9.5,1,'Desired performance region') rlocfind(n,d)
程序13
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 Kvc=10;%Kvcopm>8 y=zeros(200,1);i=0; for K=0.1:0.1:2%K/alpha Kvu=2*K/5;
alpha=Kvc/Kvu;%alpha即z/p p=0.001;z=alpha*p; nc=[1 z];dc=[1,p];
Gc=K*tf(nc,dc);%引入K/alpha G2=G*Gc;
sys2=feedback(G2,1);%单位负反馈,构成闭环 t=[0:0.1:19.9]; i=i+1;
y(:,i)=step(sys2,t);
32
end plot(y)
legend('K=0.1','K=0.2','K=0.3','K=0.4','K=0.5','K=0.6','K=0.7','K=0.8','K=0.9','K=1.0','K=1.1','K=1.2','K=1.3','K=1.4','K=1.5','K=1.6','K=1.7','K=1.8','K=1.9','K=2.0') 程序14
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 Kvc=10;%Kvcopm>8
y=zeros(200,1);i=0;
for K=0.1:0.1:2%K/alpha Kvu=2*K/5;
alpha=Kvc/Kvu;%alpha即z/p p=0.001;z=alpha*p;
nc=[1 z];dc=[1,p];
Gc=K*tf(nc,dc);%引入K/alpha
G2=G*Gc;
sys2=feedback(G2,1);%单位负反馈,构成闭环 t=[0:1:199];%改变时间长度 i=i+1;
y(:,i)=step(sys2,t); end
plot(y)
legend('K=0.1','K=0.2','K=0.3','K=0.4','K=0.5','K=0.6','K=0.7','K=0.8','K=0.9','K=1.0','K=1.1','K=1.2','K=1.3','K=1.4','K=1.5','K=1.6','K=1.7','K=1.8','K=1.9','K=2.0') 程序15
sigma=zeros(20,20);j=0;Kgan=zeros(20,20); for i=1:1:20;
[mp,tf]=max(y(:,i));%求最大幅值点 yss=y(length(t));%求稳态值 tp=t(tf);%峰值时间 j=j+1;
Kgan(j,1)=j/10;%K/alpha
sigma(j,1)=100*(mp-yss)/yss;%超调量 end
plot(Kgan,sigma,[0 2],[20 20]) grid
xlabel('K/alpha') ylabel('Overshoot')
33
程序16
n=find(sigma(:,1)<20);%找满足要求二的K/alpha Kn=Kgan(n,1)
程序17
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 Kvc=10;%Kvcopm>8
y=zeros(200,1);i=0;y_deta=zeros(20,1);Kgan=zeros(20,1); for K=0.1:0.1:2%K/alpha Kvu=2*K/5;
alpha=Kvc/Kvu;%alpha即z/p p=0.001;z=alpha*p; nc=[1 z];dc=[1,p];
Gc=K*tf(nc,dc);%引入K/alpha
G2=G*Gc;
sys2=feedback(G2,1);%单位负反馈,构成闭环 t=[0:1:199]; i=i+1;
Kgan(i,1)=i/10;
u=t;
y(:,i)=lsim(sys2,u,t); yss=y(length(t),i);
y_deta(i,1)=u(length(t))-yss if y_deta(i,1)<(1/8)%稳态误差小于a/8 disp('yes')%符合要求(1) else
disp('no')%不符合 end end
plot(Kgan,y_deta,[0 2],[0.125 0.125])%找到误差小于a/8的直线 grid
xlabel('K/alpha') ylabel('E(s)')
程序18
m=find(y_deta<0.125);%找满足要求一的K/alpha Km=Kgan(m,1) 程序19
Kvc=10;%Kvcopm>8 Kgang=1;%K/alpha Kvu=2*Kgang/5;
34
alpha=Kvc/Kvu;%alpha即z/p
程序20
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p]; Gc=1*tf(nc,dc);
G2=G*Gc;%引入K/alpha
sys2=feedback(G2,1);%单位负反馈,构成闭环
程序21 tf1=1000; a=1;
t=[0:0.1:tf1]; u=a*t;%斜坡输入
y_t=lsim(sys2,u,t); plot(t,y_t,'b-',t,u,'r:') grid
yss=y_t(length(t));
y_deta=u(length(t))-yss;
if y_deta<(a/8)%稳态误差小于a/8 disp('yes')%符合要求(1) else
disp('no')%不符合 end
程序22
step(sys2)
程序23
Kvc=10;%Kvcopm>8 Kgang=0.5;%K/alpha Kvu=2*Kgang/5;
alpha=Kvc/Kvu;%alpha即z/p
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p]; Gc=Kgang*tf(nc,dc); G2=G*Gc;%引入K/alpha
sys2=feedback(G2,1);%单位负反馈,构成闭环 tf1=1000; a=1;
35