第五课 线性系统的根轨迹法
教学目的:
1.熟练掌握使用MATLAB 绘制根轨迹图形的方法。
2.进一步加深对根轨迹图的了解。
3.掌握利用所绘制根轨迹图形分析系统性能的方法。
教学内容:
1.用实验的方法求解根轨迹。
在Matlab 控制系统工具箱中提供了rlocus()函数,来绘制根轨迹,rlocus()的调用格式为:
r=rlocus(g,k);
式中的g 为线性系统的数学模型;k 为用户自己选择的增益向量;返回的变量r 为根轨迹上对应向量k 的各个增益点的闭环系统的根。
如果用户不给出k 向量,则该函数会自动选择增益向量,在这种情况下,该函数的调用格式为:
[r,k]=rlocus(g);
式中向量k 为自动生成的增益向量,r 仍为对应各个k 值的闭环系统的特征根。
例1 系统1的开环传递函数为:)
15.0)(12.0()(++=s s s K
s G K
要求:(1)绘制并记录根轨迹;
(2)确定根轨迹的分离点与相应的根轨迹增益; (3)确定临界稳定时的根轨迹增益。
(1)参考程序: K=1; z=[];
p=[0,-5,-2];
[num,den]=zp2tf(z,p,K);
rlocus(num,den)
Matlab运行时出现的根轨迹图形窗口中,可以用鼠标单击所关心的根轨迹上的点,就出现有关这一点的信息,包括相应增益、极点位置、阻尼参数、超调量、自然频率。
例2系统开环传递函数)2()(2
n n
s s K s G ςωω+=中引入一个附加的极点s=-a ,即系统的
开环传递函数变为)
)(2()(2
a s s s Ka s G n n
++=ςωω
给出5.0,/2==ςωs rad n ,a 分别为1,3,5时系统的根轨迹变化曲线。
参考程序: clear clc wn=2; xita=0.5; a=[1,3,5]; for i=1:length(a)
G=tf(a(i)*wn^2,conv([1,2*xita*wn,0],[1,a(i)])); rlocus(G); axis([-8,5,-5,5]) hold on
disp('press any key to continue.') pause%系统暂停,按任意键继续 end
结论:从以上三图可以看出,引入负实极点后,系统的根轨迹左移;随着引入极点远离虚轴,根轨迹左移得越多,系统越容易稳定。
例3 观察上例中引入一个附加零点s=-b ,b=[1,3,5]时,系统的根轨迹的变化情况。
即系统的开环传递函数为)2(/)()(2
n n s s b b s K s G ςωω++=
参考程序: clear clc wn=2; xita=0.5;
b=[1,3,5];
for i=1:3
G=tf(wn^2*[1,b(i)]/b(i),[1,2*xita*wn,0]);
rlocus(G);
disp('press any key to continue.')
pause
hold on
end
结论:当引入的零点处于原系统两个极点之间,即b=1时,则系统的根轨迹全在实轴上;当当引入的零点处于原系统两个极点左侧时,则系统的根轨迹中有一部分形成原形。
无论形成的是圆还是圆弧,都是以零点为圆心,以零点到分离点的距离为半径。
(2) 确定分离点与相应的根轨迹增益
控制系统工具箱中还提供了rlocfind()函数,该函数允许用户求取根轨迹上指定点处的开环增益,并将该增益值下所有的闭环极点显示出来。
[K,r]=rlocfind(num,den)
例4 假设系统的开环传递函数为)
10)(2()(++=
s s s K
s G
当K 从0变化到无穷时,系统的根轨迹可以通过以下的语句来给出。
参考程序: clf
GH=tf(1,conv([1,2,0],[1,10])); rlocus(GH); [K,P]=rlocfind(GH)
选中根轨迹与虚轴的交点,则交点处的增益及对应的闭环特征根就显示出来。
>> Select a point in the graphics window
selected_point =
-0.0000 + 4.1615i
K =
208.1156
P =
-11.7998
-0.1001 + 4.1985i
-0.1001 - 4.1985i
结论:由以上结论可以看出当K=208.1156时,闭环的三个极点分别为:-11.7998,-0.1001 + 4.1985i,-0.1001 - 4.1985i。
-11.7998与其它两个极点相比,距虚轴距离较远,为非主导极点,其它两个极点为主导极点,则该系统可降阶为二阶系统。
因此系统的阶跃响应应为振荡收敛的形式。
结论可用以下指令验证。
GH=tf(K,conv([1,2,0],[1,10]));
sys1=feedback(GH,1)
step(sys1)
请同学们用以上方法再验证根轨迹上以下的几个特殊点的阶跃响应曲线:
a.根轨迹与虚轴的交点。
b.根轨迹上的分离点。
c.右半平面上的点。
(3)根轨迹的实际应用范例
例5设控制系统2如图所示,其中Gc(s)为改善系统性能而加入的校正装置。
若
Gc(s)可从s
K
t 、2s
K
a
、
20
2
+
s
s
K
a三种传递函数中任选一种,分别作出相应的根轨
迹曲线,分析说明应选择哪一种校正装置。
参考程序:
s=tf('s');
Kt=1;
Ka=1;
%建立校正装置Gc1,Gc2,Gc3的数学模型
Gc1=tf(Kt*s);
Gc2=tf(Ka*s^2);
Gc3=tf(Ka*s^2/(s+20));
%建立Go(s)的数学模型
Go=tf(10*(s+20)/(s^3+30*s^2+200*s+1000)); %建立校正后的系统模型
Gopen1=tf(Gc1*Go);
Gopen2=tf(Gc2*Go);
Gopen3=tf(10*Gc2/(s^3+30*s^2+200*s+1000)); Gopen=[Gopen1,Gopen2,Gopen3]
for i=1:3
figure(i)
rlocus(Gopen(i))
end
结论:可见,加入校正装置后改变了系统闭环极点的分布。
由根轨迹图可知,加第一种装置后,适当选择K ,可使系统闭环阻尼为0.707,达到最佳工程阻尼比。
(4)根轨迹设计器的使用
Matlab 控制系统工具箱里有一个根轨迹分析与设计的工具Rltool ,在这个工具中,既可以分析系统根轨迹,也能对系统进行设计。
特别是在被控对象前向通道内以设计零、极点方法来设计控制器时,该工具可以不断观察系统根轨迹响应曲线的变化,看是否满足性能要求。
例6 已知系统开环的传递函数为:)
10(1
)(2+=
s s s G
试用根轨迹设计器对系统进行补偿设计,使系统单位阶跃给定响应一次超调即衰减,并在根轨迹设计器观察根轨迹图与Bode 图,以及系统阶跃给定响应曲线。
参考程序:
n1=[1];
d1=conv(conv([1,0],[1,0]),[1,10]);
sys=tf(n1,d1);
rltool(sys)
运行程序后,系统自动打开根轨迹设计器:
从图中可见,根轨迹位于S平面右半平面,系统不稳定,需要进行补偿校正。
点击[Current Compensator]输入框,打开以下对话窗口:
在窗口中输入C的增益为60,引入一个附加负实数零点(-1.59),系统根轨迹如下图所示。
打开主菜单中的[View][Root Locus][Open-Loop Bode]则窗口中同时出现有根轨迹图和Bode图。
从Bode图可以看出,补偿校正后的系统是一个稳定的系统,其频域性能指标优良。
选中主菜单项[Analysis][Response to Step Command],画出系统单位阶跃响应曲线:
从响应曲线上看,系统的单位阶跃响应的超调量约为30%,并且一次超调后就衰减到稳态值。
实验内容:
系统1的开环传递函数为:)
102.0)(101.0()(++=
s s s K s G K 要求:(1)绘制并记录根轨迹;
(2)确定根轨迹的分离点与相应的根轨迹增益;
(3)确定临界稳定时的根轨迹增益。