MATLAB实现控制系统稳定性分析教学提纲.doc
Good is good, but better carries it.精益求精,善益求善。MATLAB实现控制系统稳定性分析-MATLAB实现控制系统稳定性分析稳定是控制系统的重要性能,也是系统能够工作的首要条件,因此,如何分析系统的稳定性并找出保证系统稳定的措施,便成为自动控制理论的一个基本任务.线性系统的稳定性取决于系统本身的结构和参数,而与输入无关.线性系统稳定的条件是其特征根均具有负实部.在实际工程系统中,为避开对特征方程的直接求解,就只好讨论特征根的分布,即看其是否全部具有负实部,并以此来判别系统的稳定性,由此形成了一系列稳定性判据,其中最重要的一个判据就是Routh判据.Routh判据给出线性系统稳定的充要条件是:系统特征方程式不缺项,且所有系数均为正,劳斯阵列中第一列所有元素均为正号,构造Routh表比用求根判断稳定性的方法简单许多,而且这些方法都已经过了数学上的证明,是完全有理论根据的,是实用性非常好的方法.但是,随着计算机功能的进一步完善和Matlab语言的出现,一般在工程实际当中已经不再采用这些方法了.本文就采用Matlab对控制系统进行稳定性分析作一探讨.1系统稳定性分析的Matlab实现1.1直接判定法根据稳定的充分必要条件判别线性系统的稳定性,最简单的方法是求出系统所有极点,并观察是否含有实部大于0的极点,如果有,系统则不稳定.然而实际的控制系统大部分都是高阶系统,这样就面临求解高次方程,求根工作量很大,但在Matlab中只需分别调用函数roots(den)或eig(A)即可,这样就可以由得出的极点位置直接判定系统的稳定性.已知控制系统的传递函数为(1)若判定该系统的稳定性,输入如下程序:G=tf(1,7,24,24,1,10,35,50,24);roots(G.den1)运行结果:ans=-4.0000-3.0000-2.0000-1.0000由此可以判定该系统是稳定系统.1.2用根轨迹法判断系统的稳定性根轨迹法是一种求解闭环特征方程根的简便图解法,它是根据系统的开环传递函数极点、零点的分布和一些简单的规则,研究开环系统某一参数从零到无穷大时闭环系统极点在s平面的轨迹.控制工具箱中提供了rlocus函数,来绘制系统的根轨迹,利用rlocfind函数,在图形窗口显示十字光标,可以求得特殊点对应的K值.已知一控制系统,H(s)=1,其开环传递函数为:(2)绘制系统的轨迹图.程序为:G=tf(1,1320);rlocus(G);k,p=rlocfind(G)根轨迹图如图1所示,光标选定虚轴临界点,程序结果为:图1系统的根轨迹图selected_point=0-0.0124ik=0.0248p=-2.0122-0.9751-0.0127光标选定分离点,程序结果为:selected_point=-1.9905-0.0124ik=0.0308p=-2.0151-0.9692-0.0158上述数据显示了增益及对应的闭环极点位置.由此可得出如下结论:(1)0<k<0.4时,闭环系统具有不同的实数极点,表明系统处于过阻尼状态;(2)k=0.4时,对应为分离点,系统处于临界阻尼状态;(3)0.4<k<6时,系统主导极点为共轭复数极,系统为欠阻尼状态;(4)k=6时,系统有一对虚根,系统处于临界稳定状态;(5)k>6时,系统的一对复根的实部为正,系统处于不稳定状态.1.3用Nyquist曲线判断系统的稳定性Matlab提供了函数Nyquist来绘制系统的Nyquist曲线,若式(2)系统分别取k=4和k=10(图2为阶跃响应曲线),通过Nyquist曲线判断系统的稳定性,程序如下:num1=4;num2=10;den1=1,3,2,0;gs1=tf(num1,den1);gs2=tf(num2,den1);hs=1;gsys1=feedback(gs1,hs);gsys2=feedback(gs2,hs);t=0:0.1:25;figure(1);subplot(2,2,1);step(gsys1,t)subplot(2,2,3);step(gsys2,t)subplot(2,2,2);nyquist(gs1)subplot(2,2,4);nyquist(gs2)奈氏稳定判据的内容是:若开环传递函数在s平半平面上有P个极点,则当系统角频率X由-变到+时,如果开环频率特性的轨迹在复平面上时针围绕(-1,j0)点转P圈,则闭环系统稳定,否则,是不稳定的.图2阶跃响应曲线当k=4时,从图3中k=4可以看出,Nyquist曲不包围(-1,j0)点,同时开环系统所有极点都位于平面左半平面,因此,根据奈氏判据判定以此构成闭环系统是稳定的,这一点也可以从图2中k=4系统单位阶跃响应得到证实,从图2中k=4可以看出系统约23s后就渐渐趋于稳定.当k=10时,从图3中k=10可以看图3Nyquist曲线出,Nyquist曲线按逆时针包围(-1,j0)点2圈,但此时P=0,所以据奈氏判据判定以此构成的闭环系统是不稳定的,图2中k=10的系统阶跃响应曲线也证实了这一点,系统振荡不定。1.4bode图法判断系统的稳定性bode判据,实质上是Nyquist判据的引伸.本开环系统是最小相位系统,即P=0,用Xc表示对数幅频特性曲线与横轴(0dB)交点的频率,Xg表示对数相频特性曲线与横轴(-180o)交点的频率,则对数判据可表述如下:在P=0时,若开环对数幅频特性比其对数相频特性先交于横轴,即Xc<Xg,则闭环系统稳定;若开环对数幅频特性比其对数相频特性后交于横轴,即Xc>Xg,则闭环系统不稳定;若Xc=Xg,则闭环系统临界稳定.num1=4;num2=10;den1=1,3,2,0;gs1=tf(num1,den1);gs2=tf(num2,den1);hs=1;gsys1=feedback(gs1,hs);gsys2=feedback(gs2,hs);t=0:0.1:25;figure(1);subplot(1,1,1);bode(gs1)图4k=4时开环系统的bode图由图4开环系统的bode图可知,Xc<Xg,故当k=4时,此时的闭环系统必然稳定.实际上,系统的控制bode图还可用于系统相对稳定性的分析.一)用系统特征方程的根判别系统稳定性:设系统特征方程为s5+s4+2s3+2s2+3s+5=0,计算特征根并判别该系统的稳定性。在commandwindow窗口输入下列程序,记录输出结果。>>p=112235;>>roots(p)二)用根轨迹法判别系统稳定性:对给定的系统的开环传递函数,进行仿真。1某系统的开环传递函数为,在commandwindow窗口输入程序,记录系统闭环零极点图及零极点数据,判断该闭环系统是否稳定。>>clear>>n1=0.251;>>d1=0.510;>>s1=tf(n1,d1);>>sys=feedback(s1,1);>>P=sys.den1;p=roots(P)>>pzmap(sys)>>p,z=pzmap(sys)2某系统的开环传递函数为,在commandwindow窗口输入程序,记录系统开环根轨迹图、系统开环增益及极点,确定系统稳定时K的取值范围。>>clear>>n=1;d=conv(110,0.51);>>sys=tf(n,d);>>rlocus(sys)>>k,poles=rlocfind(sys) 三)频率法判别系统稳定性:对给定的系统的开环传递函数,进行仿真。1已知系统开环传递函数,在commandwindow窗口输入程序,用Bode图法判稳,记录运行结果,并用阶跃相应曲线验证(记录相应曲线)1)绘制开环系统Bode图,记录数据。>>num=75*000.21;>>den=conv(10,116100);>>sys=tf(num,den);>>Gm,Pm,Wcg,Wcp=margin(sys)>>margin(sys)2)绘制系统阶跃响应曲线,证明系统的稳定性。>>num=75*000.21;>>den=conv(10,116100);>>s=tf(num,den);>>sys=feedback(s,1);>>t=0:0.01:30;>>step(sys,t)2已知系统开环传递函数,在commandwindow窗口输入程序,用Nyquist图法判稳,记录运行结果,并用阶跃相应曲线验证(记录相应曲线)。1)绘制Nyquist图,判断系统稳定性。>>clear>>num=10000;>>den=151000;>>GH=tf(num,den);>>nyquist(GH)2)用阶跃响应曲线验证系统的稳定性>>num=10000;>>den=151000;>>s=tf(num,den);>>sys=feedback(s,1);>>t=0:0.01:0.6;>>step(sys,t)tf用法:G=tf(21,122)或s=tf('s'); %定义s为传递函数拉普拉斯算子;G=(2s+1)/(s2+2s+2);%定义传递函数;其实生成的传递函数可以任意计算。set(G)可以得到传递函数对象的属性,可以修改或预设其属性,如G=tf(21,122,'variable','p');%修改使用的变量G=tf(21,122,'inputdelay',0.25);%设置输入延迟,即G=exp(-0.25s)(2s+1)/(s2+2s+2)G=tf(132,1573,0.1);%设置离散情况的采样周期tfdata:功能描述:获得tf模型传递函数的参数对于SISO系统:G=tf(21,122);num,den=tfdata(G,'v');对于离散系统:num,den,Ts=tfdata(G);其实要得到系统的参数,可以直接引用传递函数的属性,如G.den等函数名zpk功能描述:生成零极点增益传递函数模型或转换成零极点模型G=zpk(-1,-3,0,-2,-5,10);可以用于转化G=tf(-10200,172028195)sys=zpk(G);zpkdata功能描述:获取零极点增益模型的参数z,p,k=zpkdata(G,'v'); filt()功能描述:生成DSP形式的离散传递函数:例子:生成采样时间为0.5的DSP形式传递函数:H=filt(21,10.42,0.5)%求闭环传函num1,den1=series(1,11,10,102);num2,den2=feedback(1,100,50,1);num3,den3=series(num1,den1,num2,den2);num,den=feedback(num3,den3,102,10014);%ÅбðÎȶ¨ÐÔsys=tf(num,den)r=roots(den)n=length(r);fori=1:nifreal(r(i)>0%有的根实部大于0,系统不稳定disp('Buwending!');endbreak;enddisp('wending!');%所有的根实部小于等于0,系统稳定-