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')
K=0.1K=0.2K=0.3K=0.4K=0.5K=0.6K=0.7K=0.8K=0.9K=1.0K=1.1K=1.2K=1.3K=1.4K=1.5K=1.6K=1.7K=1.8K=1.9K=2.0200 1.81.61.41.210.80.60.40.20 020406080100120140160180
图10.13时间轴扩大100
观察分布情况 程序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')
16
80706050Overshoot40302010000.20.40.60.811.2K/alpha1.41.61.82
图10.14K与P.O.的关系
若找到K的取值范围,问题就比较清晰 程序16
n=find(sigma(:,1)<20);%找满足要求二的K/alpha Kn=Kgan(n,1)
0.5?K?1.9
再考虑K?0.1?2.0的情况下的单位斜坡输入的稳态误差 程序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;
17
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)')
0.70.60.50.4E(s)0.30.20.1000.20.40.60.811.2K/alpha1.41.61.82
图10.15K与稳态误差的关系
程序18
m=find(y_deta<0.125);%找满足要求一的K/alpha Km=Kgan(m,1) 得到
0.2?K?1.1
综合上述两个范围0.5?K?1.1
18
三、结果分析
令K?1 程序19
Kvc=10;%Kvcopm>8 Kgang=1;%K/alpha
Kvu=2*Kgang/5;
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
得到E(s)?y_deta?0.100?0.125,yes,校正系统为
G25c(s)?1000s?1000s?1然后求单位阶跃响应
19
(10.12)
程序22 step(sys2)
Step Response1.4System: sys2Peak amplitude: 1.1Overshoot (%): 9.7At time (sec): 7.641.21Amplitude0.80.60.40.200204060Time (sec)80100120
图10.16K=1的系统阶跃响应
再讨论K?0.5 程序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;
t=[0:0.1:tf1];
u=a*t;%斜坡输入
y_t=lsim(sys2,u,t);
plot(t,y_t,'b-',t,u,'r:')
20