《控制系统计算机辅助设计:MATLAB语言与应用(第2版)》薛定宇 - 课后习题答案 - 图文

【6】

(1)从示波器Scope观察所得波形

(2)通过在MATLAB工作目录下输入命令得到波形 >> [t,x,y]=sim('simulink_Chapter5_6',50);

plot(t,y(:,1),'-',t,y(:,2),'--*');grid %“实线”的为输出1,“虚线且转折带星号”的为输出2

8

6

4

2 0 -2

-4

-6-846 05101520253035404550【7】

上述仿真模型中对于输入u采用了Kp=[1,0.7,0.3,0.2;0.6,1,0.4,0.35;0.35,0.4,1,0.6;0.2,0.3,0.7,1] 对系统进行补偿,用以减小四路输出的耦合效果 (1)从示波器Scope观察所得波形

(2)通过在MATLAB工作目录下输入命令得到波形

>> u1=1;u2=1;u3=1;u4=1;[tt,x,yy]=sim('simulink_Chapter5_7',40); subplot(221),plot(tt,yy(:,1));grid subplot(222),plot(tt,yy(:,2));grid subplot(223),plot(tt,yy(:,3));grid subplot(224),plot(tt,yy(:,4));grid

47

54321001020304064200102030406544321200102030400010203040? 通过step()函数对上述模型进行仿真 (1)方案一,8路输出,MATLAB命令如下:

>>g11=tf(1,[4,1]);g12=tf(0.7,[5,1]);g13=tf(0.3,[5 1]);g14=tf(0.2,[5 1]); g21=tf(0.6,[5,1]);g22=tf(1,[4,1]);g23=tf(0.4,[5 1]);g24=tf(0.35,[5 1]); g31=tf(0.35,[5,1]);g32=tf(0.4,[5,1]);g33=tf(1,[4,1]);g34=tf(0.6,[5 1]); g41=tf(0.2,[5,1]);g42=tf(0.3,[5,1]);g43=tf(0.7,[5 1]);g44=tf(1,[4,1]);

G1=[g11 g12 g13 g14;g21 g22 g23 g24;g31 g32 g33 g34; g41 g42 g43 g44]; Kp=[1,0.7,0.3,0.2;0.6,1,0.4,0.35;0.35,0.4,1,0.6;0.2,0.3,0.7,1]; G2=ss(G1*Kp);

[y1,x1,t1]=step(G2.a,G2.b,G2.c,G2.d,1,40); [y2,x2,t2]=step(G2.a,G2.b,G2.c,G2.d,2,40); [y3,x3,t3]=step(G2.a,G2.b,G2.c,G2.d,3,40); [y4,x4,t4]=step(G2.a,G2.b,G2.c,G2.d,4,40);

u1=1;u2=0;u3=0;u4=0;[tt1,x1,yy1]=sim('simulink_Chapter5_7',40); u1=0;u2=1;u3=0;u4=0;[tt2,x2,yy2]=sim('simulink_Chapter5_7',40); u1=0;u2=0;u3=1;u4=0;[tt3,x3,yy3]=sim('simulink_Chapter5_7',40); u1=0;u2=0;u3=0;u4=1;[tt4,x4,yy4]=sim('simulink_Chapter5_7',40);

subplot(4,4,1),plot(t1,y1(:,1),':',tt1,yy1(:,1)); subplot(4,4,2),plot(t1,y1(:,2),':',tt1,yy1(:,2)); subplot(4,4,3),plot(t1,y1(:,3),':',tt1,yy1(:,3)); subplot(4,4,4),plot(t1,y1(:,4),':',tt1,yy1(:,4)); subplot(4,4,5),plot(t2,y2(:,1),':',tt2,yy2(:,1)); subplot(4,4,6),plot(t2,y2(:,2),':',tt2,yy2(:,2)); subplot(4,4,7),plot(t2,y2(:,3),':',tt2,yy2(:,3)); subplot(4,4,8),plot(t2,y2(:,4),':',tt2,yy2(:,4)); subplot(4,4,9),plot(t3,y3(:,1),':',tt3,yy3(:,1)); subplot(4,4,10),plot(t3,y3(:,2),':',tt3,yy3(:,2)); subplot(4,4,11),plot(t3,y3(:,3),':',tt3,yy3(:,3)); subplot(4,4,12),plot(t3,y3(:,4),':',tt3,yy3(:,4)); subplot(4,4,13),plot(t4,y4(:,1),':',tt4,yy4(:,1)); subplot(4,4,14),plot(t4,y4(:,2),':',tt4,yy4(:,2));

48

subplot(4,4,15),plot(t4,y4(:,3),':',tt4,yy4(:,3)); subplot(4,4,16),plot(t4,y4(:,4),':',tt4,yy4(:,4)); %注:仿真结果中,实线表示精确仿真结果,虚线表示近似结果

21021021010.5002040020400204002040210210210210020400204002040020402102102102100204002040020400204010.5021021021002040020400204002040

? 分析:从图中可以看出,采用step()函数进行仿真的精度还是非常高的,在所得图形中

几乎看不出二者的差别

(2)方案二,8路输出,MATLAB命令如下 >> step(G2)

Step Response From: In(1)From: In(2)From: In(3)2

1 02

1 02

1 02

1 0AmplitudeTo: Out(4)To: Out(3)To: Out(2)To: Out(1)0102030010203001020Time (seconds)From: In(4)300102030 49

(3)最终的4路输出波形,MATLAB命令如下 >> [y1,x1,t1]=step(G2.a,G2.b,G2.c,G2.d,1,40); [y2,x2,t2]=step(G2.a,G2.b,G2.c,G2.d,2,40); [y3,x3,t3]=step(G2.a,G2.b,G2.c,G2.d,3,40); [y4,x4,t4]=step(G2.a,G2.b,G2.c,G2.d,4,40);

subplot(221);plot(t1,y1(:,1)+y1(:,2)+y1(:,3)+y1(:,4)); subplot(222);plot(t2,y2(:,1)+y2(:,2)+y2(:,3)+y2(:,4)); subplot(223);plot(t3,y3(:,1)+y3(:,2)+y3(:,3)+y3(:,4)); subplot(224);plot(t4,y4(:,1)+y4(:,2)+y4(:,3)+y4(:,4));

54321001020304000102030404626544321200102030400010203040? 总结

通过对于该4输入4输出多变量系统的Simulink仿真和采用step()函数进行仿真,可以发现得到以下结论

两种情况下仿真结果有以下的异同点: (1) 异:

1、 Simulink的仿真结果是最终输出y1和y4均在达到5时趋于平稳,而用step()

函数仿真的结果是y1和y4在到达5还不到的位置就趋于平稳了

2、 Simulink的仿真结果是最终输出y2和y3均在达到4.7附近时趋于平稳,而用

step()函数仿真的结果是y2和y3在到4.8附近的位置就趋于平稳,两者之间的差别也很小,但是可以很容易发现这个微小的差异

(2) 同:

两种情况下均满足y1和y4、y2和y3得到的输出波形是对应相同的,这就是为

什么在Simulink仿真的示波器上只能看到两个波形的原因,这是由于两对相同 形状的波形叠加在一起所造成的

最终结论:两种情况下的仿真结果差异不大,在实际工程建模上都是适用的

50

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4