MATLAB语言与控制系统仿真控制系统的分析方法.ppt
CH4、控制系统的分析方法,早期的控制系统分析过程复杂而耗时,如想得到一个系统的冲激响应曲线,首先需要编写一个求解微分方程的子程序,然后将已经获得的系统模型输入计算机,通过计算机的运算获得冲激响应的响应数据,然后再编写一个绘图程序,将数据绘制成可供工程分析的响应曲线。MATLAB控制系统工具箱和SIMULINK辅助环境的出现,给控制系统分析带来了福音。控制系统的分析包括系统的稳定性分析、时域分析、频域分析及根轨迹分析。,http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/,第一节 控制系统的稳定性分析,对于连续时间系统,如果闭环极点全部在S平面左半平面,则系统是稳定的。对于离散时间系统,如果系统全部极点都位于Z平面的单位圆内,则系统是稳定的。若连续时间系统的全部零极点都位于S左半平面;或若离散时间系统的全部零极点都位于Z平面单位圆内,则系统是最小相位系统。,一、系统稳定及最小相位系统判据,http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/http:/,2、直接判别MATLAB提供了直接求取系统所有零极点的函数,因此可以直接根据零极点的分布情况对系统的稳定性及是否为最小相位系统进行判断。,二、系统稳定及最小相位系统的判别方法,1、间接判别(工程方法)劳斯判据:劳斯表中第一列各值严格为正,则系统稳定,如果劳斯表第一列中出现小于零的数值,系统不稳定。胡尔维茨判据:当且仅当由系统分母多项式构成的胡尔维茨矩阵为正定矩阵时,系统稳定。,例exp4_1.m 已知某系统的模型如右所示:,要求判断系统的稳定性及系统是否为最小相位系统。,例exp4_2.m系统模型如下所示,判断系统的稳定性,以及系统是否为最小相位系统。,ii=find(条件式)用来求取满足条件的向量的下标向量,以列向量表示。,例如 exp4_1.m中的条件式为real(p0),其含义就是找出极点向量p中满足实部的值大于0的所有元素下标,并将结果返回到ii向量中去。这样如果找到了实部大于0的极点,则会将该极点的序号返回到ii下。如果最终的结果里ii的元素个数大于0,则认为找到了不稳定极点,因而给出系统不稳定的提示,若产生的ii向量的元素个数为0,则认为没有找到不稳定的极点,因而得出系统稳定的结论。,pzmap(p,z)根据系统已知的零极点p和z绘制出系统的零极点图,第二节 控制系统的时域分析,一个动态系统的性能常用典型输入作用下的响应来描述。响应是指零初始值条件下某种典型的输入函数作用下对象的响应,控制系统常用的输入函数为单位阶跃函数和脉冲激励函数(即冲激函数)。在MATLAB的控制系统工具箱中提供了求取这两种输入下系统响应的函数。,一、时域分析的一般方法,求取系统单位阶跃响应:step()求取系统的冲激响应:impulse(),1、step()函数的用法 exp4_3_.m,y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵。,y,x,t=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。,如果对具体的响应值不感兴趣,而只想绘制系统的阶跃响应曲线,可调用以下的格式:step(num,den);step(num,den,t);step(A,B,C,D,iu,t);step(A,B,C,D,iu);,线性系统的稳态值可以通过函数dcgain()来求取,其调用格式为:dc=dcgain(num,den)或dc=dcgain(a,b,c,d),y,x,t=step(num,den):此时时间向量t由系统模型的特性自动生成,状态变量x返回为空矩阵。,2、impulse()函数的用法,求取脉冲激励响应的调用方法与step()函数基本一致。y=impulse(num,den,t);y,x,t=impulse(num,den);y,x,t=impulse(A,B,C,D,iu,t)impulse(num,den);impulse(num,den,t)impulse(A,B,C,D,iu);impulse(A,B,C,D,iu,t),仿真时间t的选择:对于典型二阶系统根据其响应时间的估算公式 可以确定。对于高阶系统往往其响应时间很难估计,一般采用试探的方法,把t选大一些,看看响应曲线的结果,最后再确定其合适的仿真时间。一般来说,先不指定仿真时间,由MATLAB自己确定,然后根据结果,最后确定合适的仿真时间。在指定仿真时间时,步长的不同会影响到输出曲线的光滑程度,一般不易取太大。例exp4_6_.m,二、常用时域分析函数,时间响应探究系统对输入和扰动在时域内的瞬态行为,系统特征如:上升时间、调节时间、超调量和稳态误差都能从时间响应上反映出来。MATLAB除了提供前面介绍的对系统阶跃响应、冲激响应等进行仿真的函数外,还提供了大量对控制系统进行时域分析的函数,如:covar:连续系统对白噪声的方差响应initial:连续系统的零输入响应lsim:连续系统对任意输入的响应对于离散系统只需在连续系统对应函数前加d就可以,如dstep,dimpulse等。它们的调用格式与step、impulse类似,可以通过help命令来察看自学。,三、时域分析应用实例,MATLAB的step()和impulse()函数本身可以处理多输入多输出的情况,因此编写MATLAB程序并不因为系统输入输出的增加而变得复杂。,第三节 控制系统的频域分析,频率响应是指系统对正弦输入信号的稳态响应,从频率响应中可以得出带宽、增益、转折频率、闭环稳定性等系统特征。频率特性是指系统在正弦信号作用下,稳态输出与输入之比对频率的关系特性。频率特性函数与传递函数有直接的关系,记为:,一、频域分析的一般方法,求取系统对数频率特性图(波特图):bode()求取系统奈奎斯特图(幅相曲线图或极坐标图):nyquist(),频域分析法是应用频率特性研究控制系统的一种典型方法。采用这种方法可直观地表达出系统的频率特性,分析方法比较简单,物理概念比较明确,对于诸如防止结构谐振、抑制噪声、改善系统稳定性和暂态性能等问题,都可以从系统的频率特性上明确地看出其物理实质和解决途经。通常将频率特性用曲线的形式进行表示,包括对数频率特性曲线和幅相频率特性曲线简称幅相曲线,MATLAB提供了绘制这两种曲线的函数。,1、对数频率特性图(波特图)exp4_10.m exp4_10_.m,对数频率特性图包括了对数幅频特性图和对数相频特性图。横坐标为频率w,采用对数分度,单位为弧度/秒;纵坐标均匀分度,分别为幅值函数20lgA(w),以dB表示;相角,以度表示。,MATLAB提供了函数bode()来绘制系统的波特图,其用法如下:,bode(a,b,c,d):自动绘制出系统的一组Bode图,它们是针对连续状态空间系统a,b,c,d的每个输入的Bode图。其中频率范围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。bode(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的波特图。bode(num,den):可绘制出以连续时间多项式传递函数表示的系统的波特图。bode(a,b,c,d,iu,w)或bode(num,den,w):可利用指定的角频率矢量绘制出系统的波特图。当带输出变量mag,pha,w或mag,pha引用函数时,可得到系统波特图相应的幅值mag、相角pha及角频率点w矢量或只是返回幅值与相角。相角以度为单位,幅值可转换为分贝单位:magdb=20log10(mag),2、奈奎斯特图(幅相频率特性图)exp4_11.m exp4_11_.m,对于频率特性函数G(jw),给出w从负无穷到正无穷的一系列数值,分别求出Im(G(jw)和Re(G(jw)。以Re(G(jw)为横坐标,Im(G(jw)为纵坐标绘制成为极坐标频率特性图。,MATLAB提供了函数nyquist()来绘制系统的极坐标图,其用法如下:,nyquist(a,b,c,d):绘制出系统的一组Nyquist曲线,每条曲线相应于连续状态空间系统a,b,c,d的输入/输出组合对。其中频率范围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。nyquist(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的极坐标图。nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。nyquist(a,b,c,d,iu,w)或nyquist(num,den,w):可利用指定的角频率矢量绘制出系统的极坐标图。当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变化方向,负无穷到正无穷)。当带输出变量re,im,w引用函数时,可得到系统频率特性函数的实部re和虚部im及角频率点w矢量(为正的部分)。可以用plot(re,im)绘制出对应w从负无穷到零变化的部分。,二、常用频域分析函数,MATLAB除了提供前面介绍的基本频域分析函数外,还提供了大量在工程实际中广泛应用的库函数,由这些函数可以求得系统的各种频率响应曲线和 特征值。如:,margin:求幅值裕度和相角裕度及对应的转折频率freqs:模拟滤波器特性nichols:求连续系统的尼科尔斯频率响应曲线(即对数幅相曲线)ngrid:尼科尔斯方格图,margin()函数 exp4_12.m exp4_12_.m,margin函数可以从频率响应数据中计算出幅值裕度、相角裕度以及对应的频率。幅值裕度和相角裕度是针对开环SISO系统而言,它指示出系统闭环时的相对稳定性。当不带输出变量引用时,margin可在当前图形窗口中绘制出带有裕量及相应频率显示的Bode图,其中幅值裕度以分贝为单位。,幅值裕度是在相角为-180度处使开环增益为1的增益量,如在-180度相频处的开环增益为g,则幅值裕度为1/g;若用分贝值表示幅值裕度,则等于:-20*log10(g)。类似地,相角裕度是当开环增益为1.0时,相应的相角与180度角的和。margin(mag,phase,w):由bode指令得到的幅值mag(不是以dB为单位)、相角phase及角频率w矢量绘制出带有裕量及相应频率显示的bode图。margin(num,den):可计算出连续系统传递函数表示的幅值裕度和相角裕度并绘制相应波特图。类似,margin(a,b,c,d)可以计算出连续状态空间系统表示的幅值裕度和相角裕度并绘制相应波特图。gm,pm,wcg,wcp=margin(mag,phase,w):由幅值mag(不是以dB为单位)、相角phase及角频率w矢量计算出系统幅值裕度和相角裕度及相应的相角交界频率wcg、截止频率wcp,而不直接绘出Bode图曲线。,freqs()函数 exp4_13.m,freqs用于计算由矢量a和b构成的模拟滤波器H(s)=B(s)/A(s)的幅频响应。,h=freqs(b,a,w)用于计算模拟滤波器的幅频响应,其中实矢量w用于指定频率值,返回值h为一个复数行向量,要得到幅值必须对它取绝对值,即求模。h,w=freqs(b,a)自动设定200个频率点来计算频率响应,这200个频率值记录在w中。h,w=freqs(b,a,n)设定n个频率点计算频率响应。不带输出变量的freqs函数,将在当前图形窗口中绘制出幅频和相频曲线,其中幅相曲线对纵坐标与横坐标均为对数分度。,三、频域分析应用实例,Nyquist曲线是根据开环频率特性在复平面上绘出的幅相轨迹,根据开环的Nyquist曲线,可以判断闭环系统的稳定性。系统稳定的充要条件为:Nyquist曲线按逆时针包围临界点(-1,j0)的圈数R,等于开环传递函数位于s右半平面的极点数P,否则闭环系统不稳定,闭环正实部特征根个数Z=P-R。若刚好过临界点,则系统临界稳定。,Pade函数可以近似表示延时环节e(-st),它的调用格式为:(num,den)=pade(t,n),产生最佳逼近时延t秒的n阶传递函数形式。(a,b,c,d)=pade(t,n),则产生的是n阶SISO的状态空间模型。,第四节 控制系统的根轨迹分析,所谓根轨迹是指,当开环系统某一参数从零变到无穷大时,闭环系统特征方程的根在s平面上的轨迹。一般来说,这一参数选作开环系统的增益K,而在无零极点对消时,闭环系统特征方程的根就是闭环传递函数的极点。根轨迹分析方法是分析和设计线性定常控制系统的图解方法,使用十分简便。利用它可以对系统进行各种性能分析,例exp4_18.m,一、根轨迹分析方法的概念,(1)稳定性当开环增益K从零到无穷大变化时,图中的根轨迹不会越过虚轴进入右半s平面,因此这个系统对所有的K值都是稳定的。如果根轨迹越过虚轴进入右半s平面,则其交点的K值就是临界稳定开环增益。(2)稳态性能开环系统在坐标原点有一个极点,因此根轨迹上的K值就是静态速度误差系数,如果给定系统的稳态误差要求,则可由根轨迹确定闭环极点容许的范围。(3)动态性能当00.5时,闭环极点为复数极点,系统为欠阻尼系统,单位阶跃响应为阻尼振荡过程,且超调量与K成正比。,二、根轨迹分析函数,通常来说,绘制系统的根轨迹是很繁琐的事情,因此在教科书中介绍的是一种按照一定规则进行绘制的概略根轨迹。在MATLAB中,专门提供了绘制根轨迹的有关函数。,pzmap:绘制线性系统的零极点图rlocus:求系统根轨迹。rlocfind:计算给定一组根的根轨迹增益。sgrid:在连续系统根轨迹图和零极点图中绘制出阻尼系数和自然频率栅格。,1、零极点图绘制 exp4_19.m,MATLAB提供了函数pzmap()来绘制系统的零极点图,其用法如下:,p,z=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。p,z=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s复平面上绘制出系统对应的零极点位置,极点用表示,零点用o表示。pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s复平面上绘制出对应的零极点位置,极点用表示,零点用o表示。,2、根轨迹图绘制 exp4_20.m,MATLAB提供了函数rlocus()来绘制系统的根轨迹图,其用法如下:,rlocus(a,b,c,d)或者rlocus(num,den):根据SISO开环系统的状态空间描述模型和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。rlocus(a,b,c,d,k)或rlocus(num,den,k):通过指定开环增益k的变化范围来绘制系统的根轨迹图。r=rlocus(num,den,k)或者r,k=rlocus(num,den):不在屏幕上直接绘出系统的根轨迹图,而根据开环增益变化矢量k,返回闭环系统特征方程1k*num(s)/den(s)=0的根r,它有length(k)行,length(den)-1列,每行对应某个k值时的所有闭环极点。或者同时返回k与r。若给出传递函数描述系统的分子项num为负,则利用rlocus函数绘制的是系统的零度根轨迹。(正反馈系统或非最小相位系统),3、rlocfind()函数,MATLAB提供了函数rlocfind()来找出给定的一组根(闭环极点)对应的根轨迹增益。其用法如下:,k,p=rlocfind(a,b,c,d)或者k,p=rlocfind(num,den)它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k为对应选择点处根轨迹开环增益;p为此点处的系统闭环特征根。不带输出参数项k,p时,同样可以执行,只是此时只将k的值返回到缺省变量ans中。,4、sgrid()函数,sgrid:在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn、阻尼比矢量z对应的格线。sgrid(new):是先清屏,再画格线。sgrid(z,wn):则绘制由用户指定的阻尼比矢量z、自然振荡频率wn的格线。,三、根轨迹分析应用实例,例exp4_23.m,例exp4_24.m,控制系统的分析是进行控制系统设计的基础,同时也是工程实际当中解决问题的主要方法,因而对控制系统的分析在控制系统仿真中具有举足轻重的作用。通过求取系统的零极点增益模型直接获得系统的零极点,从而可以直接对控制系统的稳定性及是否为最小相位系统作出判断。控制系统的经典分析方法(时域、频域分析)是目前控制系统界进行科学研究的主要方法,是进行控制系统设计的基础,要求熟练掌握单位阶跃响应、波特图等常用命令的使用。根轨迹分析是求解闭环特征方程根的简单的图解方法,要求熟练掌握根轨迹的绘制。,本章小结,