第4章利用MATLAB绘制系统根轨迹
- 格式:doc
- 大小:77.50 KB
- 文档页数:7
利用MATLAB进行根轨迹分析根轨迹分析是一种用于研究系统稳定性和动态特性的方法,通过研究系统的传递函数来绘制系统极点随参数变化的轨迹。
MATLAB提供了强大的工具和函数来进行根轨迹分析。
根轨迹是由系统的极点随参数变化所形成的轨迹,它可以反映系统的稳定性、阻尼比、上升时间、超调量等动态性能指标。
根轨迹的绘制通常包括以下步骤:1.定义系统传递函数:首先,需要根据具体的控制系统问题定义系统的传递函数。
传递函数是描述输入与输出间关系的数学模型,通常用分子多项式和分母多项式的比值来表示。
2. 极点位置确定:根据系统传递函数的分母多项式,可以求解系统的极点位置。
MATLAB提供了roots函数来计算多项式的根。
3. 绘制根轨迹:通过参数变化,将系统的极点位置代入传递函数的分子多项式中,可以计算得出系统的零点。
然后,使用MATLAB的plot函数将所有极点和零点绘制在复平面上。
4.判断稳定性:通过观察根轨迹的形状,可以判断系统的稳定性。
如果所有极点都位于左半平面,系统是稳定的。
如果存在极点位于右半平面,系统是不稳定的。
5.分析动态特性:根轨迹的形状可以提供许多关于系统动态特性的信息。
例如,阻尼比可以通过根轨迹上极点到原点的距离和纵坐标之比来估计;超调量可以通过根轨迹的形状和最大振幅来估计。
MATLAB提供了许多用于根轨迹分析的函数和工具箱,包括rlocus函数、nyquist函数和bode函数等。
这些函数可以方便地绘制根轨迹、Nyquist图和Bode图,从而帮助工程师分析系统稳定性以及设计和调整控制器。
根轨迹分析在控制系统设计和调优中具有重要作用。
通过根轨迹的绘制和分析,工程师可以深入了解控制系统的动态特性,并根据需要调整系统参数来达到设计要求。
同时,根轨迹分析也是控制系统教学和研究中常用的方法和工具。
总之,MATLAB是进行根轨迹分析的强大工具,通过绘制根轨迹和分析根轨迹的形状和特性,可以帮助工程师深入了解控制系统的稳定性和动态特性,从而有效地设计和调整控制器。
班级学号姓名
第四章MATLAB在根轨迹中的应用
一绘制控制系统的根轨迹图
绘制根轨迹的常用命令有rlcous(num,den)relocus(num,den,K).如果参变量K的范围是给定的,则MATLAB将按照给定的参数范围绘制根轨迹图,否则K的范围自动确定的。
其变化范围在0到真无穷之间,在绘制根轨迹时,MATLAB有x,y坐标轴的自动定位功能。
如果用户需要,可自行设置坐标的范围。
只要在相应的程序中加上如下部分。
V=[-x x- y y ]; axis(V)
它表示x 轴的范围为-x~x,y的范围是-y~y
G(s)=k/s(s+1)(s+2)
则MATLAB 的绘制根轨迹如下
解
运行结果如下所示如果,本例中的G(s)是以传递函数的一般形式传递,可用下列程序求解
运行结果如下所示
二、由根轨迹图对系统的性能进行分析
在对系统性能的分析中,一般需要确定根轨迹图上某一点的根轨迹增益值和其它对应的闭环极点。
对此,只要在rlocus指令后,调用下面指令:
【K2,P2】=rlocfind(num,den)
就能如愿实现。
运行该指令后,在显示根轨迹图形的屏幕上回生成一个十字光标,同时在matlab的命令窗口出现“Select a point in the graphics window”,提示用户选择某一个点。
当使用鼠标移动十字光标到所希望的位置后,单击左键,在matlab的命令窗口就会显示该点数值、增益K和对应其他闭环极点。
例如移动十字光标至下图中的A点,单击左键后,在matlab的命令窗口输出:
同时,可求得该图中B点对应输出为:。
参数根轨迹的matlab绘制原理参数根轨迹是控制系统分析和设计中非常重要的概念,可以帮助我们分析控制系统的稳定性和动态响应特性。
在Matlab中,可以通过一些简单的指令实现参数根轨迹的绘制,从而更好地理解控制系统的行为。
本文将简要介绍参数根轨迹的概念和Matlab中绘制参数根轨迹的原理,以及具体的绘制方法。
一、什么是参数根轨迹?我们知道,在控制系统中,控制器的传递函数通常是由若干个参数构成的,例如比例控制器的传递函数为$K_p$,积分控制器的传递函数为$\frac{K_i}{s}$等。
参数根轨迹是指控制器参数变化时,系统极点和极点轨迹的变化关系。
在某些情况下,通过控制器参数的设计和调节,我们可以使得系统的极点轨迹穿过我们所期望的点(通常是一条直线),从而使系统的性能和稳定性得到改善。
参数根轨迹的绘制是一种基于控制理论的分析方法,它可以用来分析控制系统的动态响应特性,包括稳态误差、阻尼比、过渡过程时间等。
参数根轨迹的概念适用于各种类型的控制系统,包括比例控制、积分控制、微分控制、比例积分控制、比例微分控制等。
二、参数根轨迹的Matlab绘制原理Matlab提供了许多用于控制系统分析和设计的工具箱,包括控制系统工具箱、优化工具箱等。
在控制系统工具箱中,可以使用“rlocus”指令绘制参数根轨迹。
rlocus指令的使用形式为:```rlocus(num,den,k)```num和den是控制器的分子和分母系数向量,k是控制器参数的范围,通常选择在0到一个较大的数之间。
对于一个比例控制器,可以使用以下代码绘制参数根轨迹:```num=[1];den=[1 10];k=0:0.1:10;rlocus(num,den,k)```这个代码将绘制一个比例控制器$G(s)=k$的参数根轨迹,其中控制器的分母为$s+10$。
在绘制出来的图像中,可以看到参数$k$的变化对系统极点轨迹的影响。
通常我们会选择一个合适的$k$值,使得系统极点轨迹经过我们期望的稳定位置。
第4章 利用MATLAB 绘制系统根轨迹一、 利用MATLAB 绘制系统根轨迹相关知识假设闭环系统中的开环传递函数可以表示为:)()())(()())(()(021********s KG p s p s p s z s z s z s K den numK a s a s a s b b s b s K s G n m nn n n m m m m k =+⋅⋅⋅+++⋅⋅⋅++==++⋅⋅⋅++++⋅⋅⋅++=----则闭环特征方程为:01=+dennumK特征方程的根随参数K 的变化而变化,即为闭环根轨迹。
控制系统工具箱中提供了rlocus()函数,可以用来绘制给定系统的根轨迹,它的调用格式有以下几种:rlocus(num ,den) rlocus(num ,den ,K) 或者 rlocus(G) rlocus(G ,K)以上给定命令可以在屏幕上画出根轨迹图,其中G 为开环系统G 0(s)的对象模型,K 为用户自己选择的增益向量。
如果用户不给出K 向量,则该命令函数会自动选择K 向量。
如果在函数调用中需要返回参数,则调用格式将引入左端变量。
如[R ,K]=rlocus(G)此时屏幕上不显示图形,而生成变量R 和K 。
R 为根轨迹各分支线上的点构成的复数矩阵,K 向量的每一个元素对应于R 矩阵中的一行。
若需要画出根轨迹,则需要采用以下命令:plot(R ,¹¹)plot()函数里引号内的部分用于选择所绘制曲线的类型,详细内容见表1。
控制系统工具箱中还有一个rlocfind()函数,该函数允许用户求取根轨迹上指定点处的开环增益值,并将该增益下所有的闭环极点显示出来。
这个函数的调用格式为:[K ,P]=rlocfind(G)这个函数运行后,图形窗口中会出现要求用户使用鼠标定位的提示,用户可以用鼠标左键点击所关心的根轨迹上的点。
这样将返回一个K 变量,该变量为所选择点对应的开环增益,同时返回的P 变量则为该增益下所有的闭环极点位置。
此外,该函数还将自动地将该增益下所有的闭环极点直接在根轨迹曲线上显示出来。
例4.1 已知系统的开环传递函数模型为:)()2)(1()(0s KG s s s Ks G k =++=利用下面的MATLAB 命令可容易地验证出系统的根轨迹如图4-1所示。
>> G=tf(1,[conv([1,1],[1,2]),0]); rlocus(G); gridtitle(¹Root_Locus Plot of G(s)=K/[s(s+1)(s+2)]¹) xlabel(¹Real Axis ¹) % 给图形中的横坐标命名。
ylabel(¹Imag Axis¹) % 给图形中的纵坐标命名。
[K,P]=rlocfind(G)用鼠标点击根轨迹上与虚轴相交的点,在命令窗口中可发现如下结果select_point=0.0000+1.3921iK=5.8142p=-2.29830-0.0085+1.3961i-0.0085-1.3961i所以,要想使此闭环系统稳定,其增益范围应为0<K<5.81。
参数根轨迹反映了闭环根与开环增益K的关系。
我们可以编写下面的程序,通过K的变化,观察对应根处阶跃响应的变化。
考虑K=0.1,0.2,…,1,2,…,5,这些增益下闭环系统的阶跃响应曲线。
可由以下MATLAB命令得到。
>>hold off; %擦掉图形窗口中原有的曲线。
图4-1系统的根轨迹t=0:0.2:15;Y=[ ];for K=[0.1:0.1:1,2:5]GK=feedback(K*G,1);y=step(GK,t);Y=[Y,y];endplot(t,Y)对于for循环语句,循环次数由K给出。
系统画出的图形如图4-2所示。
可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。
一旦K接近临界K值,振荡加剧,性能变坏。
图4-2不同K值下的阶跃响应曲线4. MATLAB绘图的基本知识通过以上实例的应用,我们已初步尝试了MATLAB的绘图功能。
MATLAB具有丰富的获取图形输出的程序集。
我们已用命令plot()产生线性x-y图形(用命令loglog、semilogx、semilogy或polar取代命令plot,可以产生对数坐标图和极坐标图)。
所有这些命令的应用方式都是相似的,它们只是在如何给坐标轴进行分度和如何显示数据上有所差别。
(1)二维图形绘制如果用户将X和Y轴的两组数据分别在向量x和y中存储,且它们的长度相同,则命令plot(x,y)将画出y值相对于x值的关系图。
例4.2如果想绘制出一个周期内的正弦曲线,则首先应该用t=0:0.01:2*pi(pi是系统自定义的常数,可用help命令显示其定义)命令来产生自变量t;然后由命令y=sin(t)对t向量求出正弦向量y,这样就可以调用plot(t,y)来绘制出所需的正弦曲线,如图4-3所示。
图4-3一个周期内的正弦曲线(2)一幅图上画多条曲线。
利用具有多个输入变量的plot( )命令,可以在一个绘图窗口上同时绘制多条曲线,命令格式为:plot(x1,Y1,x2,Y2,…,xn,Yn)x1、Y1、x2、Y2等一系列变量是一些向量对,每一个x-y对都可以用图解表示出来,因而可以在一幅图上画出多条曲线。
多重变量的优点是它允许不同长度的向量在同一幅图上显示出来。
每一对向量采用不同的线型以示区别。
另外,在一幅图上叠画一条以上的曲线时,也可以利用hold命令。
hold命令可以保持当前的图形,并且防止删除和修改比例尺。
因此,后来画出的那条曲线将会重叠在原曲线图上。
当再次输入命令hold,会使当前的图形复原。
也可以用带参数的hold命令――hold on 和hold off来启动或关闭图形保持。
(3)图形的线型和颜色为了区分多幅图形的重叠表示,MATLAB提供了一些绘图选项,可以用不同的线型或颜色来区分多条曲线,常用选项见下表4-1表4-1MATLAB绘图命令的多种选项选项意义选项意义′-′实线′--′短划线′:′虚线′-.′点划线′r′红色′*′用星号绘制各个数据点′b′蓝色′o′用圆圈绘制各个数据点′g′绿色′.′用圆点绘制各个数据点′y′黄色′×′用叉号绘制各个数据点表4-1中绘出的各个选项有一些可以并列使用,能够对一条曲线的线型和颜色同时作出规定。
例如′--g′表示绿色的短划线。
带有选项的曲线绘制命令的调用格式为:plot(X1,Y1,S1,X2,Y2,S2,…)(4)加进网络线、图形标题、x轴和y轴标记一旦在屏幕上显示出图形,就可以依次输入以下相应的命令将网络格线、图形标题、x、y轴标记叠加在图形上。
命令格式如下:grid(网络线)title(′图形标题′)xlabel(′x轴标记′)ylabel(′y轴标记′)函数引号内的字符串将被写到图形的坐标轴上或标题位置。
(5)在图形屏幕上书写文本。
如果想在图形窗口中书写文字,可以单击按钮,选择屏幕上一点,点击鼠标,在光标处输入文字。
另一种输入文字的方法是用text()命令。
它可以在屏幕上以(x,y)为坐标的某处书写文字,命令格式如下:text(x,y,′text′)例如,利用语句text(3,0.45,′sint ′)将从点(3,0.45)开始,水平的写出“sint ”。
(6)自动绘图算法及手工坐标轴定标在MATLAB 图形窗口中,图形的横、纵坐标是自动标定的,在另一幅图形画出之前,这幅图形作为现行图将保持不变,但是在另一幅图形画出后,原图形将被删除,坐标轴自动地重新标定。
关于瞬态响应曲线、根轨迹、伯德图、奈魁斯特图等的自动绘图算法已经设计出来,它们对于各类系统具有广泛的适用性,但是并非总是理想的。
因此,在某些情况下,可能需要放弃绘图命令中的坐标轴自动标定特性,由用户自己设定坐标范围,可以在程序中加入下列语句:v=[x-min x-max y-min y-max]axis(v)式中v 是一个四元向量。
axis(v)把坐标轴定标建立在规定的范围内。
对于对数坐标图,v 的元素应为最小值和最大值的常用对数。
执行axis(v)会把当前的坐标轴标定范围保持到后面的图中,再次键入axis 可恢复系统的自动标定特性。
Axis(′sguare ′)能够把图形的范围设定在方形范围内。
对于方形长宽比,其斜率为1的直线恰位于45o上,它不会因屏幕的不规则形状而变形。
Axis(′normal ′)将使长宽比恢复到正常状态。
二、附录利用MATLAB 绘制系统根轨迹的一些其它实例 例4.3 已知知一单位反馈系统开环传函为)2s 2s )(6s )(5s (s )3s (k)s (G 2+++++=试在根轨迹上选择一点,求出该点的增益k 及其闭环极点的位置,并判断在该点系统的稳定性。
程序: num=[1,3];den=conv(conv(conv([1 0],[1 5]),[1 6]),[1 2 2]); rlocus(num,den);[k,poles]=rlocfind(sys); range=[33:1:37]';cpole=rlocus(num,den,range); [range,cpole] 结果:selected_point = -5.3780 - 0.0476i ans =Columns 1 through 533.0000 -5.5745 + 0.6697i -5.5745 - 0.6697i -1.7990 -0.0260 + 1.3210i 34.0000 -5.5768 + 0.6850i -5.5768 - 0.6850i -1.8154 -0.0155 + 1.3340i 35.0000 -5.5791 + 0.7001i -5.5791 - 0.7001i -1.8313 -0.0052 + 1.3467i 36.0000 -5.5815 + 0.7147i -5.5815 - 0.7147i -1.8466 0.0048 + 1.3591i37.0000 -5.5838 + 0.7291i -5.5838 - 0.7291i -1.8615 0.0146 + 1.3712iColumn 6-0.0260 - 1.3210i-0.0155 - 1.3340i-0.0052 - 1.3467i0.0048 - 1.3591i0.0146 - 1.3712i>>例4.4已知带有延迟因子的系统开环传递函数为:se)1s5.0)(1s(s1)s(G-++=1)试绘制根轨迹图;2)求系统临界稳定时根轨迹增益;3)求系统k=0.5时单位阶跃响应曲线。