控制系统的设计与仿真.ppt
《控制系统的设计与仿真.ppt》由会员分享,可在线阅读,更多相关《控制系统的设计与仿真.ppt(238页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 控制系统的设计与仿真第第4章章 控制系统的设计与仿真控制系统的设计与仿真 4.1 系统建模与仿真框图的创建系统建模与仿真框图的创建4.2 控制系统设计控制系统设计4.3 控制系统的时域仿真控制系统的时域仿真4.4 实例实例:倒摆系统的建模与仿真倒摆系统的建模与仿真 第4章 控制系统的设计与仿真4.1 系统建模与仿真框图的创建系统建模与仿真框图的创建 4.1.1问题描述众所周知,现实世界中存在着各种不同的控制系统。对于线性时不变(LTI)系统,一般可以分为连续和离散系统。MATLAB中为用户提供了丰富的针对各种系统的建模手段。图4.1显示了MATLAB中各种线性时不变(LTI)系统之间的
2、转换关系。第4章 控制系统的设计与仿真图4.1连续与离散系统的关系示意图第4章 控制系统的设计与仿真图4.1中显示了MATLAB可以完成离散和连续系统的建模,并且同一系统可以表示成连续系统,也可以表示成离散系统,它们之间可以以状态方程形式进行转化。这一节将结合一个具体实例来演示MATLAB中各种模型创建和相互之间进行转化的方法,以及如何用Simulink进行连续系统的仿真。首先给出实例的源程序MODLDEMO.M,然后根据不同的主题结合实例进行讲述。第4章 控制系统的设计与仿真例4.1对于MassSpringDashpot机械系统:(4.1)试建立该系统的连续和离散模型,并进行时域和频域仿真。
3、解:程序源代码如下:%MODLDEMO.M演示各种建模与仿真(时域和频域)技巧clearall,closeall%程序开始,清空工作空间,关闭所有窗口deletemodldemo.out,diarymodldemo.out%打开二进制文件第4章 控制系统的设计与仿真disp(*MODLDEMO.OUT*DiaryFileforMODLDEMO.M),disp()m=1%各种系统常数定义k=1%单位kg/s2c=2.02.51.20.0%单位kg/s第4章 控制系统的设计与仿真%创建系统的状态空间模型disp(StateSpaceModels)km=k/m;A1=01;-km-c(1)/m,A2
4、=01;-km-c(2)/mA3=01;-km-c(3)/m,A4=01;-km-c(4)/mB=01/m,C=10,D=0sys1s=ss(A1,B,C,D);sys2s=ss(A2,B,C,D);sys3s=ss(A3,B,C,D);sys4s=ss(A4,B,C,D);第4章 控制系统的设计与仿真%仿真系统的脉冲和阶跃响应(时域)t=0:.2:15;y1=impulse(sys1s,t);y2=impulse(sys2s,t);y3=impulse(sys3s,t);y4=impulse(sys4s,t);figure(1)subplot(221),plot(t,y1,r),title(
5、CriticalDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)subplot(222),plot(t,y2,r),title(OverDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)第4章 控制系统的设计与仿真subplot(223),plot(t,y3,r),title(UnderDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)subplot(224),plot(t,y4,r),title(NoDampin
6、gImpulse),gridxlabel(Time),ylabel(SystemResponse)第4章 控制系统的设计与仿真%y1=step(sys1s,t);y2=step(sys2s,t);y3=step(sys3s,t);y4=step(sys4s,t);figure(2)subplot(221),plot(t,y1,r),title(CriticalDampingStep),gridxlabel(Time),ylabel(SystemResponse)subplot(222),plot(t,y2,r),title(OverDampingStep),grid第4章 控制系统的设计与仿真
7、xlabel(Time),ylabel(SystemResponse)subplot(223),plot(t,y3,r),title(UnderDampingStep),gridxlabel(Time),ylabel(SystemResponse)subplot(224),plot(t,y4,r),title(NoDampingStep),gridxlabel(Time),ylabel(SystemResponse)disp(hitanykeytocontinue),pause第4章 控制系统的设计与仿真%在Matlab中进行模型转化。对于m=k=1,系统简化的传递函数为%G(s)=1/s2+
8、cs+1=z(s)/p(s)disp(TransferFunctionForm)sys1t=tf(sys1s),sys2t=tf(sys2s)sys3t=tf(sys3s),sys4t=tf(sys4s)disp(hitanykeytocontinue),pause第4章 控制系统的设计与仿真%将传递函数形式转化成零极点形式disp(ZeroPoleGainForm)sys1z=zpk(sys1t),sys2z=zpk(sys2t)sys3z=zpk(sys3t),sys4z=zpk(sys4t)disp(hitanykeytocontinue),pause%演示留数定理的使用disp(Res
9、idueForm)n1,d1=tfdata(sys1t);n2,d2=tfdata(sys2t);n3,d3=tfdata(sys3t);n4,d4=tfdata(sys4t);第4章 控制系统的设计与仿真%注意tfdata命令定义元胞数组%将元胞数组转化成向量形式n1=n11,d1=d11,n2=n21,d2=d21,n3=n31,d3=d31,n4=n41,d4=d41,%使用留数定理r1,pr1,kr=residue(n1,d1),r2,pr2,kr=residue(n2,d2)r3,pr3,kr=residue(n3,d3),r4,pr4,kr=residue(n4,d4)disp(h
10、itanykeytocontinue),pause第4章 控制系统的设计与仿真%进行频域仿真,这里使用nyquist函数(参考bode,freqs等函数)w=logspace(-2,2,100);re,im=nyquist(sys1s,w);%SS形式re1(:,1)=re(1,1,:);im1(:,1)=im(1,1,:);g1=re1+i*im1;mag1=20*log10(abs(g1);phase1=angle(g1)*180/pi;re,im=nyquist(sys2s,w);%SS形式re2(:,1)=re(1,1,:);im2(:,1)=im(1,1,:);g2=re2+i*im
11、2;mag2=20*log10(abs(g2);phase2=angle(g2)*180/pi;re,im=nyquist(sys3t,w);%TF形式re3(:,1)=re(1,1,:);im3(:,1)=im(1,1,:);g3=re3+i*im3;第4章 控制系统的设计与仿真mag3=20*log10(abs(g3);phase3=angle(g3)*180/pi;re,im=nyquist(sys4t,w);%TF形式re4(:,1)=re(1,1,:);im4(:,1)=im(1,1,:);g4=re4+i*im4;mag4=20*log10(abs(g4);phase4=angle
12、(g4)*180/pi;%幅值曲线figure(3)subplot(221),semilogx(w,mag1,r),title(CriticalDamping),xlabel(frequency),ylabel(|G(jw)|indb)subplot(222),semilogx(w,mag2,r),title(OverDamping),xlabel(frequency),ylabel(|G(jw)|indb)第4章 控制系统的设计与仿真subplot(223),semilogx(w,mag3,r),title(UnderDamping),xlabel(frequency),ylabel(|G(
13、jw)|indb)subplot(224),semilogx(w,mag4,r),title(NoDamping),xlabel(frequency),ylabel(|G(jw)|indb)disp(hitanykeytocontinue),pause%频率曲线figure(4)subplot(221),semilogx(w,phase1,r),title(CriticalDamping),xlabel(frequency),ylabel(angle)第4章 控制系统的设计与仿真subplot(222),semilogx(w,phase2,r),title(OverDamping),xlabe
14、l(frequency),ylabel(angle)subplot(223),semilogx(w,phase3,r),title(UnderDamping),xlabel(frequency),ylabel(angle)subplot(224),semilogx(w,phase4,r),title(NoDamping),xlabel(frequency),ylabel(angle)disp(hitanykeytocontinue),pause第4章 控制系统的设计与仿真%绘制系统Nichols图(对数坐标形式)figure(5)subplot(221),plot(phase1,mag1,r+
15、),title(CriticalDamping),xlabel(angle),ylabel(|G(jw)|indb),gtext(w=0)subplot(222),plot(phase2,mag2,r+),title(OverDamping),xlabel(angle),ylabel(|G(jw)|indb),gtext(w=0)subplot(223),plot(phase3,mag3,r+),title(UnderDamping),第4章 控制系统的设计与仿真xlabel(angle),ylabel(|G(jw)|indb),gtext(w=0)subplot(224),plot(phas
16、e4,mag4,r+),title(NoDamping),xlabel(angle),ylabel(|G(jw)|indb),gtext(w=0)disp(hitanykeytocontinue),pause第4章 控制系统的设计与仿真%绘制Nyquist图(实部-虚部形式)figure(6)subplot(221),plot(re1,im1,r+),title(CriticalDamping),xlabel(Real),ylabel(Imag),gtext(w=0)subplot(222),plot(re2,im2,r+),title(OverDamping),xlabel(Real),yl
17、abel(Imag),gtext(w=0)第4章 控制系统的设计与仿真subplot(223),plot(re3,im3,r+),title(UnderDamping),xlabel(Real),ylabel(Imag),gtext(w=0)subplot(224),plot(re4,im4,r+),title(NoDamping),xlabel(Real),ylabel(Imag),gtext(w=0)disp(hitanykeytocontinue),pause第4章 控制系统的设计与仿真%直接使用Nyquist函数绘制Nyquist图figure(7)subplot(2,2,1),nyq
18、uist(sys1s,w),title(CriticalDamping),subplot(2,2,2),nyquist(sys2s,w),title(OverDamping),subplot(2,2,3),nyquist(sys3s,w),title(UnderDamping),第4章 控制系统的设计与仿真subplot(2,2,4),nyquist(sys4s,w),title(NoDamping),disp(hitanykeytocontinue),disp(hitcntrl-ctogetoutofthefileforinteractiveanalysis),pause%使用Simulin
19、k框图(文件名为mdemosl.mdl,如图4.2所示)进行仿真clearall%清空所有内存第4章 控制系统的设计与仿真m=1,k=1,c=1.2%定义常数disp(DatafromgraphicalSimulinkmodel)%计算线性化模型A,B,C,D=linmod(mdemosl),syss=ss(A,B,C,D);sysz1=zpk(syss),syssm=minreal(syss),sysz2=zpk(syssm)diaryoff%关闭二进制文件第4章 控制系统的设计与仿真图4.2MassSpringDashpot系统仿真框图第4章 控制系统的设计与仿真4.1.2物理模型例4.1
20、中研究的对象是一个简单的物质交换机械系统,可以用微分方程表示成(4.2)其中,y(t)是系统的瞬时交换的质量,k和c分别为比例常数。如果取状态变量x1=y和x2=dy/dt,则可以得到系统的状态方程形式:第4章 控制系统的设计与仿真可以看出,矩阵A、B、C和D可以看成LTI系统的标准状态方程形式,于是式(4.3)可以写成(4.3)第4章 控制系统的设计与仿真4.1.3时域仿真一般对控制系统进行时域仿真可以采用impulse、step和lsim函数,这些函数用来处理系统的状态空间描述。例如,对于输入信号u(t),系统的动态仿真可表示成sys=ss(A,B,C,D)Y,T,X=lsim(sys,U
21、,t,xo)第4章 控制系统的设计与仿真当然,这些函数也可以处理系统的频域表达形式,这时,LTI系统可以通过下式表示sys=tf(num,den)作为一个典型的例子,例4.1使用了impulse和step函数来仿真系统的时域特性。图4.3和图4.4分别为例4.1执行的仿真结果。第4章 控制系统的设计与仿真图4.3典型二阶系统的脉冲响应曲线第4章 控制系统的设计与仿真图4.4典型二阶系统的阶跃响应曲线第4章 控制系统的设计与仿真4.1.4模型转换LTI系统的频域描述可以用传递函数表示为Y(s)=G(s)U(s)(4.5)系统的传递函数矩阵为(4.6)对于例4.1研究的简单SISO机械系统,其传递
22、函数可以写成简单的标量形式(4.7)第4章 控制系统的设计与仿真但是对于多输入多输出(MIMO)系统而言,其传递函数描述就有些复杂了,这时MATLAB中的模型转换函数可以发挥作用,它可以完成系统在状态方程形式与传递函数形式之间的互换,同时也可以将传递函数形式转换成零极点-增益形式。相关的函数包括sys1=ss(A,B,C,D)sys2=tf(sys1)sys3=zpk(sys2)第4章 控制系统的设计与仿真我们也可以采用ssdata、tfdata和zpkdata等命令将存储在与一个指定LTI对象相联的数据结构中的信息抽取出来。例如num,den=tfdata(sys2)返回LTI对象sys2的
23、分子和分母多项式系数,num与den为相应的元胞数组,其行数为输出的维数,列数等于输入的维数。其中第i行第j列元素表示从第j个输入到第i个输出的传递函数。第4章 控制系统的设计与仿真另一种从数据结构中得到元胞数组的方法是使用MATLAB的celldisp命令。简单的显示数据的信息,可以使用如下的命令:fieldnames(sys2)num1=sys2.num,den1=sys2.dencelldisp(num1),celldisp(den1)也可以对零极点-增益形式完成显示的操作。例如Z,P,K=zpkdata(sys3)第4章 控制系统的设计与仿真将获取LTI系统sys3每一个IO通道的零极
24、点和增益大小。元胞数组Z、P和矩阵K的行与列分别与输出和输入的维数相同。其中第i行第j列元素表示从第j个输入到第i个输出传递函数的零极点和增益。对于单输入单输出(SISO)系统,其传递函数与零极点-增益形式可以简化成普通的分数形式,即(4.8)第4章 控制系统的设计与仿真4.1.5留数定理我们也可以将系统写成几个分数相加的形式,例如对于SISO的机械系统,G(s)可以写成(4.9)(4.10)第4章 控制系统的设计与仿真r1,r2可以通过各种不同的方法计算得到。对于上述问题,MATLAB可用residue函数来完成这一运算,即r,p,k=residue(B,A)其中B和A为包含多项式系数的行向
25、量,而r和p是包含留数和极点的列向量。如果B(s)比A(s)的维数大,则k(s)不为零。第4章 控制系统的设计与仿真4.1.6频域仿真系统的频域仿真在概念上是非常直观的,但是计算起来常常比较复杂。作为练习,读者可以针对不同的值,计算下面的表达式G(j)=CjI-A-1B+D(4.11)然后通常采用下列三种方法来绘制频域曲线:Bode图、Nichols图和Nyquist曲线。第4章 控制系统的设计与仿真MATLAB中的一些函数用来获取系统的频域信号。首先必须产生一个频率的向量。采样点的坐标通常采用对数形式,即从10d1到10d2共n个点,可以通过下面的命令来完成:w=logspace(d1,d2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制系统 设计 仿真
限制150内