欢迎光临散文网 会员登陆 & 注册

闭环系统设计【1】——比例控制

2022-05-02 12:33 作者:HD-nuke8800  | 我要投稿

前文回顾

        在前文中我介绍了「开环系统传递函数Open Loop Transfer Function」、「闭环系统传递函数Close Loop Transfer Function」和「开环传递函数Loop Transfer Function」以及它们的系统框图,不熟悉的话请回看之前的文章。

传送门:https://www.bilibili.com/read/cv16291318

        同时推荐我翻译的《理解零点和极点》,以帮助理解本文。

传送门:https://www.bilibili.com/read/cv16169162



正文

1、系统建模

        假设有一个水池,其底面积为A;水位高度为h;水箱底有个漏水孔,其流阻为R;不考虑自然下雨蒸发,设计一个自动注水系统控制注水流量f,使得水位h保持在10。

        漏水速度与水压有关,而水压又与水位高度有关,所以漏水速度loss=ρgh/R。由于不考虑自然下雨蒸发(外界干扰),所以其扰动D(s)=0。于是水池中水体积的变化量为dv=f*dt-loss*dt=A*dh(变化的水体积=注水量-漏水量=水池底面积*变化的水位),由此可以列出微分方程:

图1:系统微分方程

        对其进行拉普拉斯变换后即可得到其系统传递函数G:

图2:系统传递函数G

        显然这是一个一阶系统,其拥有一个极点。由于物理量ρg/AR都是正数,所以其极点位于左半平面,系统稳定。

        为了简化问题,把一些参数归一化。令A=1、ρg/AR=1,则可得开环系统传递函数Open Loop Transfer Function为G=1/(s+1),其极点p=-1。令水位传感器H=1,待设计的控制系统C=K,目标水位h=10,此时便得到了闭环系统的框图:

图3:水池系统框图


2、比例控制

        K是个常数,我们给系统引入了一个最简单的控制逻辑——比例控制。K是对误差Error的敏感程度,换句话说就是注水系统的注水流量对水位差的放大程度。K的值越大,在等同水位差时注水流量越大。于是可以得出环路传递函数Loop Transfer Function为GCH=K/(s+1),|GCH|称为环路增益Loop Gain,所以调节K就是在调节环路的增益Gain。

        最终系统的闭环传递函数Close Loop Transfer Function为GC/(1+GCH),我们需要求出其极点,也就是特征方程1+GCH=0的根。解1+K/(s+1)=0得s=-(K+1),也就是极点p=-(K+1)。由于目标值Reference是个常数10,所以其拉式变换式为10/s,于是可以得出水位为h(t)=10K/(K+1)*(1-exp(pt))(假设初始水位为0),初始值为0,随着时间推移水位指数衰减到10K/(K+1)处。

PS:有人或许会想Close Loop Transfer Function的分子G也有个极点啊,别忽略了呀!实际上这个极点特征方程也有,一个在分子一个在分母相互抵消没了,所以Close Loop Transfer Function极点只剩下特征方程的根了。可以自行推算公式证明。

        通过以上结果可以观察到,Close Loop Transfer Function的极点p,在输出水位的exp指数项里头。这也说明为什么设计系统要保证所有极点都在左半平面。在左半平面时p的实数部是负数,对应于衰减的exp指数项;如果p在右半平面,则p的实数部是个正数,意味着exp是个增长的、指数爆炸的输出,系统就是不稳定的。

        同时我们发现,其极点p的位置与增益K有关。令p>0时可以求得K<-1。K是个负数意味着注水系统是一个相反的逻辑:水位偏低时(Error>0)不仅不注水还反向抽水;水位偏高时(Error<0)还继续往里注。显然这种操作不但不能让水位达到目标水位,反而会距离目标越来越远。K为负数但没小于1时系统没有发散是因为漏水的约束。虽然水位偏高了还继续往里注水,但由于水位上升会导致漏水加强,两者达到了一个平衡后水位也就不再增长了。当K<-1后由于注水力度大于漏水的自然调节,系统就会发散。

图4:当K=-1.2时系统输出发散,不要考虑为什么有负数的水位

PS:当极点p位于虚轴时,系统为临界稳定。因为其指数项exp始终是一个常数,虽然不会发散但也不会衰减(可以认为系统能量无法释放)。一旦外部激励施加到极点位置时(外部能量注入),极点将变成“双重极点”(两极点位置重合),此时系统输出发散(一直注入能量但无法释放),系统变为不稳定。典型例子为无阻尼振荡系统施加共振频率,共振振幅将变成无穷大。

        当K为正数时极点p位于左半平面,而且K值越大p越往左(远离原点)。极点左移意味着exp项衰减速度越快,系统的响应速度也越快。即调大K值会加快系统的响应速度,如下图所示:

图5:K=1(黄色)和K=10(蓝色)时的系统响应

        我们发现调大K值有利于提高系统的响应速度,使得水位更快接近目标值。这就是比例控制最直接的体现:提高系统作用的力度以加快系统的响应。但有时候K并不是越大越好,这个问题留到下一篇文章分析。


3、稳态误差

        细心的读者应该会发现,不同的K值最终水位的稳定高度也不一样,但始终与目标水位10有个误差,这个误差称为稳态误差。稳态误差定义为系统稳定后目标值与稳定值的差值,即

图6:稳态误差定义

        通过上面计算可以知道水位最终稳定高度为10K/(1+K),于是可以求得ess=10-10K/(1+K)=10*1/(1+K)。可以看到ess也是和K有关,通过图5验证:当K=1时可得ess=5;K=10时可得ess=0.91。K越大误差越小,但无法等于0。或许你会想,让K→∞,那稳态误差不就没有了吗?然而现实情况中会有很多非线性约束。在系统设计中讨论的一般是BIBO(Bounded Input Bounded Output)系统,无界的输入将使得系统不再是线性系统,上述的模型计算都将失效。以注水系统来说,注水系统也没法实现水位偏差一点点时就往里注入无穷大的水流量。既然K无法取得无穷大,稳态误差就会存在,所以这就是比例控制的缺陷:无法消除稳态误差。想要消除稳态误差,仅仅使用比例控制是不够了,需要引入新的控制手段。这个问题留到下一章讨论,现在讨论一些新的知识。


4、终值定理

        前文在计算稳态误差时,是解出了输出水位表达式h(t)=10K/(K+1)*(1-exp(pt))。但问题是并不是所有的系统都会像一阶系统这么容易解出结果。这里有一份二阶系统的输出解,可以看看输出表达式有多复杂,计算过程略(大概24页A4纸)。

传送门:https://www.bilibili.com/read/cv16026431

        如果是三阶或更高阶的系统,其输出表达式就更难求解了。我们需要一个简单的手段解出稳态误差,下面有请终值定理:

图7:终值定理

        在极限存在的情况下,稳态误差为:

图8:稳态误差计算

        以水池系统为例,我们可以计算水位的稳态误差为:

图9:水池系统的稳态误差

        可见最后值与前面算出来的一样。终值定理好处在于可以不用求出解析解时直接从复频域中得出终值,前提是时域的极限存在。比如K=-5时系统是发散的,求出的ess=-2.5是无意义的。


5、根轨迹

        同上,我们求解特征方程1+GCH=0的根得到极点p=-(K+1)。因为一阶系统是个一元一次方程所以容易求解。随着系统阶数增加,我们将面临一元三次方程甚至一元五次方程,其求解将异常困难。所以伊文思(w.R.Evans) 提出了根轨迹。

        为了直观理解根轨迹,先看以下图片:

图10:水池系统的极点变化(GIF)
图11:Loop Transfer Function_1幅角图
图12:MATLAB绘制水池系统的根轨迹

        假设另一个系统(先忘掉水池系统)的Loop Transfer Function为(s+2)/(s(s+1)),其具有一个零点:z1=-2,两个极点:p1=0、p2=-1,其根轨迹为:

图13:1零点2极点系统的极点变化(GIF)
图14:Loop Transfer Function_2幅角图
图15:具有1零点2极点的系统根轨迹

        可以直观的看到,随着K的变化,闭环系统的极点位置也在变化,也就是特征方程1+GCH=0的根也在变化。随着K从0→,根在复平面上行走留下了一串轨迹,其轨迹定义为根轨迹。通过根轨迹可以知晓极点的走向,从而通过指定极点p的位置倒算出需要设置K的值(使用计算机)。

        当K=0时,可以认为反馈被“切断”,Close Loop极点的位置即为Loop极点位置。所以我们是在拿Loop Transfer Function来绘制根轨迹以确定Close Loop Transfer Function的极点走向。当K=∞时,Close Loop极点的位置在Loop零点的位置(没有零点则无穷远)(可以通过数学证明,此略)。即Close Loop极点起于Loop极点,终于Loop零点。

        这里也可以为零点作用给出一个解释:对于纯开环系统Open Loop System,输出取决于极点,零点用于影响极点的输出权重。但由于极点位置固定,输出特性无法改变。而在闭环系统Close Loop System中,零点还起到影响根轨迹的作用,从而改变极点位置,最终改变输出特性。

        如下图16所示,与图15对比,当添加一个零点z2=1后,根轨迹的走向被完全改变:

图16:具有2零点2极点的系统根轨迹

        对于特征方程1+GCH=0,可以得GCH=-1,也就是说根的幅角arg(GCH)=π,即180°。所以整个根轨迹都会满足幅角=π,作出Loop Transfer Function的幅角图像,可以看出非常明显的颜色分区如图14、17所示,交界处即为根轨迹:

图17:Loop Transfer Function_2幅角图(另一视角)

        读者可以自行学习更多根轨迹的知识,了解根轨迹的性质以及如何作出根轨迹。在这里允许偷一下懒,利用计算机程序MATLAB,便可快速得出根轨迹以及对应的K值,以水池系统为例:

T=zpk([],[-1],1);

rlocus(T); 


6、伯德图Bode Plot

        根轨迹提供了一个从时域的视角观察系统响应。伯德图则是提供了频域的视角观察系统响应。而观察的对象也是Loop Transfer Function,可以说它再次起到了一个中间者的角色。

        还是以水池系统为例,令K=10,现在看看Loop Transfer Function的幅值函数图,将其对数化+二维化后得到伯德图:

图18:Loop Transfer Function三维幅值图
图19:Loop Transfer Function三维幅值图(对数化)
图20:Loop Transfer Function伯德图(K=10)

        首先看幅值伯德图,横轴是频率(rad/s),纵轴是开环增益Loop Gain(dB),分贝与增益换算关系为dB=20*log(|GCH|)。即20dB代表了10倍的增益、40dB代表100倍增益;以此类推-20dB代表0.1倍增益,-40dB代表0.01倍增益,而0dB代表增益为1,即环路对信号既无放大也无缩小。水池系统以K=10为例,可以看到起始增益为20dB。

        水池系统有个原生极点p=-1,所以在频率ω=1的位置产生一个转折频率,幅值曲线开始以-20dB/dec的斜率降低,说明该系统为一阶系统。以此类推,当幅值曲线以-40dB/dec的斜率下降时表明该系统是二阶系统。一个极点产生-20dB/dec的斜率;而一个零点会产生+20dB/dec的斜率。记住这个结论。

        当幅值曲线具有负斜率后,它将一直下降并在某个频率ω穿过0dB轴。幅值低于0dB时意味反馈信号比输入时还弱,其起到的反馈效果大打折扣,可以近似认为没有反馈,系统开环Open Loop。于是乎0dB轴成为了一个分水岭,幅值高于0dB的频率才有反馈效果,而低于0dB的频率则被系统忽略/抑制。

        幅值曲线与0dB的交点对应的频率ω称为“穿越频率ωcross”、“截止频率”。同样地它也成为了一个分水岭,低于截止频率的频率有反馈效果,高于截止频率的频率被系统忽略/抑制。而截止频率被称之为系统的带宽。如水池系统为例,其截止频率ω=10 rad/s。

        现在看相移(幅角)伯德图,横轴是频率(rad/s),纵轴是相移(°)。往环路中注入正弦波信号,正弦波绕了一个环路后,它相较注入时产生了相移,这个相移就是环路的相移。相移为正数表示超前;相移为负数表示滞后。观察相移曲线也会发现,在ω=1的位置相移为-45°,那里正是原生极点的位置,而总相移达到了-90°。同样记住这个结论:一个极点产生-90°的总相移(滞后);一个零点产生+90°的总相移(超前),前提是零极点都在左半平面。

        同幅值曲线一样,相移曲线有个关键位是180°、-180°相移。当相移达到±180°后,意味着反馈反相(sin(t±180°)=-sin(t)),负反馈变成了正反馈。以水池系统为例,当K为负数时产生的效果上文已经分析。所以在设计系统时必须注意相移曲线,在截止频率内相移必须控制在±180°以内,一旦达到/穿过±180°线意味着系统不再稳定。而截止频率外由于可以近似无反馈,相移达到/越过±180°不会造成自激。图21为当K=-10时水池系统的Loop Transfer Function伯德图,可与图20对比:

图21:Loop Transfer Function伯德图(K=-10)

        现在观察当调整K值(增益)时,伯德图会有什么变化。图22为K=5时水池系统的Loop Transfer Function伯德图,可与图20(K=10)对比:

图22:Loop Transfer Function伯德图(K=5)

        看伯德图主要看这几个参数:

1、低频增益Gain;

2、截止频率ωcross;

3、穿过0dB轴斜率dB/dec;

4、截止频率处相移以及相角裕度PM。

        可以看到调节增益K只会影响幅值曲线(上下平移),而对相移曲线没有影响(K取正数时)。所以改变K只会改变低频增益Gain和截止频率ωcross,而对斜率和相移特性无改变,但会改变相角裕度。现列出不同水池系统不同K值对应的参数进行对比:

K=5: Gain=14dB、ωcross=4.9、斜率=-20dB/dec、Phase=-78.4°、PM=101.6°;

K=10:Gain=20dB、ωcross=10、斜率=-20dB/dec、Phase=-84.2°、PM=95.8°。

        通过这几个参数可以得出以下结论:

1、K=5的低频环路增益Gain比K=10的小,所以K=5的系统的稳态误差比较大;

2、K=10的系统截止频率比K=5的大,说明K=10的系统反应速度(exp项收敛速度)比较快;

3、两个系统幅频曲线斜率均为-20dB/dec,说明两个系统均为一阶系统;

4、两个系统的相角裕度均超过90°,不会穿越-180°线,系统均稳定不会自激。

        伯德图相较于根轨迹比较好画,读者可以看我翻译的文章后面有个简易绘制伯德图方法。当然借助计算机程序MATALB也可以轻松绘制伯德图,以注水系统为例:

T=zpk([],[-1],1);

margin(T);

grid on;



总结

        本文虽然讲的是比例控制,但花了大量篇幅在终值定理、根轨迹、伯德图上。因为比例控制仅仅是控制手段,但控制后的效果需要使用分析工具进行分析,而这些都是分析工具,所以在第一篇中提前讲述了分析工具,熟练掌握分析工具非常重要。

        顺便说一个,控制系统设计往往没有最优解,是各个指标参数相互妥协的结果。以水池系统来说,看起来K值越大越好,但能大到多少就看现实情况了。比如注水系统最大注水量制约,或者由于注水太快受到水的惯性/传感器延迟导致模型失效等等。一般来说只要满足到设计要求即可,比如要求1s内完成注水工作,那K值只要设置3以上就够了;但如果加了条件要求稳态误差小于1,那K值得9以上才满足要求。总之还是看需求设置。(完)


HD-nuke8800

2022/5/1


闭环系统设计【1】——比例控制的评论 (共 条)

分享到微博请遵守国家法律