当前位置:文档之家› 控制系统仿真matlab第六章习题答案

控制系统仿真matlab第六章习题答案

控制系统仿真第六章课后题作业6.1在图6.1中,已知单位负反馈系统被控对象的传递函数为)1001.0)(11.0()(++=s s s K s G 试编写matlab 程序,设计系统的超前矫正器Gc(s),要求:1)在斜坡信号r (t)=2t 作用下,系统的稳态误差ess<=0.002;2)校正后系统的相位裕度Pm 范围为:45~55;3)绘制系统校正后的bode 图和阶跃响应曲线。

程序:>> s=tf('s');>> G=1000/(s*(0.1*s+1)*(0.001*s+1));>> margin(G) % 绘制校正前的bode 图>> figure(2)>> sys=feedback(G,1);>> step(sys) %绘制校正前的单位阶跃响应曲线>> [Gm,Pm]=margin(G); %该句值计算bode图的增益裕量Gm和相位裕量Pm >> [mag,phase,w]=bode(G); %该句只计算bode图上多个频率点w对应的幅值和相位>> QWPm=50; %取矫正后的相位为50>> FIm=QWPm-Pm+5;>> FIm=FIm*pi/180;>> alfa=(1-sin(FIm))/(1+sin(FIm));>> adb=20*log10(mag);>> am=10*log10(alfa);>> wc=spline(adb,w,am);>> T=1/(wc*sqrt(alfa));>> alfat=alfa*T;>> Gc=tf([T 1],[alfat 1]) %校正器的传递函数Transfer function:0.01794 s + 1-------------0.00179 s + 1>> figure(3)>> margin(Gc*G) % 系统矫正后的bode图>> figure(4)>> step(feedback(Gc*G,1)) % 校正后的单位阶跃响应曲线作业6.2在图6.1中,已知单位负反馈系统被控对象的传递函数为)102.0)(11.0()(++=s s s K s G 试编写matlab 程序,设计系统的滞后校正器Gc (s ),要求:1) 在斜坡信号r(t)=t 作用下,系统的稳态误差ess 01.0≤;2) 校正后系统的相位裕度Pm 范围为:40~50;3) 绘制系统矫正前后的bode 图和阶跃响应曲线。

计算K ess=1/K<=0.01 K>=100 取K=100程序如下:>> s=tf('s');>> G=100/(s*(0.1*s+1)*(0.02*s+1));>> margin(G) %绘制校正前的bode 图如下图示,这是一个不稳定的系统。

>> figure(2)>> step(feedback(G ,1))可以看出系统的动态响应不稳定,处于震荡发散的状态。

>> P0=45;>> fic=-180+P0+5;>> [mu,pu,w]=bode(G);>> wc2=spline(pu,w,fic);>> d1=conv(conv([1 0],[0.1 1]),[0.02 1]);>> na=polyval(100,j*wc2);>> da=polyval(d1,j*wc2); %该句是用j*wc2代替多项式中的s >> G1=na/da;>> g1=abs(G1); %abs()函数是取绝对值,这里表示求复数G1的模>> L=20*log10(g1);>> beta=10^(L/20); T=1/(0.1*wc2);>> betat=beta*T;>> Gc=tf([T 1],[betat 1])Transfer function:1.558 s + 1-----------20.27 s + 1>> figure(3)>> margin(Gc*G)>> figure(4)>> step(feedback(Gc*G,1))作业6.3在图6.1中,已知单位负反馈系统被控对象的传递函数为)2)(1()(++=s s s K s G 试编写matlab 程序,设计系统的滞后-超前校正器Gc(s),要求:1) 在单位斜坡信号r(t)=t 作用下,系统的速度误差系数Kv=20s-1;2) 校正后系统的实际相位裕量Pm 范围为:42~58;3) 校正后系统的实际剪切频率wc2>=1.3rad/s;4) 绘制系统校正前后的bode 图和阶跃响应曲线。

由题知 202)2)(1(lim )(lim 00==++==→→K s s s K s s sG Kv s s K=40 程序如下:先绘制校正前的bode 图和单位阶跃响应曲线,再绘制校正后的 第一种>> s=tf('s');>> G0=40/(s*(s+1)*(s+2));>> figure(1)>> margin(G0)>> figure(2)>> step(feedback(G0,1))校正前系统的增益裕量Gm=-16.5,相位裕量Pm=-40.4都是负值,系统不稳定 剪切频率wc1=3.19rad/s,阶跃响应曲线是发散的。

>> wc2=4;>> [Gm,Pm,wc1]=margin(G0);>> beta=9;T1=1/(0.1*wc1);>> betat=beta*T1;>> Gc1=tf([T1 1],[betat 1]) %计算并显示滞后校正器传递函数Transfer function:7.071 s + 1-----------63.64 s + 1>> sope=G0*Gc1; %计算原系统与滞后校正器串联后的传递函数>> num=sope.num{1};den=sope.den{1};>> na=polyval(num,j*wc2);>> da=polyval(den,j*wc2);>> G=na/da;>> g1=abs(G);>> L=20*log10(g1);>> alfa=10^(L/20);>> T=1/(wc2*(alfa)^(1/2));>> alfat=alfa*T;>> Gc2=tf([T 1],[alfat 1])Transfer function:1.018 s + 1-------------0.06139 s + 1>> G=G0*Gc1*Gc2; >> sys=feedback(G,1); >> figure(3)>> margin(G)>> figure(4)>> step(sys)第二种:改进后>> s=tf('s');>> G0=40/(s*(s+1)*(s+2));>> figure(1)>> margin(G0)>> figure(2)>> step(feedback(G0,1))>> wc2=10;>> [Gm,Pm,wc1]=margin(G0);>> beta=9;T1=1/(0.1*wc1);>> betat=beta*T1;>> Gc1=tf([T1 1],[betat 1]); %¼ÆËã²¢ÏÔʾÖͺóУÕýÆ÷´«µÝº¯Êý>> n1=conv([T1 1],[0 40]);>> d1=conv(conv(conv([1 0],[1 1]),[1 2]),[betat 1]);>> na=polyval(n1,1i*wc2);>> da=polyval(d1,1i*wc2);>> G=na/da;>> g1=abs(G);>> L=20*log10(g1);>> alfa=10^(L/20);>> T=1/(wc2*(alfa)^(1/2)); >> alfat=alfa*T;>> Gc2=tf([T 1],[alfat 1]); >> G=G0*Gc1*Gc2;>> sys=feedback(G,1);>> figure(3)>> margin(G)>> figure(4)>> step(sys)作业6-4在图6.1中,已知受控对象为一个带延迟的惯性环节,其传递函数为 e s s s G 71176)(-+= 试编写matlab 程序,用Ziegler-Nichols 经验整定公式中的两种方法,分别计算P ,PI ,PID 控制器的参数,并进行阶跃响应仿真。

由传递函数知:比例系数K=6,惯性时间常数T=17.纯延迟时间常数t=7.可采用Ziegler-Nichols 经验整定公式中阶跃响应整定法。

ττττττ5.0,2,2.1,3,9.0,======PIDTd PIDTi K T PIDKp PITi K T PIKp K T PKp >> K=6;T=17;tau=7;>> s=tf('s');>> Gz=K/(T*s+1);>> [np,dp]=pade(tau,2);>> G1=tf(np,dp);>> G=Gz*G1;>> Pkp=T/(K*tau) % 计算比例控制器的KpPkp =0.4048>> step(feedback(Pkp*G,1)),hold on>> PIKp=0.9*T/(K*tau);>> PITi=3*tau; %计算比例积分控制器的Kp和Ti >> PIGc=PIKp*(1+1/(PITi*s))Transfer function:7.65 s + 0.3643---------------21 s>> step(feedback(PIGc*G,1)),hold on>> PIDKp=1.2*T/(K*tau);>> PIDTI=2*tau;>> PIDTd=0.5*tau;>> PIDGc=PIDKp*(1+1/(PIDTI*s)+PIDTd*s/((PIDTd/10)*s+1))Transfer function:26.18 s^2 + 6.97 s + 0.4857---------------------------4.9 s^2 + 14 s>> step(feedback(PIDGc*G,1)),hold on>> [PIDKp,PIDTI,PIDTd]ans =0.4857 14.0000 3.5000>> gtext('p'); %在曲线上打印文字>> gtext('PI');>> gtext('PID');。

相关主题