《控制系统数字仿真与CAD张晓华版课后答案第四章》由会员分享,可在线阅读,更多相关《控制系统数字仿真与CAD张晓华版课后答案第四章(10页珍藏版)》请在金锄头文库上搜索。
1、4-2设典型闭环结构控制系统如图4-47所示,当阶跃输入幅值 时,用sp4_1.m求取输出的响应。解:用sp4_1.m求解过程如下:在MATLAB语言环境下,输入以下命令语句 a=0.016 0.864 3.27 3.42 1; b=30 25; X0=0 0 0 0; %系统状态向量初值为零 V=2; %反馈系数 n=4; T0=0;Tf=10; h=0.01;R=20 ; %仿真步长h=0.01,阶跃输入幅值 sp4_1 %调用sp4_1.m函数 plot(t,y)运行结果为:附:sp4_1.m函数为b=b/a(1);a=a/a(1);A=a(2:n+1);A=rot90(rot90(ey
2、e(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:N K1=Ab*X+B*R; K2=Ab*(X+h*K1/2)+B*R; K3=Ab*(X+h*K2/2)+B*R; K4=Ab*(X+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,写出该系统的联结矩阵和,并写出联结矩阵非零元素阵。解:根据
3、图4-48中,拓扑连结关系,可写出每个环节输入受哪些环节输出的影响, 现列如入下: 把环节之间的关系和环节与参考输入的关系分别用矩阵表示出来,即=,=,4-6若系统为图4-5b 双输入-双输出结构,试写出该系统的联接矩阵,说明应注意什么?解:根据图4-5b中,拓扑连结关系,可列写如下关系式: 转换成矩阵形式为所以联接矩阵=,= 此时应注意输入联接矩阵变为型。4-8求图4-49非线性系统的输出响应y(t),并与无非线性环节情况进行比较。解:(1)不考虑非线性环节影响时,求解过程如下:1) 先将环节编号标入图中。2) 在MATLAB命令窗口下,按编号依次将环节参数输入P阵; P=0.1 1 0.5
4、 1;0 1 20 0;2 1 1 0;10 1 1 0;3) 按各环节相对位置和联接关系,有联接矩阵如下:, ,所以非零元素矩阵 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)输入运行参数:开环截至频率约为1,故计算步长h取经验公式值,即,取h=0.01;每0.25秒输出一点。故取=25。h=0.01;L1=25;n=4;T0=0Tf=20;nout=4;Y0=10;sp4_4; plot(t,y,r) hold on运行结果如图中红色实线所示。(2)考虑非
5、线性环节N影响时,只需将非线性标志向量Z和参数向量S的相应分量正确输入即可。在MATLAB命令窗口中输入下列语句: Z=4 0 0 0;S=5 0 0 0; %第一个线性环节后有饱和非线性,参数值为5。 sp4_4; plot(t,y,-)运行结果如图中蓝色虚线所示。从图中可以清楚的地看出,饱和非线性环节对线性系统输出响应的影响。 附: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:m if (WIJ(k,2)=0); W0(WIJ(k,1)=WI
6、J(k,3); else W(WIJ(k,1),WIJ(k,2)=WIJ(k,3); end;end;for i=1:n if(A(i)=0); FI(i)=1; FIM(i)=h*C(i)/B(i); FIJ(i)=h*h*(C(i)/B(i)/2; FIC(i)=1;FID(i)=0; if(D(i)=0); FID(i)=D(i)/B(i); else end else FI(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(
7、D(i)=0); FIC(i)=C(i)/D(i)-A(i)/B(i); FID(i)=D(i)/B(i); else end endendY=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ubb=Uk;t=T0:h*L1:Tf;N=length(t);for k=1:N-1 for i=1:L1 Ub=Uk; Uk=W*Y+W0*Y0; for i=1:n if(Z(i)=0) if (Z(i)=1) Uk(i)=satu(Uk(i),S(i); end if(Z(i)=2) Uk(i)=dead(Uk(i),S(i); end if(Z(i)=3) Uk(i),Ubb(
8、i)=backlash(Ubb(i),Uk(i),Ub(i),S(i); end end end Udot=(Uk-Ub)/h; Uf=2*Uk-Ub; X=FI.*X+FIM.*Uk+FIJ.*Udot; Yb=Y; Y=FIC.*X+FID.*Uf; for i=1:n if(Z(i)=0) if (Z(i)=4) Y(i)=satu(Y(i),S(i); end if(Z(i)=5) Y(i)=dead(Y(i),S(i); end if(Z(i)=6) Y(i),Ubb(i)=backlash(Ubb(i),Y(i),Yb(i),S(i); end end endendy=y,Y(no
9、ut);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所示,编写程序实现对该系统的仿真分析。(提示:连续部分按环节离散化考虑)图中,为典型数字PID控制器;=0.65为比例系数;=0.7为积分时间常数;=0.2为微分时间常数;为具有纯滞后特性的典型二阶控制对象;。解:在控制对象前引入零阶保持器,将连续环节部分按环节离散化:= 设,为简化运算及编程,取为T的整数倍=对上式进行Z逆变换,得到由此可编写仿真程
10、序。在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;%系统初始值为:E=zeros(1,3);U=zeros(1,2+T3/T+1);Y=zero
11、s(1,2+T3/h+1);R=1;yk=0;yt=0;t=0;%仿真迭代运算:for K1=1:Tf/T ek=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/h yk=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); end yt=yt,yk; t=t,K1*T;end%输出波形: plot(t,yt)运行结果为:此题可以用SIMULINK仿真进行验证:建立SIMULINK仿真模型:运行结果为: