自控实验1
- 格式:docx
- 大小:208.38 KB
- 文档页数:15
MP2.1考虑两个多项式 2()21p s s s =++ ,()1q s s =+使用 MATLAB 计算下列各式:(a) ()()p s q s ;解:>> p=[1 2 1]; >> q=[1 1]; >> n=conv(p,q) 运行结果如下: n =1 3 3 1(b) ()()()q s G s p s =解:>> G=tf(q,p) 运行结果如下: Transfer function: s + 1 ------------- s^2 + 2 s + 1MP2.2 考虑MP2.2描述的反馈控制系统;(a)利用series 和feedback 函数,计算闭环传递函数;解:Matlab 程序如下:>> num1=[1 2];den1=[1,3];sys1=tf(num1,den1); >> num2=[1];den2=[1 1];sys2=tf(num2,den2); >> sys3=series(sys1,sys2); >> sys=feedback(sys3,[1]) 运行结果如下: Transfer function: s + 2 ------------- s^2 + 5 s + 5(b)用step 函数求闭环系统单位阶跃响应,并验证输出终值为0.4。
Figure MP2.2 A negative feedback control system.解:>> t=[0 : 0.1 : 10]; step(sys,t); grid on运行结果如下:0123456789100.050.10.150.20.250.30.350.4Step ResponseTime (sec)A m p l i t u d e由单位阶跃响应曲线图可以看出输出终值为0.4。
MP 2.6考虑MP2.6所示框图,(a)用Matlab化简框图,计算系统的闭环传递函数;(b)利用pzmap函数闭环传递函数的零-极点图;(c)用roots函数计算闭环传递函数的零点和极点,并与(b)中结果比较。
Figure MP2.2 A multiple-loop feedback control system.(1)解:Matlab程序如下:>>num1=[1];den1=[1 1];sys1=tf(num1,den1);num2=[1];den2=[1 0 2];sys2=tf(num2,den2);num3=[4 2];den3=[1 2 1];sys3=tf(num3,den3);sys4=series(sys1,sys2);sys5=feedback(sys4,sys3,-1);num6=[1];den6=[1 0 0];sys6=tf(num6,den6);num7=[50];den7=[1];sys7=tf(num7,den7);sys8=feedback(sys6,sys7,1);sys9=series(sys5,sys8);num10=[1 0 2];den10=[1 0 0 14];sys10=tf(num10,den10);sys11=feedback(sys9,sys10,-1);num12=[4];den12=[1];sys12=tf(num12,den12);F=series(sys11,sys12);F运行结果如下:Transfer function:4 s^5 + 8 s^4 + 4 s^3 + 56 s^2 + 112 s + 56---------------------------------------------------------------------------------------------------------------------- s^10 + 3 s^9 - 45 s^8 - 129 s^7 - 198 s^6 - 976 s^5 - 2501 s^4 - 3558 s^3- 4841 s^2 - 6996 s - 2798Matlab 程序如下:>> num=[4 8 4 56 112 56];den=[1 3 45 -129 -198 -976 -2501 -3558 -4841 -6996 -2798]; >> [p,z]=pzmap(num,den); >> pzmap(num,den); >>z z =1.2051 +2.0872i 1.2051 - 2.0872i -2.4101 -1.0000 -1.0000 >>p p =-2.4585 + 7.0768i -2.4585 - 7.0768i 4.0336 0.0423 + 1.9723i 0.0423 - 1.9723i 0.4946 + 1.5660i 0.4946 - 1.5660i -1.3194 + 0.6279i -1.3194 - 0.6279i -0.5515 运行结果如下:-8-6-4-22468P ole-Zero MapReal AxisI m a g i n a r y A x i s>> z=roots(num) z =1.2051 +2.0872i 1.2051 - 2.0872i -2.4101 -1.0000 -1.0000 >> p=roots(den) p =-2.4585 + 7.0768i -2.4585 - 7.0768i 4.0336 0.0423 + 1.9723i 0.0423 - 1.9723i 0.4946 + 1.5660i 0.4946 - 1.5660i -1.3194 + 0.6279i -1.3194 - 0.6279i -0.5515以上roots 函数计算闭环传递函数的零点和极点,并与(b )中结果比较,结果一致。
MP2.8 某系统的传递函数为:2()(15/)()()315Y s z s z R s s s +=++ 绘制系统的单位阶跃响应,参数Z=3,6和12。
解:Matlab 程序如下:>>num1=[15/3 15]; num2=[15/6 15]; num3=[15/12 15]; den=[1 3 15];sys1=tf(num1,den); sys2=tf(num2,den); sys3=tf(num3,den); step(sys1,sys2,sys3); grid on;运行结果如下:00.51 1.52 2.53 3.540.20.40.60.811.21.41.6Step ResponseTime (sec)A m p l i t u d eMP 5.1 考虑闭环传递函数()2232T s s s =++ 请用解析方法和MATLAB 的impulse 函数,分别计算系统的脉冲响应,并比较所得的结果。
解:(1)解析方法:()2232T s s s =++=2[(s+1)-1/(s+2)]; >> t=[0:0.01:10];y=2*exp(-t)-2*exp(-2*t); plot(t,y); grid on运行结果如下:00.050.10.150.20.250.30.350.40.450.5(2)MATLAB 的impulse 函数方法:>> t=[0 :0.1 :10]; num = [2];den = [1 3 2]; impulse (num,den,t); grid on;title ('unit-impulse Response of G(s)=2/(s^2+3s+2)');运行结果如下:0123456789100.050.10.150.20.250.30.350.40.450.5unit-impulse Response of G(s)=2/(s 2+3s+2)Time (sec)A m p l i t u d e0.20.40.60.811.21.41.61.82Linear Simulation ResultsTime (sec)A m p l i t u d eMP5.2 某单位负反馈系统的开环传递函数为()()2510s G s s s +=+ 当输入为斜坡信号()21R s s=时,(利用lsim 函数)计算闭环系统在02t s ≤≤时间段的响应,并求出系统的稳态误差。
解:>> num=[1 5]; den=[1 10 0 0]; sys=tf(num,den); t=[0:0.1:2]; u=t;lsim(sys,u,t); grid on;运行结果如下:求系统的稳态误差: >> s=0;Kv=(s+5)/(s^2+10*s); Ess=1/Kv 运行结果如下: Warning: Divide by zero. Ess =0 得系统的稳态误差为0。
MP5.3 某2阶系统如图MP5.3所示,它的极点位置同瞬态响应之间存在着对应关系。
对控制系统的设计而言,掌握这种关系是非常重要的。
考虑如下4种情况;(1) 2,0n ωζ==; (2) 2,0.1n ωζ==; (3) 1,0n ωζ== (4) 1,0.2n ωζ==;图MP5.3 简单的2阶系统画出这4种情况下的系统的单位阶跃和脉冲响应曲线,求出系统单位阶跃响应的峰值时间p T 、调整时间s T 和超调量P.O.。
解:(1)单位阶跃响应曲线:Matlab 程序如下: t=[0 : 0.1 : 30]; x1=2;num1=[x1^2];y1=0;den1=[1,2*y1*x1,x1^2]; sys1=tf(num1,den1); subplot(2,2,1); step(sys1,t); grid on ;title('Wn=2, ξ=0'); x2=2;num2=[x2^2];y2=0.1;den2=[1,2*y2*x2,x2^2]; sys2=tf(num2,den2); subplot(2,2,2); step(sys2,t); grid on ;title('Wn=2, ξ=0.1'); x3=1;num3=[x3^2];y3=0;den3=[1,2*y3*x3,x3^2]; sys3=tf(num3,den3); subplot(2,2,3);step(sys3,t); grid on ;title('Wn=1, ξ=0'); x4=1;num4=[x4^2];y4=0.2;den4=[1,2*y4*x4,x4^2]; sys4=tf(num4,den4); subplot(2,2,4); step(sys4,t); grid on ;title('Wn=1, ξ=0.2'); 运行结果如下:010203000.511.52Wn=2, ξ=0Time (sec)A m p l i t u d e01020300.511.52Wn=2, ξ=0.1Time (sec)A m p l i t u d e010203000.511.52Wn=1, ξ=0Time (sec)A m p l i t u d e01020300.511.52Wn=1, ξ=0.2Time (sec)A m p l i t u d e(2)单位脉冲响应曲线:Matlab 程序如下: t=[0 : 0.1 : 30]; x1=2;num1=[x1^2];y1=0;den1=[1,2*y1*x1,x1^2]; sys1=tf(num1,den1); subplot(2,2,1); impulse(sys1,t); grid on ;title('Wn=2, ξ=0'); x2=2;num2=[x2^2];y2=0.1;den2=[1,2*y2*x2,x2^2]; sys2=tf(num2,den2); subplot(2,2,2); impulse(sys2,t); grid on ;title('Wn=2, ξ=0.1'); x3=1;num3=[x3^2];y3=0;den3=[1,2*y3*x3,x3^2]; sys3=tf(num3,den3); subplot(2,2,3); impulse(sys3,t); grid on ;title('Wn=1, ξ=0'); x4=1;num4=[x4^2];y4=0.2;den4=[1,2*y4*x4,x4^2]; sys4=tf(num4,den4); subplot(2,2,4); impulse(sys4,t); grid on ;title('Wn=1, ξ=0.2');运动结果如下:0102030-2-1012Wn=2, ξ=0Time (sec)A m p l i t u d e0102030-2-1012Wn=2, ξ=0.1Time (sec)A m p l i t u d e0102030-1-0.500.51Wn=1, ξ=0Time (sec)A m p l i t u d e0102030-0.50.51Wn=1, ξ=0.2Time (sec)A m p l i t u d e(3)计算峰值时间Tp:>> Tp1=pi/(x1*sqrt(1-y1^2));>> Tp1Tp1 =1.5708>> Tp2=pi/(x2*sqrt(1-y2^2));>> Tp2Tp2 =1.5787>> Tp3=pi/(x3*sqrt(1-y3^2));>> Tp3Tp3 =3.1416>> Tp4=pi/(x4*sqrt(1-y4^2));>> Tp4Tp4 =3.2064计算调节时间Ts (2%误差准则):>> Ts1=4/(x1*y1);Warning: Divide by zero. %表示调整时间Ts1无穷大。