本文主要介绍最速跟踪微分器和线性ADRC的参数整定,以及在模型中的应用问题

1 ADRC参数整定

1.1 跟踪微分器(TD)参数整定

1.1.1 连续系统的最速跟踪微分器

连续系统的最速跟踪微分器是基于二阶系统的快速最优控制来的(至于为什么是二阶,大家也可以思考一下)。如果理解了快速最优控制,这里的调参就容易很多了。
首先简单介绍下什么是快速最优控制,对于如下形式的被控模型:
{ x 1 ˙ = x 2 x 2 ˙ = u ( ∣ u ∣ ≤ r ) ( 1 ) \left\{ \begin{array}{l} \dot{x_1}=x_2 \\ \dot{x_2} =u \quad (|u| \leq r) \quad \quad (1) \end{array}\right. {x1˙=x2x2˙=u(ur)(1)
快速最优控制的目标是设计 u u u 使得 x 1 x_1 x1 在最短时间内镇定。或者对于跟踪控制问题来说,就是令误差 e = x 1 r − x 1 e=x_{1r}-x_1 e=x1rx1 在最短时间内收敛到0.
为方便理解,举个例子:假设 x 1 x_1 x1 是位置, x 2 x_2 x2 就是加速度, u u u 是速度,那么 r r r 就是控制系统能够提供的最大加速度。
最终控制器形式为:
u = − r s i g n ( x 1 + x 2 ∣ x 2 ∣ 2 r ) ( 2 ) \begin{array}{l} u=-rsign(x_1+\frac{x_2|x_2|}{2r}) \quad \quad (2) \end{array} u=rsign(x1+2rx2x2)(2)

基于此设计的连续系统最速跟踪微分器为:
{ x 1 ˙ = x 2 x 2 ˙ = − r s i g n ( x 1 − v ( t ) + x 2 ∣ x 2 ∣ 2 r ) ( 3 ) \left\{ \begin{array}{l} \dot{x_1}=x_2 \\ \dot{x_2} =-rsign(x_1-v(t)+\frac{x_2|x_2|}{2r}) \quad \quad (3) \end{array}\right. {x1˙=x2x2˙=rsign(x1v(t)+2rx2x2)(3)
其中 v ( t ) v(t) v(t) 是指令, x 1 x_1 x1 为对指令的跟踪(也可以理解成滤波之后的值), x 2 x_2 x2为对指令的微分,且这里 x 2 x_2 x2的微分的最大值为 r r r

假设对于位置控制问题,如果控制量能够提供的最大加速度为 r r r,则使用此最速跟踪微分器可以理解成是考虑了被控对象的物理特性限制的。

实际整定参数 r r r的时候也可以考虑控制量限制。

1.1.1 离散系统的最速跟踪微分器

工程上用跟踪微分器肯定还是要用离散形式的。由于连续系统的最速微分跟踪器在应用到离散系统时会有高频振荡问题,因此需要设计离散系统的最速跟踪微分器,下面进行介绍:

离散系统的最速跟踪微分器:

{ d = r h 0 2 a 0 = h 0 x 2 y = x 1 + a 0 a 1 = d ( d + 8 ∣ y ∣ ) a − 2 = a 0 + s i g n ( y ) ( a 1 − d ) / 2 a = ( ( a 0 + y ) f s g ( y , d ) + a 2 ( 1 − f s g ( y , d ) ) ( 4 ) f h a n = − r ( a / d ) f s g ( a , d ) − r s i g n ( a ) ( 1 − f s g ( a , d ) ) \left\{ \begin{array}{l} d=rh_0^2 \\a_0=h_0x_2 \\y=x_1+a_0 \\a1=\sqrt{d(d+8|y|)} \\a-2=a_0+sign(y)(a_1-d)/2 \\a=((a_0+y)fsg(y,d)+a_2(1-fsg(y,d)) \quad \quad \quad \quad (4) \\fhan=-r(a/d)fsg(a,d)-rsign(a)(1-fsg(a,d)) \end{array}\right. d=rh02a0=h0x2y=x1+a0a1=d(d+8y) a2=a0+sign(y)(a1d)/2a=((a0+y)fsg(y,d)+a2(1fsg(y,d))(4)fhan=r(a/d)fsg(a,d)rsign(a)(1fsg(a,d))

其中: f s g ( x , d ) = ( s i g n ( x + d ) − s i g n ( x − d ) ) / 2 fsg(x,d)=(sign(x+d)-sign(x-d))/2 fsg(x,d)=(sign(x+d)sign(xd))/2
f h a n fhan fhan 即对 y y y 的微分

其中需要整定的参数有两个, r r r h 0 h_0 h0.

其中 r r r 是跟最速跟踪的速度有关系, r r r 越大,则跟踪微分器对指令跟踪的越快(相位滞后越小,幅值衰减越少),微分出来的值滞后也越小,即越接近真实值,但也会放大噪声。这个参数就相当于一阶线性微分器 s s / K + 1 \frac{s}{s/K+1} s/K+1s 中的 K K K.

h 0 h_0 h0 在公式的实际推导中应该是离散系统的计算步长,但是如果直接令 h 0 h_0 h0 等于步长的话,跟踪阶跃指令时,微分器会有超调,也会导致对指令噪声的不必要放大。因此,这里的 h 0 h_0 h0 可以取的比计算步长大一些,可以起到滤波的作用。在韩京清那里,这个参数被叫做滤波因子。**根据我的经验,取成计算步长的2倍时,对阶跃指令微分就不会有超调了。**若想进一步降低微分的噪声,可以取的更大些。但注意,调大这个参数同样会导致相位滞后和幅值的衰减。

这里没有仿真图,是因为就这两个参数,读者自己稍微调整一下就能有所体会。

1.2 LADRC

韩京清研究员于上世纪末提出的ADRC方法继承了PID不依赖模型的优点,同时具有很强的抗扰能力和控制解耦能力,能够很好地应用于非线性对象的控制。但是由于待整定参数过多,其在实际工程中的应用受到一定的限制。高志强于2003年提出了线性ADRC (LADRC)的方法,其有诸多好处。

  1. 抗扰能力强,这点继承了韩京清的ADRC,也是最关键的好处。
  2. 参数都是线性增益,可以用带宽和阻尼比表示,易于整定,
  3. 能够求取闭环传递函数,方便进行时频域分析。

基于以上优点,线性ADRC十分适合在工程应用,本文将对 LADRC 以及如何设计 LADRC 进行介绍。

LADRC主要分为两部分,线性扩张状态观测器和线性状态反馈。
其中线性反馈比较基础,就不介绍了。。。直接来介绍一阶ESO。

先说一下为什么介绍一阶ESO而不是更高阶。

1.2.1 关于系统阶数的思考

很多人包括韩京清在介绍ADRC的时候都是以二阶系统为例,其实有道理。因为现实物理中很多系统都是二阶的,比如力到位移,力矩到角度(还能再举个别的例子吗)。这是一个很神奇的规律。

但是呢!再深入思考你会发现,刚刚举的两个例子还有个规律,内环是动力学方程,外环是运动学方程。力(加速度)-→ 速度 → 位移这个二阶系统来说,力到速度是动力学方程(准确的说加速度和力的关系才是动力学方程),而速度到位移的关系是运动学。力矩(角加速度)-→ 角速度 → 角度这个二阶系统也是一样的道理。

动力学和运动学又有什么区别呢?区别就在于,运动学方程是准确的,没有扰动的,可以直接用动态逆,不需要观测扰动。而扰动只在动力学方程才会出现。
例如:对于受到推力在直线上运动的小车来说,速度和位移的关系就是一个积分,这是绝对没误差的。但是推力到速度的关系就不一定了,因为小车会受到别的外力,例如摩擦力、风阻力等等。此时这些未建模的力,就可以归结为扰动,用一个扰动观测器去观测补偿。

1.2.2 一阶线性扩张状态观测器(LESO)

对于一阶系统如:
{ x 1 ˙ = b ∗ u + w y = x 1 ( 5 ) \left\{ \begin{array}{l} \dot{x_1} =b*u+w \\ y=x_1 \quad \quad \quad \quad \quad (5) \end{array}\right. {x1˙=bu+wy=x1(5)
其中 u u u 为控制量, b b b 为控制效率, x 1 x1 x1 为状态量, y y y 为被控量, w w w 为扰动量

可设计如下ESO观测器:
{ e 1 = y − z 1 z 1 ˙ = 2 w 1 e 1 + b ∗ u + z 2 ( 6 ) z 2 ˙ = w 1 2 e 1 \left\{ \begin{array}{l} e_1 = y - z_1 \\\dot{z_1} =2w_1e_1 + b*u +z_2 \quad \quad (6) \\\dot{z_2} =w_1^{2}e_1 \quad \end{array}\right. e1=yz1z1˙=2w1e1+bu+z2(6)z2˙=w12e1
z 2 z_2 z2 即为对扰动 w w w 的观测量,参数 w 1 w_1 w1 可称为ESO的带宽。

基于此LESO可设计指令跟踪控制器:
{ e = y r − y u = ( k e − z 2 + y ˙ r ) / b ( 7 ) \left\{ \begin{array}{l} e =y_r-y \\u = (ke-z_2+\dot{y}_r)/b \quad \quad \quad (7) \end{array}\right. {e=yryu=(kez2+y˙r)/b(7)

其中 y ˙ r \dot{y}_r y˙r 为指令的微分。
将控制器带入式(5)可得闭环系统的响应为:
e ˙ = − k e + ( z 2 − w ) \dot{e} =-ke+(z_2-w) \quad \quad \quad e˙=ke+(z2w) (8)
这时候如果只有个常值扰动,那么 z 2 z_2 z2很快就能收敛到 w w w,则系统是渐进收敛的,因为 e ˙ = − k e \dot{e} =-ke e˙=ke

注意,这里的控制器(8)相较于一般LADRC多了一个 y ˙ r \dot{y}_r y˙r
如果有了这个前馈之后系统的带宽是无限大(感觉很神奇),但这是不可能的,因为 y r y_r yr带宽太大了之后,现实中的物理系统是不可能执行 y ˙ r \dot{y}_r y˙r的,会受到执行器的饱和以及速率饱和的限制。
如果去掉这个前馈项,并假设LESO的带宽高过控制器增益很多(3-5倍)的话,那么控制器的增益就是闭环系统的带宽。

因为这里我懒的推导闭环系统的传递函数了,所以直接就这么说了hhh。

但是可以推导一下LESO的传递函数,给大家看看它的另一面。

式(6)中LESO的传递函数可以写成如下形式:
{ z 1 = 2 ∗ w 1 s + w 1 2 s 2 + 2 ∗ w 1 s + w 1 2 y + b s s 2 + 2 ∗ w 1 s + w 1 2 u z 2 = w 1 2 s s 2 + 2 ∗ w 1 s + w 1 2 y − b w 1 2 s 2 + 2 ∗ w 1 s + w 1 2 u ( 9 ) \left\{ \begin{array}{l} z_1 =\frac{2*w_1s+w_1^2}{s^2+2*w_1s+w_1^2}y+ \frac{bs}{s^2+2*w_1s+w_1^2}u\\ \\ z_2=\frac{w_1^2s}{s^2+2*w_1s+w_1^2}y- \frac{bw_1^2}{s^2+2*w_1s+w_1^2}u\quad \quad \quad \quad (9) \end{array}\right. z1=s2+2w1s+w122w1s+w12y+s2+2w1s+w12bsuz2=s2+2w1s+w12w12sys2+2w1s+w12bw12u(9)

z 1 z_1 z1 不太容易看出什么,但是从 z 2 z_2 z2 可以很明显看出来ESO是怎么对扰动 w w w 进行观测的,实际上就是对 y y y 进行微分得到 x ˙ 1 \dot{x}_1 x˙1 ,然后再减掉 b ∗ u b*u bu 的分量。

怎么样,是不是很神奇。

1.2.3 基于LESO的一阶系统控制器的参数整定

对于一阶系统:
{ x 1 ˙ = b ∗ u + w y = x 1 \left\{ \begin{array}{l} \dot{x_1} =b*u+w \\ y=x_1 \quad \quad \quad \quad \quad \end{array}\right. {x1˙=bu+wy=x1
基于此LESO (6)可设计指令跟踪控制器:
{ e = y r − y u = ( k p e − z 2 ) / b ( 10 ) \left\{ \begin{array}{l} e =y_r-y \\u = (k_pe-z_2)/b \quad \quad \quad (10) \end{array}\right. {e=yryu=(kpez2)/b(10)

其主要就有两个参数(这里不讨论 b b b):
控制器的线性反馈增益 k p k_p kp , 以及LESO的带宽 w 1 w_1 w1 。其中 k k k 主要影响的是系统的带宽,即对指令信号的复现能力。而 w 1 w_1 w1 主要影响的是系统的抗扰能力,当然,反馈增益也会影响抗扰能力(似乎没有抗扰带宽这种说法)。
下面推导一下闭环系统传递函数和灵敏度传递函数给大家看一下这两个参数的影响。
闭环系统传递函数:
y = k p s + k p y r y=\frac{k_p}{s+k_p}y_r y=s+kpkpyr
即LESO完全不会影响闭环系统的带宽。(我自己推导也感觉挺神奇,大家可以试一下)

k p k_p kp就是闭环系统的带宽(因为这是一个惯性环节,他的时间常数的倒数就是其带宽),这个参数就根据系统所需要的带宽(时域上即对应响应速度的概念)和稳定裕度进行整定即可。

灵敏度传递函数:
u = ( s + w 1 ) 2 ( s + k p ) + s 2 ( s + 2 w 1 ) ( s + w 1 ) 2 ( s + k p ) d u=\frac{(s+w_1)^2(s+k_p)+s^2(s+2w_1)}{(s+w_1)^2(s+k_p)}d u=(s+w1)2(s+kp)(s+w1)2(s+kp)+s2(s+2w1)d
其中 d d d 为扰动量, u u u 为控制量。

不好意思,这个灵敏度传函有点复杂,我没从理论分析出什么来。。。
但是我们可以构造这么一个传函,然后调一下参数看看分别有什么变化。

首先是ESO带宽对灵敏度的影响( K p = 5 , w 1 = 30 : 10 : 70 K_p=5, w_1=30:10:70 Kp=5,w1=30:10:70):
ESO带宽对灵敏度曲线的影响
可以看到随着ESO带宽提高,灵敏度曲线几乎是向右平移的,说明系统的抗扰能力几乎是随着ESO带宽等比例提高的。

接下来是控制器增益 K p Kp Kp 对灵敏度的影响
控制器增益对灵敏度曲线的影响
可以看到控制器增益对灵敏度的影响有点类似于ESO带宽,但是由于控制器增益要小于ESO带宽很多,因此其影响的频率在更低频的范围,但是在低频也是几乎在平移哦。

这个告诉我们什么呢?如果根据系统带宽和稳定性要求,系统控制器增益 K p Kp Kp已经确定,那么如果想进一步提高系统抗扰能力,则可以通过提高ESO带宽 w 1 w_1 w1 来实现(听起来像是废话。。),而不必担心会影响系统的带宽和稳定性(这句不是废话)。

其他的一些调参经验:
(1)一般要取ESO的带宽为控制器增益的3倍以上较为合适(可以的话其实是越大越好的啦),因为ESO的带宽太小的话,抗扰能力很差啊。
(2)ESO的带宽也不能太高,因为它也相当于一个微分器,带宽太高的话会对 y y y的噪声放大太多,会让灵敏度曲线在某些地方拱的很高(从这个角度来说实际上是会影响系统稳定性的),也容易引起系统共振。
(3)另外还要注意ESO的带宽肯定不能太接近控制器的运行频率(不过控制器的运行频率一般很高,一般都会被上一个条件限制了ESO带宽上限)。

1.2.4 基于LESO的二阶系统控制器

对于二阶系统:
{ x 1 ˙ = x 2 x 2 ˙ = b ∗ u + w y = x 1 \left\{ \begin{array}{l} \dot{x_1} =x_2 \\ \dot{x_2} =b*u+w \\ y=x_1 \quad \quad \quad \quad \quad \end{array}\right. x1˙=x2x2˙=bu+wy=x1
基于此LESO (6)可设计指令跟踪控制器:
{ x 2 r = k 1 ∗ ( y r − y ) u = ( k 2 ∗ ( x 2 r − x 2 ) − z 2 ) / b ( 7 ) \left\{ \begin{array}{l} x_{2r} =k_1*(y_r-y) \\u = (k_2*(x_{2r}-x_2)-z_2)/b \quad \quad \quad (7) \end{array}\right. {x2r=k1(yry)u=(k2(x2rx2)z2)/b(7)

如果对象是二阶系统,可以如上设计控制器,实际上就是一个串级控制器。假设系统对象阶数比较明确的话,没有太多噪声什么的,这样设计控制器就可以得到比较好的结果。
当然,对于二阶系统来说,这样串级控制器有好处也有坏处,好处是结构比较简单,而且每一环都可以单独整定。
坏处优化就是比较麻烦,而且由于里面还会有各种滤波器,所以参数优化起来不会像简单对象那么理想。

总之实际的对象都不会那么理想的,还是要根据实际情况来调。

2 结语

这次就先写到这里,感觉有点潦草收尾了(其实还没到尾),不过随着不断学习,相比于两年前也加入了一些新的心得体会,欢迎大家批评指教。

现在其实越来越感觉频域设计方法的重要性。后面学新的控制方法(比如H∞)也会继续更新,好记性不如烂笔头嘛。

下次周末有时间简单更新一下ADRC在导弹模型上的应用实例。

。。。。。。未完待续

2.1 (待更新) LADRC在飞机纵向模型的应用

2.1.1 模型介绍

2.1.2 ADRC应用

2.1.3 一些注意事项

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐