PID的控制器输入是误差 e e e,输出是控制量 u u u
控制的目的是:使输出 y y y跟踪上输入 r r r
→“基于误差,消除误差”
→“原理简单,易于实现”
→“充分利用过去、现在和将来的信息”
→从控制器输出上:三种信息的线性组合并非最佳?
→从控制器输入上:调节误差并不完全合理?
→从控制器自身结构上:
PID的积分调节扰动,但容易饱和,对异常值敏感
PID的微分过程都是近似实现的
PID控制器基于误差,但误差越小,控制器的控制作用越弱,不一定可以完全消除?
(Active Disturbance Rejection Control, ADRC)
① r ( t ) r(t) r(t)→信号生成→跟踪微分器(TD)
②PID→控制器非线性化→非线性反馈(NF)
③内部无法建模的扰动和外来扰动→扰动估计器和补偿→扩张状态观测器(ESO)
若这是一个位置控制系统,输入 v v v为位置信号,则 v 1 v_1 v1为经TD积分到达该位置的信号、 v 2 v_2 v2是相应的速度信号。
相应地,由ESO估计系统的位置 z 1 z_1 z1、速度 z 2 z_2 z2,两者反馈后经NF得到没有扰动的控制量 u 0 u_0 u0。
由于系统受到扰动 w w w,所以还需ESO估计扰动 z 3 z_3 z3,反馈得到实际控制量 u u u。
→合理安排过渡过程(不再是陡升陡降的了)
由于PID直接以e=v-y的方式产生调节误差并不完全合理,可能产生“快速性”和“超调”间的矛盾。因此,解决思路:
降低系统初始误差,则可以在不改变系统阻尼的情况下用较大的增益来加快过渡过程而又不引起过大的超调。
可以采用函数发生器(正弦、加减速函数) 或 跟踪微分器。
过渡过程的目标是任意调节从初态到终态的信号形式,可以看作一个信号跟踪问题。
图示为 W = r 2 s 2 + 2 r s + r 2 W=\frac{r^2}{s^2+2rs+r^2} W=s2+2rs+r2r2 的阶跃响应,可以发现,其最终趋于1,并且速度因子 r r r决定了逼近1的速度。
对图示二阶系统,TD要解决的问题可以转化为一个控制问题:
让实际输出 x 1 x_1 x1尽快地跟踪上PID原始的输入信号 v v v,同时输出其导数(速度)信号 x ˙ \dot x x˙
设参考指令为 v v v,输出为 x x x及其各阶导数。其中:
e = [ e 1 e 2 ] = [ v − x 1 v ˙ − x 2 ] e=\begin{bmatrix}e_1\\e_2\end{bmatrix}=\begin{bmatrix}v-x_1\\\dot v-x_2\end{bmatrix} e=[e1e2]=[v−x1v˙−x2]
求导可得:
[ e ˙ 1 e ˙ 2 ] = [ v ˙ − x ˙ 1 v ¨ − x ˙ 2 ] = [ e 2 v ¨ − u ] \begin{bmatrix}\dot e_1\\\dot e_2\end{bmatrix}=\begin{bmatrix}\dot v-\dot x_1\\\ddot v-\dot x_2\end{bmatrix}=\begin{bmatrix}e_2\\\ddot v-u\end{bmatrix} [e˙1e˙2]=[v˙−x˙1v¨−x˙2]=[e2v¨−u]
这里,对于缓变过程, v ˙ = 0 \dot v=0 v˙=0, v ¨ = 0 \ddot v=0 v¨=0。
若取控制率 u = k 1 e 1 + k 2 e 2 u=k_1e_1+k_2e_2 u=k1e1+k2e2,则有:
e ˙ = [ 0 1 − k 1 − k 2 ] e = A e \dot e=\begin{bmatrix}0&1\\-k_1&-k_2\end{bmatrix}e=Ae e˙=[0−k11−k2]e=Ae
该系统的特征方程: s I − A = s 2 + k 2 s + k 1 = 0 sI-A=s^2+k_2s+k_1=0 sI−A=s2+k2s+k1=0,
由劳斯判据,当 k 1 , k 2 > 0 k_1,k_2>0 k1,k2>0时,该系统一定收敛,则证明了该系统可以跟踪。
进一步地,该系统的微分方程写作:
[ x ˙ 1 x ˙ 2 ] = [ x 2 k 1 ( v − x 1 ) − k 2 x 2 ] \begin{bmatrix}\dot x_1\\\dot x_2\end{bmatrix}=\begin{bmatrix}x_2\\k_1(v-x_1)-k_2x_2\end{bmatrix} [x˙1x˙2]=[x2k1(v−x1)−k2x2]
这里若取 k 1 = r 2 , k 2 = 2 r k_1=r^2,k_2=2r k1=r2,k2=2r,有:
[ x ˙ 1 x ˙ 2 ] = [ x 2 r 2 ( v − x 1 ) − 2 r x 2 ] \begin{bmatrix}\dot x_1\\\dot x_2\end{bmatrix}=\begin{bmatrix}x_2\\r^2(v-x_1)-2rx_2\end{bmatrix} [x˙1x˙2]=[x2r2(v−x1)−2rx2]
此时,系统具有了 W W W类似的作用。
该系统的特征方程: s 2 + 2 r s + r 2 = 0 s^2+2rs+r^2=0 s2+2rs+r2=0,其特征值为 r r r,r越大,收敛的越快。因此,可以通过 r r r解决尽快跟踪的问题。
因此,上述二阶系统即微分跟踪器的表达形式,其输出为[ x x x, x ˙ \dot x x˙],进而便解决了前述目标跟踪问题。
一般跟踪率并非唯一的,最常见地是取最速控制率:
u ( x 1 , x 2 ) = − r s i g n ( x 1 + x 2 ∣ x 2 ∣ 2 r ) u(x_1,x_2)=-rsign(x_1+\frac{x_2|x_2|}{2r}) u(x1,x2)=−rsign(x1+2rx2∣x2∣)
可实现输出最快地跟踪输入信号。
TD模块的系统实现为:
[ x ˙ 1 x ˙ 2 ] = [ x 2 − r s i g n ( x 1 − v + x 2 ∣ x 2 ∣ 2 r ) ] \begin{bmatrix}\dot x_1\\\dot x_2\end{bmatrix}=\begin{bmatrix}x_2\\-rsign(x_1-v+\frac{x_2|x_2|}{2r})\end{bmatrix} [x˙1x˙2]=[x2−rsign(x1−v+2rx2∣x2∣)]
实际应用时,一般使用其离散化形式:
→配置系统零点
→求函数极值
→相位超前(微分使然),加到原信号上即蕴含了相位超前的部分
误差的非线性组合?
仍按照PID的定义误差三种信息:
e 1 = e e 2 = ∫ e e 3 = d e d t e_1=e\\ e_2=\int e\\ e_3 =\frac{de}{dt} e1=ee2=∫ee3=dtde
但这里引入非线性的fal函数:
f a l ( e , α , δ ) = { ∣ e ∣ α s i g n ( e ) , ∣ e ∣ > δ e δ 1 − α , ∣ e ∣ ≤ δ fal(e,\alpha,\delta)=\begin{cases}|e|^\alpha sign(e),|e|>\delta\\ \frac {e}{\delta^{1-\alpha}},|e|\leq\delta\end{cases} fal(e,α,δ)={∣e∣αsign(e),∣e∣>δδ1−αe,∣e∣≤δ
该函数图像如下所示:
将其用于新的控制器,其控制量 u u u可写作非线性形式:
u = Σ i = 1 3 β i f a l ( e i , α i , δ ) u=\Sigma_{i=1}^3\beta_ifal(e_i,\alpha_i,\delta) u=Σi=13βifal(ei,αi,δ)
根据测量到的系统输入(控制量)和系统输出(测量量)来确定系统部分或所有内部状态信息的装置。
对二阶非线性系统:
{ x ˙ 1 = x 2 x ˙ 2 = f ( x 1 , x 2 , t ) + b u y = x 1 \begin{cases}\dot{x}_1=x_2\\\dot{x}_2=f(x_1,x_2,t)+bu\\y=x_1\end{cases} ⎩ ⎨ ⎧x˙1=x2x˙2=f(x1,x2,t)+buy=x1
已知 f , b f,b f,b,则其状态观测器为:
{ e 1 = x ^ 1 − y x ^ ˙ 1 = x ^ 2 − l 1 e 1 x ^ ˙ 2 = f ( x ^ 1 , x ^ 2 , t ) + b u − l 2 e 1 \begin{cases}e_1=\hat{x}_1-y\\\dot{\hat{x}}_1=\hat{x}_2-l_1e_1\\\dot{\hat{x}}_2=f(\hat{x}_1,\hat{x}_2,t)+bu-l_2e_1\end{cases} ⎩ ⎨ ⎧e1=x^1−yx^˙1=x^2−l1e1x^˙2=f(x^1,x^2,t)+bu−l2e1
很容易看出其存在以下问题:
→ f ( x 1 , x 2 , t ) f(x_1,x_2,t) f(x1,x2,t)未知或系统存在干扰 w w w怎么办?
→ l 1 , l 2 l_1,l_2 l1,l2是线性的,变成非线性?
因此引出了扩张状态观测器的设计,其思想是:“把所有的扰动和不确定性都打包为一个扩张状态,进行统一的估计”。
定义扩张状态 x 3 = f ( x 1 , x 2 , w , t ) x_3=f(x_1,x_2,w,t) x3=f(x1,x2,w,t),其是未知状态,设其导数 f ˙ = h ( t ) \dot f=h(t) f˙=h(t),则可以将二阶系统重写为:
{ x ˙ 1 = x 2 x ˙ 2 = x 3 + b u x ˙ 3 = h ( t ) y = x 1 \begin{cases}\dot{x}_1=x_2\\\dot{x}_2=x_3+bu\\\dot{x}_3=h(t)\\y=x_1\end{cases} ⎩ ⎨ ⎧x˙1=x2x˙2=x3+bux˙3=h(t)y=x1
对其进行观测器设计,则得到了线性的扩张状态观测器:
{ x ^ ˙ 1 = x ^ 2 − g 1 ( e 1 ) x ^ ˙ 2 = x ^ 3 + b u − g 2 ( e 1 ) x ^ ˙ 3 = − g 3 ( e 1 ) e 1 = x ^ 1 − y \begin{cases}\dot{\hat x}_1=\hat x_2-g_1(e_1)\\\dot{\hat x}_2=\hat x_3+bu-g_2(e_1)\\ \dot {\hat x}_3=-g_3(e_1)\\e_1=\hat x_1-y\end{cases} ⎩ ⎨ ⎧x^˙1=x^2−g1(e1)x^˙2=x^3+bu−g2(e1)x^˙3=−g3(e1)e1=x^1−y
令 g i ( e 1 ) = l i e 1 g_i(e_1)=l_ie_1 gi(e1)=lie1,也可以写作:
{ x ^ ˙ 1 = x ^ 2 − l 1 e 1 x ^ ˙ 2 = x ^ 3 + b u − l 2 e 1 x ^ ˙ 3 = − l 3 e 1 e 1 = x ^ 1 − y \begin{cases}\dot{\hat x}_1=\hat x_2-l_1e_1\\\dot{\hat x}_2=\hat x_3+bu-l_2e_1\\\dot{\hat x}_3=-l_3e_1\\e_1=\hat x_1-y\end{cases} ⎩ ⎨ ⎧x^˙1=x^2−l1e1x^˙2=x^3+bu−l2e1x^˙3=−l3e1e1=x^1−y
若定义: g i ( e 1 ) = l i f a l ( e 1 , α i , δ ) g_i(e_1)=l_ifal(e_1,\alpha_i,\delta) gi(e1)=lifal(e1,αi,δ),则得到了非线性的扩张状态观测器。
对误差:
e = [ e 1 e 2 e 3 ] = [ x ^ 1 − x 1 x ^ 2 − x 2 x ^ 3 − x 3 ] e=\begin{bmatrix}e_1\\e_2\\e_3\end{bmatrix}=\begin{bmatrix}\hat x_1-x_1\\\hat x_2-x_2\\\hat x_3-x_3\end{bmatrix} e= e1e2e3 = x^1−x1x^2−x2x^3−x3
其导数:
e = [ e ˙ 1 e ˙ 2 e ˙ 3 ] = [ e 2 − l 1 e 1 e 3 − l 2 e 1 − l 3 e 1 − h ] e=\begin{bmatrix}\dot e_1\\\dot e_2\\\dot e_3\end{bmatrix}=\begin{bmatrix}e_2-l_1e_1\\e_3-l_2e_1\\-l_3e_1-h\end{bmatrix} e= e˙1e˙2e˙3 = e2−l1e1e3−l2e1−l3e1−h
= [ − l 1 1 0 − l 2 0 1 − l 3 0 0 ] e − [ 0 0 1 ] h =\begin{bmatrix}-l_1&1&0\\-l_2&0&1\\-l_3&0&0\end{bmatrix}e-\begin{bmatrix}0\\0\\1\end{bmatrix}h = −l1−l2−l3100010 e− 001 h
收敛性可以按照控制系统的常用方法进行分析。
u = u 0 − z 3 b u=u_0-\frac{z_3}{b} u=u0−bz3
在 x ˙ 2 = f + b u \dot x_2=f+bu x˙2=f+bu中,令 u = u 0 − 1 b f ^ u=u_0-\frac{1}{b}\hat f u=u0−b1f^,则有:
x ˙ 2 = u 0 + ( f − f ^ ) \dot x_2 = u_0+(f-\hat f) x˙2=u0+(f−f^)
通过观测未知扰动,由反馈抵消扰动对系统的影响。