1、4-2 设典型闭环结构控制系统如图 4-47 所示,当阶跃输入幅值 20R时,用 sp4_1.m求取输出 ()yt的响应。()yt()rt24 3 20250.160.864.273.421ss ss s 解:用 sp4_1.m 求解过程如下:在 MATLAB 语言环境下,输入以下命令语句 a=0.016 0.864 3.27 3.42 1; b=30 25; X0=0 0 0 0; %系统状态向量初值为零 V=2; %反馈系数 2v n=4; T0=0;Tf=10; h=0.01;R=20 ; %仿真步长 h=0.01,阶跃输入幅值 20R sp4_1 %调用 sp4_1.m 函数 plot
2、(t,y)运行结果为: 0 1 2 3 4 5 6 7 8 9 10024681012141618附: sp4_1.m 函数为b=b/a(1);a=a/a(1);A=a(2:n+1);A=rot90(rot90(eye(n-1,n);-fliplr(A);B=zeros(1,n-1),1;m1=length(b);C=fliplr(b),zeros(1,n-m1);Ab=A-B*C*V;X=X0;y=0;t=T0;N=round(Tf-T0)/h);for i=1:NK1=Ab*X+B*R;K2=Ab*(X+h*K1/2)+B*R; K3=Ab*(X+h*K2/2)+B*R;K4=Ab*(X+
3、h*K3)+B*R;X=X+h*(K1+2*K2+2*K3+K4)/6;y=y,C*X;t=t,t(i)+h;end4-4 系统结构图如图 4-48,写出该系统的联结矩阵 W和 0,并写出联结矩阵非零元素阵 IJW。1()Gs 2()Gs3()Gs 4()Gs 5()Gs 6()Gs 7()Gs10()Gs9()Gs0y 8()s 7y解:根据图 4-48 中 iu, y拓扑连结关系,可写出每个环节输入 iu受哪些环节输出 iy的影响,现列如入下 :10293485610789107uyuyuy把环节之间的关系和环节与参考输入的关系分别用矩阵表示出来, 0UWY12345678910 0001
4、0uuu 123450678910*yyy即 = , W=,1029341856178910IJ4-6 若系统为图 4-5b 双输入 -双输出结构,试写出该系统的联接矩阵 , 0W,说明应注意什么?14 6201y02y1 2u 3u5u4u 6u3y6y5y1y 2y4y解:根据图 4-5b 中 i, y拓扑连结关系,可列写如下关系式 :1052340356uy转换成矩阵形式为12 234 4025 56 60*100u yuy所以联接矩阵 W=, 0W=此时应注意输入联接矩阵 变为 型。4-8 求图 4-49 非线性系统的输出响应 y(t),并与无非线性环节情况进行比较。0.5.s 20(
5、)()ss()10rt()et ()ut ()yt解:( 1)不考虑非线性环节影响时,求解过程如下:1) 先将环节编号标入图中。2) 在 MATLAB 命令窗口下,按编号依次将环节参数输入 P 阵; P=0.1 1 0.5 1;0 1 20 0;2 1 1 0;10 1 1 0;3) 按各环节相对位置和联接关系,有联接矩阵如下: 0W, 0W,所以非零元素矩阵 104231IJW WIJ=1 0 1;1 4 -1;2 1 1;3 2 1;4 3 1 ;4)由于不考虑非线性影响,则非线性标志向量和参数向量均应赋零值; Z=0 0 0 0;S=0 0 0 0;5)输入运行参数:开环截至频率 1Lc
6、约为 1,故计算步长 h 取经验公式值,即 1.2ch,取 h=0.01;每 0.25 秒输出一点。故取 1L=25。h=0.01;L1=25;n=4;T0=0Tf=20;nout=4;Y0=10;sp4_4; plot(t,y,r) hold on运行结果如图中红色实线所示。(2)考虑非线性环节 N 影响时,只需将非线性标志向量 Z 和参数向量 S 的相应分量正确输入即可。在 MATLAB 命令窗口中输入下列语句: Z=4 0 0 0;S=5 0 0 0; %第一个线性环节后有饱和非线性,参数值为 5。 sp4_4; plot(t,y,-)运行结果如图中蓝色虚线所示。 0 2 4 6 8 1
7、0 12 14 16 18 2002468101214从图中可以清楚的地看出,饱和非线性环节对线性系统输出响应的影响。附: sp4_4 函数为 :A=P(:,1);B=P(:,2);C=P(:,3);D=P(:,4);m=length(WIJ(:,1);W0=zeros(n,1);W=zeros(n,n);for k=1:mif (WIJ(k,2)=0); W0(WIJ(k,1)=WIJ(k,3);else W(WIJ(k,1),WIJ(k,2)=WIJ(k,3);end;end;for i=1:nif(A(i)=0);FI(i)=1;FIM(i)=h*C(i)/B(i);FIJ(i)=h*h
8、*(C(i)/B(i)/2;FIC(i)=1;FID(i)=0;if(D(i)=0);FID(i)=D(i)/B(i);elseendelseFI(i)=exp(-h*A(i)/B(i);FIM(i)=(1-FI(i)*C(i)/A(i);FIJ(i)=h*C(i)/A(i)-FIM(i)*B(i)/A(i);FIC(i)=1;FID(i)=0;if(D(i)=0);FIC(i)=C(i)/D(i)-A(i)/B(i);FID(i)=D(i)/B(i);elseendendendY=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ubb=Uk;t=T0:h*L1:Tf;N=l
9、ength(t);for k=1:N-1for i=1:L1Ub=Uk;Uk=W*Y+W0*Y0;for i=1:nif(Z(i)=0)if (Z(i)=1)Uk(i)=satu(Uk(i),S(i);endif(Z(i)=2)Uk(i)=dead(Uk(i),S(i); endif(Z(i)=3)Uk(i),Ubb(i)=backlash(Ubb(i),Uk(i),Ub(i),S(i); endendendUdot=(Uk-Ub)/h;Uf=2*Uk-Ub;X=FI.*X+FIM.*Uk+FIJ.*Udot;Yb=Y;Y=FIC.*X+FID.*Uf;for i=1:nif(Z(i)=0)i
10、f (Z(i)=4)Y(i)=satu(Y(i),S(i);endif(Z(i)=5)Y(i)=dead(Y(i),S(i); endif(Z(i)=6)Y(i),Ubb(i)=backlash(Ubb(i),Y(i),Yb(i),S(i); endendendendy=y,Y(nout);end附:饱和非线性函数 satu.m 为:function Uc=satu(Ur,S1)if(abs(Ur)=S1)if(Ur0)Uc=S1;else Uc=-S1;endelse Uc=Ur;end4-10 采样控制系统如图 4-50 所示,编写程序实现对该系统的仿真分析。 (提示:连续部分按环节离散化
11、考虑)图中, 12112DDPITTKzZUzDE A为典型数字 PID 控制器;P=0.65 为比例系数; I=0.7 为积分时间常数; D=0.2 为微分时间常数;312()(TsYseG为具有纯滞后特性的典型二阶控制对象; 10.3Ts;20.3T; .4。()()1rt()et ()yt()Gs()ek ()uk解:在控制对象前引入零阶保持器,将连续环节部分按环节离散化: ()hZs= 312()TsTseZA= 321()TsseZA设 1aT,为简化运算及编程,取 为 T 的整数倍()hG=3 3312(aTaaTaTTzzez 对上式进行 Z 逆变换,得到33321TaTazez
12、c22 3()()(2)(1)()aaaTYkUkeUkeYkk 由此可编写仿真程序。在 MATLAB 命令窗口中输入下列语句: KP=0.65;TI=0.7;TD=0.2; T1=0.3;a=1/T1;T3=0.4; T=0.1;h=0.001;Tf=10;hh编写 M 脚本文件,存为 hh.m。%离散化后各参数为:A=1-a*h*exp(-a*h)-exp(-a*h);B=exp(-2*a*h)-exp(-a*h)+a*h*exp(-a*h);C=2*exp(-a*h);D=exp(-2*a*h);P=KP*(1+T/TI+TD/T);H=KP*(1+2*TD/T);M=KP*TD/T;%
13、系统初始值为:E=zeros(1,3);U=zeros(1,2+T3/T+1);Y=zeros(1,2+T3/h+1);R=1;yk=0;yt=0;t=0;%仿真迭代运算:for K1=1:Tf/Tek=R-Y(1);E=ek,E(1:2);uk=P*E(1)-H*E(2)+M*E(3)+U(1);U=uk,U(1:(2+T3/T);for K2=1:T/hyk=A*U(T3/T+1+1)+B*U(T3/T+2+1)+C*Y(T3/h+1)-D*Y(T3/h+2);Y=yk,Y(1:(2+T3/h);endyt=yt,yk;t=t,K1*T;end%输出波形: plot(t,yt)运行结果为: 0 1 2 3 4 5 6 7 8 9 1000.10.20.30.40.50.60.70.80.91此题可以用 SIMULINK 仿真进行验证:建立 SIMULINK 仿真模型:运行结果为: