控制系统的设计与仿真MATLAB控制系统设计与仿真教学课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《控制系统的设计与仿真MATLAB控制系统设计与仿真教学课件.pptx》由会员分享,可在线阅读,更多相关《控制系统的设计与仿真MATLAB控制系统设计与仿真教学课件.pptx(238页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1 系统建模与仿真框图的创建 问题描述众所周知,现实世界中存在着各种不同的控制系统。对于线性时不变(LTI)系统,一般可以分为连续和离散系统。MATLAB中为用户提供了丰富的针对各种系统的建模手段。图4.1显示了MATLAB中各种线性时不变(LTI)系统之间的转换关系。第1页/共238页图4.1 连续与离散系统的关系示意图 第2页/共238页图4.1中显示了MATLAB可以完成离散和连续系统的建模,并且同一系统可以表示成连续系统,也可以表示成离散系统,它们之间可以以状态方程形式进行转化。这一节将结合一个具体实例来演示MATLAB中各种模型创建和相互之间进行转化的方法,以及如何用Simuli
2、nk进行连续系统的仿真。首先给出实例的源程序MODLDEMO.M,然后根据不同的主题结合实例进行讲述。第3页/共238页例4.1对于MassSpringDashpot机械系统:(4.1)试建立该系统的连续和离散模型,并进行时域和频域仿真。解:程序源代码如下:%MODLDEMO.M 演示各种建模与仿真(时域和频域)技巧 clearall,closeall%程序开始,清空工作空间,关闭所有窗口 deletemodldemo.out,diarymodldemo.out%打开二进制文件 第4页/共238页disp(*MODLDEMO.OUT*DiaryFileforMODLDEMO.M),disp()
3、m=1%各种系统常数定义k=1%单位kg/s2c=%单位kg/s第5页/共238页%创建系统的状态空间模型disp(StateSpaceModels)km=k/m;A1=01;-km-c(1)/m,A2=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);第6页/共238页%仿真系统的脉冲和阶跃响应(时域)t=0:.2:15;y1=impulse(sys1s,t);y2=im
4、pulse(sys2s,t);y3=impulse(sys3s,t);y4=impulse(sys4s,t);figure(1)subplot(221),plot(t,y1,r),title(CriticalDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)subplot(222),plot(t,y2,r),title(OverDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)第7页/共238页subplot(223),plot(t,y3,r),title(UnderDamp
5、ingImpulse),gridxlabel(Time),ylabel(SystemResponse)subplot(224),plot(t,y4,r),title(NoDampingImpulse),gridxlabel(Time),ylabel(SystemResponse)第8页/共238页%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),yla
6、bel(SystemResponse)subplot(222),plot(t,y2,r),title(OverDampingStep),grid第9页/共238页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(hita
7、nykeytocontinue),pause第10页/共238页%在Matlab中进行模型转化。对于m=k=1,系统简化的传递函数为%G(s)=1/s2+cs+1=z(s)/p(s)disp(TransferFunctionForm)sys1t=tf(sys1s),sys2t=tf(sys2s)sys3t=tf(sys3s),sys4t=tf(sys4s)disp(hitanykeytocontinue),pause第11页/共238页%将传递函数形式转化成零极点形式disp(ZeroPoleGainForm)sys1z=zpk(sys1t),sys2z=zpk(sys2t)sys3z=zpk
8、(sys3t),sys4z=zpk(sys4t)disp(hitanykeytocontinue),pause%演示留数定理的使用disp(ResidueForm)n1,d1=tfdata(sys1t);n2,d2=tfdata(sys2t);n3,d3=tfdata(sys3t);n4,d4=tfdata(sys4t);第12页/共238页%注意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=
9、residue(n2,d2)r3,pr3,kr=residue(n3,d3),r4,pr4,kr=residue(n4,d4)disp(hitanykeytocontinue),pause第13页/共238页%进行频域仿真,这里使用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=nyquis
10、t(sys2s,w);%SS形式re2(:,1)=re(1,1,:);im2(:,1)=im(1,1,:);g2=re2+i*im2;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;第14页/共238页mag3=20*log10(abs(g3);phase3=angle(g3)*180/pi;re,im=nyquist(sys4t,w);%TF形式re4(:,1)=re(1,1,:);im4(:
11、,1)=im(1,1,:);g4=re4+i*im4;mag4=20*log10(abs(g4);phase4=angle(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)第15页/共238页subplot(223),semilogx(w
12、,mag3,r),title(UnderDamping),xlabel(frequency),ylabel(|G(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)第16页/共238页subpl
13、ot(222),semilogx(w,phase2,r),title(OverDamping),xlabel(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第17页/共238页%绘制系统Nichols图
14、(对数坐标形式)figure(5)subplot(221),plot(phase1,mag1,r+),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),第18页/共238页xlabel(angle),ylabel(
15、|G(jw)|indb),gtext(w=0)subplot(224),plot(phase4,mag4,r+),title(NoDamping),xlabel(angle),ylabel(|G(jw)|indb),gtext(w=0)disp(hitanykeytocontinue),pause第19页/共238页%绘制Nyquist图(实部-虚部形式)figure(6)subplot(221),plot(re1,im1,r+),title(CriticalDamping),xlabel(Real),ylabel(Imag),gtext(w=0)subplot(222),plot(re2,i
16、m2,r+),title(OverDamping),xlabel(Real),ylabel(Imag),gtext(w=0)第20页/共238页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第21页/共238页%直接使用Nyquist函数绘制Ny
17、quist图figure(7)subplot(2,2,1),nyquist(sys1s,w),title(CriticalDamping),subplot(2,2,2),nyquist(sys2s,w),title(OverDamping),subplot(2,2,3),nyquist(sys3s,w),title(UnderDamping),第22页/共238页subplot(2,2,4),nyquist(sys4s,w),title(NoDamping),disp(hitanykeytocontinue),disp(hitcntrl-ctogetoutofthefileforinterac
18、tiveanalysis),pause%使用Simulink框图(文件名为mdemosl.mdl,如图4.2所示)进行仿真clearall%清空所有内存第23页/共238页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%关闭二进制文件第24页/共238页图4.2 Mass Spring Dashpot系统仿真框图 第2
19、5页/共238页物理模型例4.1中研究的对象是一个简单的物质交换机械系统,可以用微分方程表示成(4.2)其中,y(t)是系统的瞬时交换的质量,k和c分别为比例常数。如果取状态变量x1=y和x2=dy/dt,则可以得到系统的状态方程形式:第26页/共238页可以看出,矩阵A、B、C和D可以看成LTI系统的标准状态方程形式,于是式(4.3)可以写成(4.3)第27页/共238页时域仿真一般对控制系统进行时域仿真可以采用impulse、step和lsim函数,这些函数用来处理系统的状态空间描述。例如,对于输入信号u(t),系统的动态仿真可表示成sys=ss(A,B,C,D)Y,T,X=lsim(sy
20、s,U,t,xo)第28页/共238页当然,这些函数也可以处理系统的频域表达形式,这时,LTI系统可以通过下式表示sys=tf(num,den)作为一个典型的例子,例4.1使用了impulse和step函数来仿真系统的时域特性。图4.3和图4.4分别为例4.1执行的仿真结果。第29页/共238页图4.3 典型二阶系统的脉冲响应曲线第30页/共238页图4.4 典型二阶系统的阶跃响应曲线 第31页/共238页模型转换LTI系统的频域描述可以用传递函数表示为Y(s)=G(s)U(s)(4.5)系统的传递函数矩阵为(4.6)对于例4.1研究的简单SISO机械系统,其传递函数可以写成简单的标量形式(4
21、.7)第32页/共238页但是对于多输入多输出(MIMO)系统而言,其传递函数描述就有些复杂了,这时MATLAB中的模型转换函数可以发挥作用,它可以完成系统在状态方程形式与传递函数形式之间的互换,同时也可以将传递函数形式转换成零极点-增益形式。相关的函数包括sys1=ss(A,B,C,D)sys2=tf(sys1)sys3=zpk(sys2)第33页/共238页我们也可以采用ssdata、tfdata和zpkdata等命令将存储在与一个指定LTI对象相联的数据结构中的信息抽取出来。例如num,den=tfdata(sys2)返回LTI对象sys2的分子和分母多项式系数,num与den为相应的元
22、胞数组,其行数为输出的维数,列数等于输入的维数。其中第i行第j列元素表示从第j个输入到第i个输出的传递函数。第34页/共238页另一种从数据结构中得到元胞数组的方法是使用MATLAB的celldisp命令。简单的显示数据的信息,可以使用如下的命令:fieldnames(sys2)num1=sys2.num,den1=sys2.dencelldisp(num1),celldisp(den1)也可以对零极点-增益形式完成显示的操作。例如Z,P,K=zpkdata(sys3)第35页/共238页将获取LTI系统sys3每一个IO通道的零极点和增益大小。元胞数组Z、P和矩阵K的行与列分别与输出和输入的
23、维数相同。其中第i行第j列元素表示从第j个输入到第i个输出传递函数的零极点和增益。对于单输入单输出(SISO)系统,其传递函数与零极点-增益形式可以简化成普通的分数形式,即(4.8)第36页/共238页留数定理我们也可以将系统写成几个分数相加的形式,例如对于SISO的机械系统,G(s)可以写成(4.9)(4.10)第37页/共238页r1,r2可以通过各种不同的方法计算得到。对于上述问题,MATLAB可用residue函数来完成这一运算,即r,p,k=residue(B,A)其中B和A为包含多项式系数的行向量,而r和p是包含留数和极点的列向量。如果B(s)比A(s)的维数大,则k(s)不为零。
24、第38页/共238页频域仿真系统的频域仿真在概念上是非常直观的,但是计算起来常常比较复杂。作为练习,读者可以针对不同的值,计算下面的表达式G(j)=CjI-A-1B+D(4.11)然后通常采用下列三种方法来绘制频域曲线:Bode图、Nichols图和Nyquist曲线。第39页/共238页MATLAB中的一些函数用来获取系统的频域信号。首先必须产生一个频率的向量。采样点的坐标通常采用对数形式,即从10d1到10d2共n个点,可以通过下面的命令来完成:w=logspace(d1,d2,n)bode和nyquist函数可以用来计算每一个频率所对应的G(j),即MAG,PHASE=bode(sys,
25、w)RE,IM=nyquist(sys,w)第40页/共238页图4.5典型二阶系统的Bode幅值曲线 第41页/共238页图4.6 典型二阶系统的Bode频率曲线 第42页/共238页图 4.7第43页/共238页图 4.8第44页/共238页仿真框图及系统建立许多设计系统都可以由一些基本的组件和框图中的反馈回路组成。在有些情况下,寻找系统的等价描述和相应的状态空间矩阵是比较困难的。幸运的是,我们可以借助MATLAB从系统的Simulink仿真框图直接建立它的状态空间描述。这些工作可以通过MATLAB中的控制工具箱或Simulink的图形仿真界面来完成。第45页/共238页为了演示这一过程,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制系统 设计 仿真 MATLAB 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内