title(' Step Response of GK(s)=k/(s+1)(s+2)(s+5)') ylabel('x_o(t)') gtext('T_d=0') gtext(' T_d=0.3') gtext(' T_d=0.7') gtext(' T_d=1.5') gtext(' T_d=3') 运行结果如下
第4题已知系统开环传递函数G(s)?K,试用MATLAB设计PID校正装置,使得
s(0.5s?1)(0.1s?1)-
系统的速度无偏系数KV≥10,相位裕度γ≥50o,且幅值穿越频率 ωc>4s1。
解:第一步:决定低频增益值,以满足稳态性能指针(即满足稳态速度误差常数值)。故得
K≥10;
第二步:绘制开环传递函数的bode图,以求得为校正前系统的相位裕度。程序如下 num=10;
den=conv([1 0],conv([0.5 1],[0.1 1])); margin(num,den) grid on
运行结果如下
24
由图可知:未校正前系统的相位裕度为γ=3.94deg,幅值穿越频率ωg=4.47rad/s,此系统不满足要求。
第三步:选择新的穿越频率。当ωg=4.47rad/s时,,将新的穿越频率设置为∠Gc(jω)=-180°时,在此频率下设计相位超前。用单一的滞后-超前校正装置即可做到。
首先设计相位滞后校正装置,确定好新的幅值增益穿越频率后,可以选择滞后校正的转角频率在新的穿越频率以下十倍频率处,即ωg=4.47rad/s
最大校正相位发生处的β值为
1??1?sin50? 即β=7.548,
1?sin50?若要校正更大的相位角,则值要更大,故选β=10。于是相位滞后校正装置另一转角频率为0.0447rad/s,绘制出校正前后的伯德图,程序如下
k=10;
numg=[1];
deng=conv([1,0],conv([0.5,1],[0.1,1])); [num,den]=series(k,1,numg,deng); sys_old=tf(num,den); w=logspace(-1,2,200);
[mag,phase,w]=bode(sys_old,w);
[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w); numgc=conv([5,1],[0.5,1]);dengc=[5,0]; Gc=tf(numgc,dengc) sys_new= sys_old*Gc
[mag,phase,w]=bode(sys_new,w);
[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w);
25
bode(sys_old,'r',sys_new ,'b',w); grid;
title(['校正后系统的相位裕度=',num2str(Pm),'']); gtext('校正前') gtext('校正后') gtext('校正前') gtext('校正后') 运行结果如下
第5题已知系统开环传递函数如下:
G0(s)?K
s(0.5s?1)?试设计超前校正环节,使其校正后系统的稳态速度误差系数ess?0.05,相位裕度为??50,增益裕度
Kg?10dB。绘制校正前后系统的单位阶跃响应曲线,开环bode图和闭环Nyquist图。
解:首先设计超前校正环节,并绘制校正前后的开环伯德图和闭环乃奎斯特图,程序如下
ess=0.05 k=1/ess;
numg=[1];deng=[0.5 1 0]
[num,den]=series(k,1,numg,deng); sys_old=tf(num,den); w=logspace(-1,2,200);
[mag,phase,w]=bode(sys_old,w); magdB=20*log10(mag); [Gm,Pm,Wcg,Wcp]=margin(mag,phase,w); Phi=(50-Pm+8)*pi/180;
26
alpha=(1-sin(Phi))/(1+sin(Phi));
Mn=10*log10(alpha); wcg=spline(magdB,w,Mn); T=1/(wcg*sqrt(alpha)); Tz=alpha*T; Gc=tf([T,1],[Tz,1]); subplot(121)
sys_new= sys_old*Gc;
[mag,phase,w]=bode(sys_new,w);
[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w); bode(sys_old,'r',sys_new ,'b',w); grid;
title(['校正后系统的相位裕度=',num2str(Pm),'']); gtext('校正前') gtext('校正后') gtext('校正前') gtext('校正后') subplot(122)
nyquist(sys_old,'r',sys_new,'b') grid on
gtext('校正前') gtext('校正后') 运行结果如下
此外,绘制出校正前后系统的单位阶跃响应,程序如下
step(sys_old,'r',sys_new,'b') grid on
27
gtext('校正前') gtext('校正后') 运行结果如下
28