实验四 线性系统的根轨迹
一、实验目的
1. 熟悉MATLAB用于控制系统中的一些基本编程语句和格式。 2. 利用MATLAB语句绘制系统的根轨迹。 3. 掌握用根轨迹分析系统性能的图解方法。 4. 掌握系统参数变化对特征根位置的影响。 基础知识及MATLAB函数
根轨迹是指系统的某一参数从零变到无穷大时,特征方程的根在s平面上的变化轨迹。这个参数一般选为开环系统的增益K。课本中介绍的手工绘制根轨迹的方法,只能绘制根轨迹草图。而用MATLAB可以方便地绘制精确的根轨迹图,并可观测参数变化对特征根位置的影响。
假设系统的对象模型可以表示为
b1sm?b2sm?1???bms?bm?1 G(s)?KG0(s)?Knn?1s?a1s???bn?1s?an系统的闭环特征方程可以写成: 1?KG0(s)?0
对每一个K的取值,我们可以得到一组系统的闭环极点。如果我们改变K的数值,则可以得到一系列这样的极点集合。若将这些K的取值下得出的极点位置按照各个分支连接起来,则可以得到一些描述系统闭环位置的曲线,这些曲线又称为系统的根轨迹。
1)绘制系统的根轨迹rlocus()
MATLAB中绘制根轨迹的函数调用格式为:
rlocus(num,den) 开环增益k的范围自动设定。 rlocus(num,den,k) 开环增益k的范围人工设定。 rlocus(p,z) 依据开环零极点绘制根轨迹。 r=rlocus(num,den) 不作图,返回闭环根矩阵。 [r,k]=rlocus(num,den) 不作图,返回闭环根矩阵r和对应的开环增
益向量k。
其中,num,den分别为系统开环传递函数的分子、分母多项式系数,按s的降幂排列。K为根轨迹增益,可设定增益范围。
例3-1:已知系统的开环传递函数G(s)?K?轨迹的MATLAB的调用语句如下:
(s?1),绘制系统的根32s?4s?2s?9 num=[1 1]; %定义分子多项式 den=[1 4 2 9]; %定义分母多项式 rlocus (num,den) %绘制系统的根轨迹 grid %画网格标度线
xlabel(‘Real Axis’),ylabel(‘Imaginary Axis’) %给坐标轴加上说明 title(‘Root Locus’) %给图形加上标题名
则该系统的根轨迹如图3-1所示:
图3-1 系统的完整根轨迹图形
图3-2 特定增益范围内的根轨迹图形
若上例要绘制K在(1,10)的根轨迹图,则此时的MATLAB的调用格式如下,对应的根轨迹如图3-2所示。
num=[1 1];
den=[1 4 2 9]; k=1:0.5:10; rlocus (num,den,k)
2)确定闭环根位置对应增益值K的函数rlocfind()
在MATLAB中,提供了rlocfind函数获取与特定的复根对应的增益K的值。在求出的根轨迹图上,可确定选定点的增益值K和闭环根r(向量)的值。该函数的调用格式为:[k,r]=rlocfind(num,den)
执行前,先执行绘制根轨迹命令rlocus(num,den),作出根轨迹图。执行rlocfind命令时,出现提示语句“Select a point in the graphics window”,即要求在根轨迹图上选定闭环极点。将鼠标移至根轨迹图选定的位置,单击左键确定,根轨迹图上出现“+”标记,即得到该点的增益K和闭环根r的返回变量值。
s2?5s?6例3-2:系统的开环传递函数为G(s)?K3,试求:(1)系2s?8s?3s?25?统的根轨迹;(2)系统稳定的K的范围;(3)K=1时闭环系统阶跃响应曲线。则此时的MATLAB的调用格式为:
G=tf([1,5,6],[1,8,3,25]);
rlocus (G); %绘制系统的根轨迹
[k,r]=rlocfind(G) %确定临界稳定时的增益值k和对应
的极点r
G_c=feedback(G,1); %形成单位负反馈闭环系统 step(G_c) %绘制闭环系统的阶跃响应曲线
则系统的根轨迹图和闭环系统阶跃响应曲线如图3-2所示。
其中,调用rlocfind()函数,求出系统与虚轴交点的K值,可得与虚轴
,?)。 交点的K值为0.0264,故系统稳定的K的范围为K?(0.0264
(a)根轨迹图形 (b)K=1时的阶跃响应曲线
图3-2 系统的根轨迹和阶跃响应曲线
二、实验内容
请绘制下面系统的根轨迹曲线
G(s)?K 22s(s?2s?2)(s?6s?13)G(s)?K(s?12)
(s?1)(s2?12s?100)(s?10)G(s)?K(0.05s?1) 2s(0.0714s?1)(0.012s?0.1s?1)同时得出在单位阶跃负反馈下使得闭环系统稳定的K值的范围。
1.1,程序代码
num=[0,0,0,0,0,1]; %定义分子多项式 den=[1,8,27,38,26,0]; %定义分母多项 rlocus(num,den); %绘制系统的根轨迹 grid %画网格标度线 [k,r]=rlocfind(num,den)
xlabel('Real Axis');ylabel('Imaginary Axis') title('Root Locus');
1.2,截屏图
k = 0.6981
r =-2.9946 + 2.0027i;-2.9946 - 2.0027i; -0.9914 + 0.9696i; -0.9914 - 0.9696i; -0.0280 k =0.8946
r = -2.9931 + 2.0035i;-2.9931 - 2.0035i; -0.9887 + 0.9607i;-0.9887 - 0.9607i;-0.0363 k = 31.4829
r =-2.8088 + 2.1856i;-2.8088 - 2.1856i ;-2.4150 ; 0.0163 + 1.0144i; 0.0163 - 1.0144i k =40.4848
r =-2.7794 + 2.2469i; -2.7794 - 2.2469i; -2.6459 ; 0.1024 + 1.0897i;0.1024 - 1.0897i
1.3,分析可知k的范围是(0.6981~~~40.4848)
2.1,程序代码
num=[0,0,0,1,12]; %定义分子多项式 den=[1,23,121,1220,1000]; %定义分母多项
rlocus(num,den); grid %绘制系统的根轨迹 [k,r]=rlocfind(num,den)
xlabel('Real Axis');ylabel('Imaginary Axis'); title('Root Locus') ; 2.2,截屏图
k =18.4941
r = -19.8919\\ -1.0151 + 7.4803i\\-1.0151-7.4803i\\-1.0780