1、1,本章内容(1) 利用MATLAB分析系统的稳定性;(2) 利用MATLAB求取系统在典型和任意输入信号作用下的时域响应;(3) 利用MATLAB绘制系统的根轨迹,在根轨迹上可确定任意点的根轨迹增益K值,从而得到系统稳定的根轨迹增益K值范围;(4) 利用MATLAB绘制系统的Bode图、Nichols图和Nyquist图等,并求取系统的幅值裕量和相位裕量;(5) 利用MATLAB分析具有时间延迟系统的频率特性;(6) 求取频率响应数据,且根据频率响应数据辩识系统的模型参数(7) 利用MATLAB分析系统的能控性和能观测性,并能对不完全能控或不完全能观测的系统进行结构分解。,第7章 控制系统的
2、计算机辅助分析,2,7.1 控制系统的稳定性分析,1.利用极点判断系统的稳定性判断一个线性系统稳定性的一种最有效的方法是直接求出系统所有的极点,然后根据极点的分布情况来确定系统的稳定性,对于极点的求取我们在上节中已作过介绍,下面举例说明其判断方法。 2.利用特征值判断系统的稳定性系统的特征方程 |sI-A|=sn+a1sn-1+an-1s+an0 的根称为系统的特征值,即系统的闭环极点。当然判断系统的稳定性同样可利用特征值来判断。,3,3.用李雅普诺夫第二法来判断系统的稳定性,线性定常连续系统(7-2)在平衡状态xe=0处,渐近稳定的充要条件是:对任给的一个正定对称矩阵Q,存在一个正定的对称矩
3、阵P,且满足矩阵方程ATPPAQ 而标量函数V(x)=xTPx是这个系统的一个二次型形式的李雅普诺夫函数。MATLAB提供了李雅普诺夫方程的求解函数lyap( ),其调用格式为P=lyap(A ,Q),4,7.2 控制系统的时域分析,1.任意信号函数 生成任意信号函数gensig( )的调用格式为u,t=gensig(type,Ta) 或 u,t=gensig(type,Ta,Tf,T) 其中 第一式产生一个类型为type的信号序列u(t),周期为Ta,type为以下标识字符串之一:sin正弦波;square方波;pulse脉冲序列;第二式同时定义信号序列u(t)的持续时间Tf和采样时间T。,
4、5,例7-5 生成一个周期为5秒,持续时间为30秒,采样时间为0.1秒的方波。 解 Matlab窗口中执行以下命令可得图7-2所示结果。 u,t=gensig(square,5,30,0.1); plot(t,u) axis(0,30 0.5 1.5),6,图7-2,7,2.连续系统的单位阶跃响应单位阶跃响应函数step( )的调用格式为y,x,t=step(num,den,t) 或 y,x,t=step(A,B,C,D,iu,t) 式中 t为选定的仿真时间向量,函数返回值y为系统在各个仿真时刻的输出所组成的矩阵;而x为自动选择的状态变量的时间响应数据。如只想绘制出系统的阶跃响应曲线,则可以由
5、如下的格式调用此函数step(num,den,t)step(A,B,C,D,t),8,例7-7 对于典型二阶系统试绘制出无阻尼自然振荡频率n=6,阻尼比分别为0.2,0.4,1.0,2.0时系统的单位阶跃响应曲线。,9,解 MATLAB程序为 ex7_7.m执行后可得如图7-4所示 的单位阶跃响应曲线。,图7-4,10,3.离散系统的单位阶跃响应离散系统的单位阶跃响应函数dstep( )的调用格式为y,x=dstep(num,den,n) 或 y,x=dstep(G,H,C,D,iu,n) 式中 n为选定的取样点个数,当n省略时,取样点数由函数自动选取,其余参数定义同前。,11,例7-9 已知
6、二阶离散系统试求其单位阶跃响应。 解 MATLAB程序为 ex7_9.m执行后得如图7-6所示的 单位阶跃响应曲线。,图7-6,12,4.单位脉冲响应 单位脉冲响应函数impulse( ) 和dimpulse( )与单位阶跃函数step( )和dstep( )的调用格式完全一致,这里就不一一列写了。,13,5.系统的零输入响应对于连续系统由初始状态所引引起的响应,即零输入响应,可由函数initial( )来求得,其调用格式为y,x,t=initial(A,B,C,D,x0) 或 y,x,t=initial(A,B,C,D,x0,t) 其中 x0为初始状态,其余参数定义同前。,14,6. 任意输
7、入函数的响应连续系统对任意输入函数的响应可利用MATLAB的函数lsim( )求取,其调用格式为y,x=lsim(num,den, u,t) 或 y,x=lsim(A,B,C,D,iu,u,t) 其中 u为给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等。其他用法同step( )函数。,15,7.3 根轨迹法,所谓根轨迹是指,当开环系统的某一参数从零变化到无穷大时,闭环系统的特征方程根在s平面上所形成的轨迹。一般地,将这一参数选作开环系统的增益K,而在无零极点对消时,闭环系统特征方程的根就是闭环传递函数的极点。,16,1.绘制系统的零极点图pzma
8、p( )函数可绘制系统的零极点图,其调用格式为p,z=pzmap(A,B,C,D) 或 p,z=pzmap(p,z),p,z=pzmap(num, den) 其中 列向量P为系统极点位置,列向量z为系统的零点位置。可通过pzmap(p,z)绘制出零极点图,图中的极点用 “”表示,零点用 “o”表示。,17,2.绘制系统的根轨迹,对于图7-12所示的负反馈系统,其特征方程可表示为或 利用rlocus( )函数可绘制出当开环增益K由0至变化时,闭环系统的特征根在s平面变化的轨迹,该函数的调用格式为r,K=rlocus(num,den) r,K=rlocus(num,den, K) 或 r,K=rl
9、ocus(A,B,C,D)r,K=rlocus(A,B,C,D, K) 其中 返回值r为系统的闭环极点, K为相应的增益。,18,在系统分析过程中,常常希望确定根轨迹上某一点处的增益值K,这时可利用MATLAB中的rlocfind( )函数,在使用此函数前要首先得到系统的根轨迹,然后再执行如下命令K,poles=rlocfind(num,den) 或 K,poles=rlocfind(A,B,C,D)执行上述命令后,将在屏幕上的图形中生成一个十字光标,使用鼠标移动它至所希望的位置,然后敲击鼠标左键即可得到该极点的位置坐标值poles以及它所对应的增益K值。,19,例7-14 已知某负反馈系统的
10、开环传递函数为试绘制系统根轨迹,并分析系统稳定的K值范围。 解 MATLAB的程序为 ex7_14.m,20,执行以上程序,并移动鼠标到根轨迹与虚轴的交点处单击鼠标左键后可得如图7-12所示的根轨迹和如下结果,selected_point = 0.0000 - 1.4142i K =6.0000 poles =-3.0000 0.0000 +1.4142i 0.0000 - 1.4142i,图7-12,21,由此可见根轨迹与虚轴交点处的增益K=6,这说明当K 6时,系统不稳定;利用rlocfind( )函数也可找出根轨迹从实轴上的分离点处的增益K =0.38, 这说明当0 K 0.38时,系统
11、为单调衰减稳定,当0.38 K 6时系统为振荡衰减稳定的。,22,7.4 控制系统的频域分析,频率响应研究系统的频率行为,从频率响应中可得带宽、增益、转折频率和闭环系统稳定性等系统特征。MATLAB的控制系统工具箱提供了多种求取线性系统频率响应曲线的函数,如表7-5所示。,23,1. 产生频率向量频率向量可由logspace( )函数来构成。此函数的调用格式为 =logspace(m,n,npts) 此命令可生成一个以10为底的指数向量(10m10n ),点数由npts任意选定。,24,2.系统的伯德图(Bode图),连续系统的伯德图可利用bode( )函数来绘制,其调用格式为mag,phas
12、e,=bode(num,den)mag,phase,=bode(num,den,)mag,phase,=bode(A,B,C,D)mag,phase,=bode(A,B,C,D,iu)mag,phase,=bode(A,B,C,D,iu,) 式中 num,den和A,B,C,D分别为系统的开环传递函数和状态方程的参数,而为频率点构成的向量。,25,有了这些数据就可以利用下面的MATLAB命令subplot(2,1,1);semilogx(w,20*log10(mag)subplot(2,1,2);semilogx(w,phase)在同一个窗口上同时绘制出系统的Bode图了,其中前一条命令中对幅
13、值向量mag求取分贝(dB)值。,26,如果只想绘制出系统的Bode图,而对获得幅值和相位的具体数值并不感兴趣,则可以采用如下简单的调用格式bode(num,den,)bode(A,B,C,D,iu,) 或更简单地bode(num,den) bode(A,B,C,D,iu),27,例7-16 已知二阶系统的开环传递函数为绘制出取不同值时,频率在0.110之间变化的Bode图”改为“绘制出当n=3和分别取0.2,0.4,0.6,0.8,1.0时系统的Bode图 。 解 当n=3,取0.2,0.4,0.6,0.8,1.0时二阶系统的Bode图可直接采用bode( )函数得到。MATLAB程序为 E
14、x7_16.m,28,执行后得如图7-14所示Bode图。 从图中可以看出,当0时,相角趋于0,当时,相角趋于 -1800,当=n时,相角等于 -900,此时的幅值也最大。,图7-14,29,3.幅值裕量和相位裕量在判断系统稳定性时,常常需要求出系统的幅值裕量和相位裕量。利用MATLAB控制系统工具箱提供的margin( )函数可以求出系统的幅值裕量与相位裕量,该函数的调用格式为Gm,Pm,Wcg,Wcp=margin(num,den) 或 Gm,Pm,Wcg,Wcp=margin(A,B,C,D) 式中 Gm和Pm分别为系统的幅值裕量和相位裕量,而Wcg 和Wcp分别为幅值裕量和相位裕量处相
15、应的频率值。,30,例7-17 给定系统的开环状态空间表达式为 求系统的幅值裕量和相位裕量,并画出Bode图。 ex7_17.m,31,执行后得如下数据及图7-15所示Bode图。,图7-15,32,Gm =4.4922 Pm =23.0705 Wcg =12.6466 Wcp =5.8275 幅值裕量kg=4.4922=13.0492dB,相位裕量r =23.0706度。,33,除了根据系统模型直接求取幅值和相位裕量之外,MATLAB的控制系统工具箱中还提供了由幅值和相位相应数据来求取裕量的方法,这时函数的调用格式为 Gm,Pm,Wcg,Wcp=margin(mag,phase,) 式中 频
16、率响应可以是由bode( )函数获得的幅值和相位向量,也可以是系统的实测幅值与相位向量,为相应的频率点向量。,34,4.频率响应值MATLAB也提供了直接的求取频率响应数据的函数freqresp( ),其调用格式为F=freqresp(num,den,sqrt(-1)*) 或 F=freqresp(A,B,C,D,iu,sqrt(-1)*) 式中 F为频率响应,为给定的频率范围向量。,35,5.系统的奈奎斯特图(Nyquist图),nyquist( )函数的调用格式为Re,Im,=nyquist(num,den)Re,Im,=nyquist(num,den,)Re,Im,=nyquist(A,
17、B,C,D)Re,Im,=nyquist(A,B,C,D,iu)Re,Im,=nyquist(A,B,C,D,iu,) 其中 返回值Re,Im和分别为频率特性的实部向量、虚部向量和对应的频率向量,有了这些值就可利用命令plot(Re,Im)来直接绘出系统的奈奎斯特图。,36,当然也可使用下面的简单命令来直接绘出系统的奈魁斯特图。nyquist(num,den,) 或 nyquist(A,B,C,D) 更简单地 nyquist(num,den) 或 nyquist(A,B,C,D,iu) 它的使用方法基本同bode( )函数的用法。,37,例7-20 已知系统的开环传递函数为绘制Nyquist图
18、,并判断系统的稳定性。 解 MATLAB命令为 num=0.5;den=1 2 1 0.5; nyquist(num,den) 执行后可得如图7-16所示的曲线,由于Nyquist曲线没有包围(-1,j0)点,且P0,所以由G(s)H(s)构成的单位负反馈闭环系统稳定。,38,图7-16,39,6.尼柯尔斯图(Nichols图)函数调用格式为mag,phase,=nichols(num,den,) 或 mag,phase,=nichols(A,B,C,D,iu,) 可见该函数的调用格式以及返回的值与bode( )函数完全一致,事实上虽然它们使用的算法不同, 但这两个函数得出的结果还是基本一致的
19、。但Nichols图的绘制方式和Bode图是不同的,它可由以下命令绘制 plot(phase,20*log10(mag)当然,Nichols图也可采用与Bode图类似的简单命令来直接绘制。,40,例7-23 已知单位负反馈的开环传递函数为试绘制Nichols图。 解 MATLAB程序为 ex7_23.m执行后可得如图7-20所示的Nichols图。,41,图7-20,42,7.离散系统的频率分析 离散时间系统的频率分析也可以调用相应的MATLAB控制系统工具箱函数来完成,这些函数是以连续系统的函数名前加一字母d来命名的,例如离散时间系统的Bode图可以由dbode( )函数求出,离散时间系统的
20、Nyquist图可以由dnyquist( )函数来求出,以及离散时间系统Nichols图可以由dnichols( )函数来求出,其实在MATLAB的控制系统工具箱中这样的函数命名方式是相当普遍的,它们的调用格式与连续系统类似。,43,8.时间延迟系统的频率分析 函数的调用格式为num,den=pade(,n) 9.利用频率响应数据辩识系统模型该函数的调用格式为num,den=invfreqs(F,m,n) 或 num,den=invfreqs(mag.*exp(sqrt(-1)*phase),m,n),44,7.5 系统的能控性和能观测性分析,7.5.1 系统的能控性和能观测性对于n阶线性定常
21、系统,45,能控性矩阵为 Uc=B AB A2B An-1B当rank Uc=n时,系统的状态完全能控,否则系统不能控。 能观测性矩阵为当rankVon时,系统的状态完全能观测,否则系统状态不能观测。,46,在MATLAB中,可利用ctrb( )和obsv( )函数直接求出能控性和能观测性矩阵,从而确定系统的状态能控性和能观测性。它们的调用格式分别为 Uc=ctrb(A,B)Vo=obsv(A,C) 其中 A,B,C为系统的各矩阵,Uc和Vo分别为能控性矩阵和能观测性矩阵,47,另外,利用系统的能控性和能观测性Gram矩阵和 是否满秩,也可判别系统的能控性和能观测性。在MATLAB中,求系统的
22、能控和能观测性Gram矩阵的函数gram( )的调用格式为Wc=gram(A,B) 和 Wo=gram(A,C),48,7.5.2 将系统按能控和不能控性进行分解,MATLAB的控制系统工具箱中提供了这种分解的函数ctrbf( ),其调用格式为Ac,Bc,Cc,Tc,Kc=ctrbf(A,B,C) 其中 Tc为相似变换阵,Kc是长度为n的一个矢量,其元素为各个块的秩,sum(K)可求出A中能控部分的秩,Ac,Bc,Cc对应与转换后系统的A,B,C。,49,7.5.3 将系统按能观测性和不能观测性进行分解,MATLAB控制系统工具箱中,能观测性分解函数obsvf( )的调用格式为 Ao,Bo,C
23、o,To,Ko= obsvf(A,B,C ) 其中 To为相似变换阵,To是长度为n的一个矢量,其元素为各个块的秩,sum(K)可求出A中能观测部分的秩,Ao,Bo,Co对应与转换后系统的A,B,C。,50,7.6 系统模型的降阶,7.6.1 平衡实现该函数的调用格式为 这一函数可由给定的状态空间表达式(A,B,C),直接求出平衡系统的Gram矩阵G和变换矩阵T及平衡实现的模型。,A1,B1,C1,G,T= balreal(A,B,C),51,7.6.2 模型降阶函数的调用格式为A,B,C,D=modred(A1,B1,C1,D1,elim) 式中 A1,B1,C1,D1为平衡实现系统的状态空间表达式模型参数,elim为要消去的状态变量序号,当然为获得较好的近似,消去的状态变量应该选为Gram矩阵元素的数值较小的变量,返回的A,B,C,D为所获得的降阶模型。,