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 得到
E(s)?y_deta?0.100 yes
100009000800070006000500040003000200010000010002000300040005000600070008000900010000
图10.8第一次校正后系统斜坡响应
接着检验其阶跃响应
程序10
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p;
11
nc=[1 z];dc=[1,p]; Gc=2.02*tf(nc,dc);
G2=G*Gc;%引入K/alpha
sys2=feedback(G2,1);%单位负反馈,构成闭环 step(sys2)
Step Response1.41.2System: sys2Peak amplitude: 1.21Overshoot (%): 21.1At time (sec): 4.181Amplitude0.80.60.40.200102030Time (sec)405060
图10.9第一次校正后的系统阶跃响应
超调21.2%,需要继续调整
令参数稍微改变,K?2.02,1.90,2.1
程序11
G=zpk([],[0,-1,-5],2);%原系统开环传递函数 p=0.001;z=alpha*p; nc=[1 z];dc=[1,p]; 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
12
step(sys2b,'r:') step(sys2c,'y-')
Step Response1.41.2System: sys2bPeak amplitude: 1.2Overshoot (%): 19.6At time (sec): 4.391Amplitude0.80.60.40.20010203040Time (sec)50607080
图10.10对参数稍作调整的系统阶跃响应
当K?1.90时才能使超调降低到20%以下 再次使用求K临界值的程序验证 程序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
Root Locus0.4640.4580.4520.4460.4410.4350.790.47System: sysGain: 2.02Pole: -0.401 + 0.782iDamping: 0.456Overshoot (%): 20Frequency (rad/sec): 0.8780.785Imaginary Axis0.780.475System: sysGain: 1.98Pole: -0.403 + 0.771iDamping: 0.463Overshoot (%): 19.4Frequency (rad/sec): 0.870.875-0.42-0.4150.87-0.41-0.4050.865-0.4Real Axis-0.395-0.390.86-0.385-0.380.7750.77
图10.11在根轨迹上调整参数探索验证
可以看出K?2.02的点满足要求(2) 对K?0.1?2.0进行探索
程序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);
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.
14
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')
1.5 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.010.50 020406080100120140160180200
图10.12不同取值下的阶跃响应
求各曲线超调量,先将时间范围扩大到200 程序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.
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Matlab大作业(3)在线全文阅读。
相关推荐: