8.4 控制系统校正的根轨迹法
根轨迹法是一种图解法,它描述了系统某一参数(通常是增益)从零变化到无穷大时其闭环极点位置的变化。但在实际中,只调整增益通常是不能获得所希望的性能的,因此,必须改造根轨迹,通过引入适当的校正装置来改变原来的根轨迹。引入校正装置就是在系统中增加零点和(或)极点,通过零/极点的变化改变根轨迹的形状。
用根轨迹法进行校正的基础,是通过在系统开环传递函数中增加零点和极点以改变根轨迹的形状,从而使系统根轨迹在S平面上通过希望的闭环极点。根轨迹法校正的特征是基于闭环系统具有一对主导闭环极点,当然,零点和附加的极点会影响响应特性。
应用根轨迹进行校正,实质上是通过采用校正装置改变根轨迹的,从而将一对主导闭环极点配置到期望的位置上。
在开环传递函数中增加极点,可以使根轨迹向右方移动,从而降低系统的相对稳定性,增大系统调节时间。前面讲的积分控制,相当于给系统增加了位于原点的极点,因此降低了系统的稳定性。
在开环传递函数中增加零点,可以使根轨迹向左方移动,从而提高系统的相对稳定性,减小系统调节时间。前面讲的微分控制,相当于给系统前向通道中增加了零点,因此增加了系统的超调量,并且加快了瞬态响应。
当系统的性能指标是以最大超调量、上升时间、调整时间、阻尼比以及希望的闭环阻尼比、闭环极点无阻尼振频率等表示时,采用根轨迹法进行校正比较方便,在设计系统时,如果需要对增益以外的参数进行调整,则必须通过引入适当的校正装置来改变原来的零极点。
采用根轨迹法确定串联校正参数的条件是:
- 已确定采用串联校正方案;
- 给定时域指标σp,ts,ess(∞)。
设已知系统不可变部分的传递函数为:
式中,K为开环增益,,开环极点pi(i=1,2,3,…,n-v)和零点zi(i=1,2,3,…,m)为已知数据。
8.4.1 基于根轨迹法的超前校正
用根轨迹法设计超前校正装置的步骤为:
(1)先假定系统的控制性能由靠虚轴最近的一对闭环共轭极点sd来主导。
(2)应用二阶系统参量ζ和ωn与时域指标间的关系,按给定的σp与ts确定闭环主导极点的位置。
(3)绘制原系统根轨迹,如果根轨迹不能通过希望的闭环主导极点,则表明仅调整增益不能满足给定要求,需加校正装置。如果原系统根轨迹位于期望极点的右侧,则应加入超前校正装置。
(4)计算超前校正装置应提供的超前相角。
(5)按式(8-15)求校正装置零点、极点位置。
(6)由幅值条件确定校正后系统增益。
(7)校验系统的性能指标,如果系统不能满足要求指标,适当调整零点、极点的位置。如果需要大的静态误差系数,则应采用其他方案。
8.4.2 基于根轨迹法的滞后校正
用根轨迹法设计串联滞后校正的设计步骤为:
(1)绘制出未校正系统的根轨迹。
(2)根据要求的瞬态响应指标,确定希望的闭环主导极点,根据根轨迹的幅值条件,计算与主导极点对应的开环增益。
(3)按给定的性能指标中关于稳态误差的要求,计算应增大的误差系数值。
(4)由应增大的误差系数值确定校正装置β值,通常β取值不超过10。
(5)确定滞后校正装置的零点、极点。原则是使零点、极点靠近坐标原点,且两者相距β倍。
(6)绘出校正后系统的根轨迹,并求出希望的主导极点。
(7)由希望的闭环极点,根据幅值条件,适当调整放大器的增益。
(8)校验校正后系统各项性能指标,如不满足要求,则适当调整校正装置零点、极点。
8.4.3 基于根轨迹法的超前滞后校正
用根轨迹法设计串联超前滞后校正的设计步骤为:
(1)根据要求的性能指标,确定希望的主导极点sd的位置。
(2)为使闭环极点位于希望的位置,计算超前滞后校正中超前部分应产生的超前相角。
(3)超前滞后校正装置的传递函数为:
(4)对超前滞后校正中滞后部分的T2选择要足够大,即
(5)利用求得的β值,选择T2,使
(6)检验性能指标。
8.4.4 MATLAB/Simulink在根轨迹法校正中的应用
根据前面所讲的根轨迹校正设计原则,可以采用MATLAB编写校正函数,调用函数便可设计出所需的校正器,为线性控制系统的设计提供了一种简单有效的途径。下面通过实例介绍用MATLAB实现校正器的根轨迹法设计的详细过程。
【例8-8】 已知系统开环传递函数,试设计超前校正环节,使其校正后系统的静态速度误差系数Kv≤4.6,闭环主导极点满足阻尼比ζ=0.2,自然振荡角频率ωn=12.0 rad/s,并绘制校正前后系统的单位阶跃响应曲线、单位脉冲响应曲线和根轨迹。
解:计算串联超前校正环节参数的子函数MATLAB程序代码如下。
- %采用根轨迹法设计的串联超前校正的子函数
- %G为校正前系统的开环传递函数;Gc为校正环节的传递函数
- function Gc=cqjz_root(G, s1, kc)
- numG=G.num{1}; denG=G.den{1}
- ngv=polyval(numG, s1); dgv=polyval(denG, s1)
- g=ngv/dgv
- theta_G=angle(g); theta_s=angle(s1)
- MG=abs(g); Ms=abs(s1)
- Tz=( sin(theta_s)-kc*MG*sin(theta_G-theta_s) )/( kc*MG*Ms*sin(theta_G)
- Tp=-( kc*MG*sin(theta_s)+sin(theta_G+theta_s))/(Ms*sin(theta_G))
- Gc=tf([Tz, 1], [Tp, 1])
主函数MATLAB代码如下:
- num=2.3; den=conv([1, 0], conv([0.2, 1], [0.15, 1]) ); G=tf(num, den)
- %建立校正前系统开环传递函数
- zeta=0.2; wn=12.0 %校正后系统的要求性能参数
- [num, den]=ord2(wn, zeta)
- s=roots(den)
- s1=s(1); kc=2
- Gc=cqjz_root(G, s1, kc)
- GGc=G*Gc*kc %校正后的系统开环传递函数
- Gy_close=feedback(G, 1) %校正前系统的闭环传递函数
- Gx_close=feedback(GGc, 1) %校正后系统的闭环传递函数
- figure(1); step(Gx_close, 'b', 3.5); hold on
- %绘制校正后系统的单位阶跃响应图
- step(Gy_close, 'r', 3.5) ; grid %校正前系统的单位阶跃响应
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(2); impulse(Gx_close, 'b', 3.5); hold on
- %绘制校正后系统的单位冲激响应图
- impulse(Gy_close, 'r', 3.5) ; grid %校正前系统的单位冲激响应
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(3); rlocus(G, GGc); grid %绘制校正后系统的根轨迹图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
运行结果如下:
- %超前校正环节传递函数
- 1.016 s + 1
- ------------
- 0.0404 s + 1
- %校正后系统闭环传递函数
- 4.672 s + 4.6
- -------------------------------------------------------
- 0.001212 s^4 + 0.04414 s^3 + 0.3904 s^2 + 5.672 s + 4.
系统校正前后的单位阶跃响应曲线如图8.33所示。
图8.33 例8-8系统校正前后单位阶跃响应曲线
系统校正前后的单位脉冲响应曲线如图8.34所示。
图8.34 例8-8系统校正前后单位脉冲响应曲线
系统校正前后的根轨迹曲线如图8.35所示。
图8.35 例8-8系统校正前后根轨迹图
由运行结果可知,串联超前校正环节的传递函数。在阶跃响应图上单击鼠标右键,选择弹出菜单“Charateristics”,分别选择“Peak Response”、“Rise Time”、“Setting Time”便可得到系统的超调、上升时间和调节时间。由运行图可知,校正前的系统超调为σ=17.3%,上升时间tr=0.58 s,调节时间ts=2.92 s;校正后的系统超调为σ=31.7%,上升时间tr=0.123 s,调节时间ts=2.3 s,可知校正后系统的性能提高了。
从根轨迹图可以看出,校正后系统根轨迹左移,从而提高系统的相对稳定性,缩短系统调节时间。
【例8-9】 已知系统开环传递函数,试设计滞后校正环节,使其校正后系统的静态速度误差系数Kv≤6,闭环主导极点满足阻尼比ζ=0.407,并绘制校正前后系统的单位阶跃响应曲线、单位脉冲响应曲线和根轨迹。
解:计算串联滞后校正环节参数的子函数MATLAB程序代码如下。
- %采用根轨迹法设计的串联滞后校正的子函数
- %G为校正前系统的开环传递函数;Gc为校正环节的传递函数
- function [Gc, kc]=zhjz_root(G, zeta, wc, Tz)
- G=tf(G); [r, k]=rlocus(G)
- za=zeta/sqrt(1-zeta^2)
- ri=r(1, find(imag(r(1, :))>0))
- ra=imag(ri)./real(ri)
- kc=spline(ra, k(find(imag(r(1, :))>0)), 1/za)
- syms x; syms ng; syms dg
- ng=poly2sym(G.num{1}) ; dg=poly2sym(G.den{1})
- ess=limit(ng*kc/dg*x)
- beta=round(100/sym2poly(ess)/wc); Tp=Tz/beta
- Gc=tf([1, Tz], [1, Tp])
主函数的代码如下:
- num=4; den=conv([1, 0], [1, 2.5] ); G=tf(num, den) %建立校正前系统的传递函数
- zeta=0.407; wc=6; Tz=0.1
- [Gc, Kc]=zhjz_root(G, zeta, wc, Tz)
- GGc=G*Gc*Kc %校正后系统的开环传递函数
- Gy_close=feedback(G, 1) %校正前系统的闭环传递函数
- Gx_close=feedback(GGc, 1) %校正后系统的闭环传递函数
- figure(1); step(Gx_close, 'b'); hold on %绘制校正后系统的单位阶跃响应图
- step(Gy_close, 'r'); grid %绘制校正前系统的单位阶跃响应图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(2); impulse(Gx_close, 'b'); hold on %绘制校正后系统的单位冲激响应图
- impulse(Gy_close, 'r'); grid %绘制校正前系统的单位冲激响应图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(3); rlocus(G, GGc); grid %绘制校正后系统的根轨迹图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
运行结果如下:
- %滞后校正环节传递函数
- s + 0.1
- ---------
- s + 0.025
- %系统增益
- Kc = 2.3581
- %校正后系统闭环传递函数
- 9.433 s + 0.9433
- ----------------------------------
- s^3 + 2.525 s^2 + 9.495 s + 0.9433
系统校正前后的单位阶跃响应曲线如图8.36所示。
图8.36 例8-9系统校正前后单位阶跃响应曲线
系统校正前后的单位脉冲响应曲线如图8.37所示。
图8.37 例8-9系统校正前后单位脉冲响应曲线
系统校正前后的根轨迹曲线如图8.38所示。
图8.38 例8-9系统校正前后根轨迹
由运行结果可知,串联超前校正环节的传递函数。在阶跃响应图上单击鼠标右键,选择弹出菜单“Charateristics”,分别选择“Peak Response”、“Rise Time”、“Setting Time”,便可得到系统的超调、上升时间和调节时间。由运行图可知,校正前的系统超调为σ=8.08%,上升时间tr=0.961s,调节时间ts=2.99 s;校正后的系统超调为σ=27.4%,上升时间tr=0.478 s,调节时间ts=2.3 s,可知校正后系统的性能提高了。
【例8-10】 已知系统开环传递函数
试设计超前滞后校正环节,使其校正后系统的静态速度误差系数Kv≤5,闭环主导极点满足阻尼比ζ=0.2和自然振荡角频率ωn=5 rad/s,相角裕度为50°,并绘制校正前后系统的单位阶跃响应曲线、单位脉冲响应曲线和根轨迹。
解:函数MATLAB程序代码如下。
- z=[]; p=[0, -0.4]; k=8
- Gz=zpk(z, p, k); G=tf(Gz)
- zeta=0.2; wn=5
- kc=1; Tz=0.1; dPm=50+5
- ng=G.num{1}; dg=G.den{1}
- [num, den]=ord2(wn, zeta)
- s=roots(den)
- s1=s(1)
- Gc1=cqjz_root(G, s1, kc)
- G1=G*Gc1*kc
- [Gc2, Kc2]=zhjz_root(G, zeta, wn, Tz)
- GGc=G1*Gc2*Kc2 %校正后系统的开环传递函数
- Gy_close=feedback(G, 1) %校正前系统的闭环传递函数
- Gx_close=feedback(GGc, 1) %校正后系统的闭环传递函数
- figure(1); step(Gx_close, 'b'); hold on %绘制校正后系统的单位阶跃响应图
- step(Gy_close, 'r'); grid %绘制校正前系统的单位阶跃响应图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(2); impulse(Gx_close, 'b'); hold on %绘制校正后系统的单位冲激响应图
- impulse(Gy_close, 'r'); grid %绘制校正前系统的单位冲激响应图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
- figure(3); rlocus(G, GGc); grid %绘制校正后系统的根轨迹图
- gtext('校正前的'); gtext('校正后的') %放置曲线的文字注释
运行结果如下:
- %超前校正环节传递函数
- 1.358 s + 1
- -----------
- 0.425 s + 1
- %滞后校正环节传递函数
- s + 0.1
- ----------
- s + 0.0125
- %校正后系统闭环传递函数
- 1.358 s^2 + 1.136 s + 0.1
- ------------------------------------------------
- 0.425 s^4 + 1.175 s^3 + 1.773 s^2 + 1.141 s + 0.
系统校正前后的单位阶跃响应曲线如图8.39所示。
图8.39 例8-10系统校正前后单位阶跃响应曲线
系统校正前后的单位脉冲响应曲线如图8.40所示。
图8.40 例8-10系统校正前后单位脉冲响应曲线
系统校正前后的根轨迹如图8.41所示。
图8.41 例8-10系统校正前后根轨迹
由运行结果可知,串联超前校正环节的传递函数。在阶跃响应图上单击鼠标右键,选择弹出菜单“Charateristics”,分别选择“Peak Response”、“Rise Time”和“Setting Time”,便可得到系统的超调、上升时间和调节时间。由运行图可知,校正前的系统超调为σ=79.9%,上升时间tr=0.384 s,调节时间ts=19.1s;校正后的系统超调为σ=28.9%,上升时间tr=0.907 s,调节时间ts=4.19 s,可知校正后,系统的性能显著提高了。