现代控制理论线性系统入门(五)设计状态反馈控制器

现代控制理论线性系统入门(五)设计状态反馈控制器

上一篇传送门:

善道:线性系统控制入门(四)能控性和能观性zhuanlan.zhihu.com图标

在经典控制理论里面,我们会关注,一个SISO的系统的输出被测量后传回输入形成反馈环。通过比较实际输出信号 y 与参考输入信号 w 计算出应该调节的动态控制输入信号 \mathbf{u}(t) ,再逐步纠正输出信号。

图5.1 SISO系统的输出反馈控制

假设一个系统的所有状态变量都是可以通过传感测量技术测量的或者说可以估计的,那么就可以设计一个线性的全状态反馈控制器,意思就是用所有的状态向量 \mathbf{x} 的值反馈,而非之前用输出变量 y 的值来反馈。这样使得新的控制律为

(5.1) \mathbf{u}=\mathbf{-Kx+Sw}

通过 (m\times n) 的反馈矩阵或者控制矩阵 \mathbf{K} 以及 (n\times p) 的前馈矩阵 \mathbf{S} 来实现控制量调节。接下来会探讨在没有直接控制 (\mathbf{D=0}) 的MIMO的线性系统的控制器的设计,其中输入向量 \mathbf{u}\in \mathbb{R}^m ,输出向量 \mathbf{y}\in \mathbb{R}^p

(5.2) \begin{align} \mathbf{\dot x}&=\mathbf{Ax+Bu},\qquad \mathbf{x}(0)=\mathbf{x}_0\\ \mathbf{y}&=\mathbf{Cx} \end{align}

在设置全状态反馈控制器时,有一些设计目标是特别值得关注的

  • 保证反馈系统的稳定性
  • 调整可预期的输入输出变量行为
  • 提高阻尼
  • 改善暂态响应
  • 补偿扰动误差
  • 提高参考信号的跟踪精度
图5.2 MIMO系统的状态反馈

这样设计控制律以及控制矩阵 \mathbf{K},就可以得到

(5.3) \mathbf{\dot x}=\mathbf{Ax+B(-Kx+Sw)}=\mathbf{(A-BK)x+BSw}

所以我们的目标就转化为确定合适的 \mathbf{K} 使得合成了控制器以后的总的闭环系统是渐近稳定的,也就是说新的动态矩阵 \mathbf{(A-BK)} 的特征值必须要在复平面的左半平面。

5.1静态前置滤波器

接下来我们先研究前置滤波器的设计,前置滤波器的目的就是为了使最终输出信号能够和参考信号输入一致,在静态输入时相当于确定了一个新的工作点,系统输出会移动到那个新的位置,而当连续输入变化的信号时,相当于使系统遵循预设轨迹运动。

先考虑静态输入,即参考输入信号 \mathbf{w} 是恒定的,而且也没有外界的扰动影响。并且假设系统的状态反馈控制矩阵 \mathbf{K}已知,我们应当这样设计前置滤波器,使得最终稳态输出时没有剩下来的反馈控制误差,即 \lim_{t \rightarrow \infty}{\mathbf{y}(t)}=\mathbf{y}_\infty

(5.4) \mathbf{y}_\infty=\mathbf{Cx}_\infty

那么最终稳态的反馈也会使得系统稳态,不再有动态,即 \mathbf{\dot x}_\infty=\mathbf{0} ,所以

(5.5) \mathbf{u}_\infty=\mathbf{-Kx}_\infty\mathbf{+Sw}

(5.6) \mathbf{0}=\mathbf{(A-BK)x}_\infty \mathbf{+BSw}

当整个闭环是渐近稳定的,所有\mathbf{(A-BK)} 的特征值必在复平面的左半平面,那么\mathbf{(A-BK)} 也是一个非奇异矩阵,那么可逆,有

(5.7) \mathbf{x}_\infty =\mathbf{(BK-A)}^{-1}\mathbf{BSw}

稳态输出就变成

(5.8) \mathbf{y}_\infty =\mathbf{C(BK-A)}^{-1}\mathbf{BSw}

因为控制变量 u 和输出变量 y 的个数一般是相等的 (m=p) ,于是 \mathbf{C(BK-A)}^{-1}\mathbf{B} 必为方阵,并且控制目标应该和参考输入信号一致,即 \mathbf{y}_\infty=\mathbf{Iw}=\mathbf{w} ,所以就可以确定前置滤波矩阵 \mathbf{S}

(5.9) \mathbf{S}=\left[ \mathbf{C(BK-A)}^{-1}\mathbf{B}\right]^{-1}

每个期望的 \mathbf{y}_\infty 通过对 \mathbf{u}_V=\mathbf{Sw} 的可调性,来保证括号内矩阵的可逆性。

5.2 基于状态反馈设计直接给定特征值(SISO系统)

对于一个系统的响应来说,我们希望它最好能够在我们期望的位置实现,即极点和特征值可以让我们自由配置,以获得期望的动态。接下来考察SISO系统的标量控制变量 u

(5.10) \begin{align} \mathbf{\dot x}&=\mathbf{Ax+b}u,\qquad \mathbf{x}(0)=\mathbf{x}_0\\ y&=\mathbf{c^Tx} \end{align}

(5.11) u=\mathbf{-k^Tx}+Sw

代入单输入的控制律,原状态方程变为用新的动态矩阵 \mathbf{A}_R=(\mathbf{A-bk^T}) 描述

(5.12) \begin{align} \mathbf{\dot x}&=\underbrace{(\mathbf{A-bk^T})}_{\mathbf{A}_R}\mathbf{x}+S~\mathbf{b}w,\qquad \mathbf{x}(0)=\mathbf{x}_0\\ y&=\mathbf{c^Tx} \end{align}

如果能够选择合适的反馈控制器增益向量 \mathbf{k^T} ,就可以任意调整闭环动态矩阵的特征值到我们希望的位置上去!所以我们就可以先预给需要的特征值,再反过来求应当要选的 \mathbf{k^T}

对应的调整以后的特征多项式为

(5.13) \begin{align} q(\lambda,\mathbf{k})&=det(\lambda\mathbf{I-A+bk^T})\\ &=q_0(\mathbf{k})+q_{1}(\mathbf{k})\lambda+...+q_{n-1}(\mathbf{k})\lambda^{n-1}+\lambda^n \end{align}

而我们预给的特征值展开也会得到同幂次的多项式

(5.14) p^*(\lambda)=p_0+p_1\lambda+...+p_{n-1}\lambda^{n-1}+\lambda^n

比较两式系数,由每个来自增益向量 \mathbf{k^T}=\left[ k_1 ,k_2,...,k_n \right] 的元素构成的线性组合 q_i(\mathbf{k}) 都应该与预给特征值展开的多项式系数 p_i 相等,即

(5.15) q_0(\mathbf{k})+q_{1}(\mathbf{k})\lambda+...+q_{n-1}(\mathbf{k})\lambda^{n-1}+\lambda^n=p_0+p_1\lambda+...+p_{n-1}\lambda^{n-1}+\lambda^n

(5.16) q_0(\mathbf{k})=p_0,~~ q_1(\mathbf{k})=p_1,~~...~~,~~q_{n-1}(\mathbf{k})=p_{n-1}

而对于MIMO系统 (m>1) ,情况会很复杂,MIMO的 n 个等式下会有 n\cdot m 个待定的 k_{ij} 。只要系统能控,将存在无穷多个解。再者,在MIMO时可能会有 q_i(\mathbf{k}) 非线性的情况,比如 7k_1k_2k_3,~~2k_1k_2^5 等等情况。所以直接的特征值预置还是建议只在SISO系统里进行。接下来我们考察一个例子。

例5.1 设计反馈控制增益 \mathbf{k^T}

当预置特征值为 \lambda_1=-2,~\lambda_2=1,~\lambda_3=2 ,先不考虑前置滤波器,只使用状态反馈控制律 u=\mathbf{-k^Tx} ,有状态方程

(5.17) \mathbf{\dot x}=\begin{bmatrix}-2&0&3\\ 1&2&2\\0&0&1 \end{bmatrix}\mathbf{ x}+\begin{bmatrix}-1\\0\\1 \end{bmatrix}u

闭环反馈动态矩阵为

(5.18) \mathbf{A}_R=(\mathbf{A-bk^T})=\begin{bmatrix}k_1-2&k_2&3+k_3\\ 1&2&2\\-k_1&-k_2&1-k_3 \end{bmatrix}

有特征多项式

(5.19) det(\lambda\mathbf{I-A}_R)=\lambda^3+\underbrace{(-1-k_1+k_3)}_{q_2(\mathbf{k})}\lambda^2+\underbrace{(-4+6k_1+k_2)}_{q_1(\mathbf{k})}\lambda+\underbrace{(4-8k_1+8k_2-4k_3)}_{q_0(\mathbf{k})}

而期望的预给特征值得到的特征多项式为

(5.20) p^*(\lambda)=(\lambda+2)(\lambda-1)(\lambda-2)=\lambda^3+6\lambda^2+11\lambda+6

通过比较系数,可得

(5.21) \begin{cases} -1-~~k_1+~~k_3=6\\ -4+6k_1+~~k_2=11\qquad\qquad\Rightarrow k_1=\frac{3}{2},~~ k_2=6,~~ k_3=\frac{17}{2}\\ ~~~4-8k_1+8k_2-4k_3=6 \end{cases}

所以能确定增益 \mathbf{k^T}=\begin{bmatrix}\frac{3}{2}\quad6\quad\frac{17}{2} \end{bmatrix}

5.3 对外界扰动的处理

之前在5.1里面我们使用的前置滤波器是假设没有扰动,把一个前置滤波器 \mathbf{S} 设计成能使剩下的反馈误差在参考输入信号的导引下归零,即 \lim_{t \rightarrow \infty}{\mathbf{e_w}(t)}=\lim_{t \rightarrow \infty}(\mathbf{w-y}(t))=\mathbf{0} 。当我们重新考虑了测得的控制对象参数由于外界扰动偏离时,由于前置滤波器和系统本身没有考虑过这个误差,它应该会作为系统误差直接保留下来,无法消除。

实际上一个外界扰动也可以视为一个输入变量作用在状态方程上,所以我们考察新的扩展系统

(5.22) \begin{align} \mathbf{\dot x}&=\mathbf{Ax+Bu+Ed},\qquad \mathbf{x}(0)=\mathbf{x}_0\\ \mathbf{y}&=\mathbf{Cx} \end{align}

(n \times l) 的扰动输入矩阵 \mathbf{E} \in\mathbb{R} ^{n\times l}l 维的扰动输入向量 \mathbf{d} \in\mathbb{R} ^{l} ,继续使用控制律,沿用之前式(5.5)的思路,使用 \mathbf{\dot x }_R=\mathbf{0} 得到在恒定外界扰动 \mathbf{d} 作用下的新的平衡点的位置

(5.23) \mathbf{x}_R =\mathbf{(BK-A)}^{-1}(\mathbf{BSw+Ed})

(5.24) \mathbf{y}_R =\mathbf{C(BK-A)}^{-1}(\mathbf{BSw+Ed})=\mathbf{w+(BK-A)}^{-1}\mathbf{Ed}\ne\mathbf{w}

可见,这个稳态误差确实被留下来了,不能直接用前置滤波器消除。

于是我们可以引入扰动变量串接补偿项(Störgrößenaufschaltung)或者积分环节来消除扰动的影响。

5.3.1 扰动变量串接补偿项

它可以有效补偿可测/已知的扰动输入量,实现效果类似于额外添加一个控制项 \mathbf{u}_d 到控制律里,新的控制律为

(5.25) \mathbf{u}=\mathbf{-Kx+Sw+u}_d

最终补偿效果应该是使得

(5.26) \mathbf{Bu}_d\mathbf{+Ed}=\mathbf{0}

假设 n=m\mathbf{B} 可逆,那控制项 \mathbf{u}_d就有唯一的表达

(5.27) \mathbf{u}_d=\mathbf{-B}^{-1}(\mathbf{Ed})

这样扰动项在系统中就能被精确补偿掉。

而对于一般情况 n>m ,我们无法直接使用控制矩阵的逆矩阵。如此我们还有一种替代思路,不再寻求直接精确的解,我们需要寻找一个使 \boldsymbol{\delta}=\mathbf{Bu}_d\mathbf{+Ed} 影响最小的方法,这时我们可以使用最小二乘法。

(5.28) \mathbf{u}_d=\min_{\mathbf{u}_d}\boldsymbol{\delta}^{\mathbf{T}}\boldsymbol{\delta}

(5.29) \begin{align} \boldsymbol{\delta}^{\mathbf{T}}\boldsymbol{\delta}&=\left( \mathbf{Bu}_d\mathbf{+Ed} \right)^{\mathbf{T}}\left( \mathbf{Bu}_d\mathbf{+Ed} \right)\\ &=\mathbf{u}_d^{\mathbf{T}}\mathbf{B^TBu}_d+\mathbf{u}_d^{\mathbf{T}}\mathbf{B^TEd} +\mathbf{d^TE^TBu}_d+\mathbf{d^TE^TEd} \\ &=\mathbf{u}_d^{\mathbf{T}}\mathbf{B^TBu}_d+2\mathbf{u}_d^{\mathbf{T}}\mathbf{B^TEd} +\mathbf{d^TE^TEd}  \end{align}

其中 \mathbf{u}_d^{\mathbf{T}}\mathbf{B^TEd}=\left( \mathbf{u}_d^{\mathbf{T}}\mathbf{B^TEd} \right) ^{\mathbf{T}}=\mathbf{d^TE^TBu}_d ,因为它是标量,所以转置相等。

对(5.29)求极小值点有

(5.30) \frac{\partial \left( \boldsymbol{\delta}^{\mathbf{T}}\boldsymbol{\delta} \right)}{\partial\mathbf{u}_d}=2\mathbf{B^TBu}_d+2\mathbf{B^TEd}=\mathbf{0}

基于合理的假设,即至少矩阵 \mathbf{B} 每一列都线性无关,于是 \mathbf{B^TB} 可逆,如此可得

(5.31) \mathbf{u}_d=-\left(\mathbf{B^TB} \right)^{-1}\mathbf{B^TEd}

于是最终合成的反馈控制律为

(5.32) \mathbf{u}=\mathbf{-Kx+Sw}-\left(\mathbf{B^TB} \right)^{-1}\mathbf{B^TEd}

5.3.2 PI状态反馈控制器

使用扰动变量串接补偿项,必须事先要知晓扰动输入 \mathbf{d} 以及扰动矩 \mathbf{E} 的具体值,这在实际操作中往往是不可能的。另一种比较灵活的方法就是在控制律里引入积分环节,这样至少恒定的扰动以及参数误差都可以被稳定地压制!现在我们来看看所谓的PI状态反馈控制器的形式

(5.33) \begin{align}  \mathbf{\dot x}_I&=\mathbf{w-Cx}\\  \mathbf{u}~&=\mathbf{-Kx+K}_P\left( \mathbf{w-Cx} \right)+\mathbf{K}_I\mathbf{x}_I  \end{align}

实际上参考信号和输出信号的差值就是误差值 \mathbf{e_w}=\mathbf{w-y}=\mathbf{w-Cx} ,而积分器状态变量 \mathbf{x}_I=\int_{0}^{T}\mathbf{e_w}dt (\mathbf{x}_I\in\mathbb{R}^p) 所以控制律即包含了比例和积分两个环节,即PI控制。

(5.34)  \mathbf{u}=\mathbf{-Kx+K}_P\mathbf{e_w}+\mathbf{K}_I\int_{0}^{T}\mathbf{e_w}dt

所以包含了原有状态变量以及新的积分器状态变量的扩展状态方程为

(5.35) \begin{bmatrix}\mathbf{\dot x}~\\\mathbf{\dot x}_I\end{bmatrix}=\underbrace{\begin{bmatrix}\mathbf{A}&\mathbf{0}\\-\mathbf{C}&\mathbf{0}\end{bmatrix}}_{\mathbf{A}_I}\begin{bmatrix}\mathbf{ x}~\\\mathbf{x}_I\end{bmatrix}+\underbrace{\begin{bmatrix}\mathbf{B}\\\mathbf{0}\end{bmatrix}}_{\mathbf{B}_I}\mathbf{u}+\begin{bmatrix}\mathbf{0}\\\mathbf{I}\end{bmatrix}\mathbf{w}+\begin{bmatrix}\mathbf{E}~\\\mathbf{0}\end{bmatrix}\mathbf{d},\quad \begin{bmatrix}\mathbf{x}(0)~\\\mathbf{ x}_I(0)\end{bmatrix}=\begin{bmatrix}\mathbf{x}_0~\\\mathbf{ x}_{I,0}\end{bmatrix}

对于这个增广的矩阵 \mathbf{A}_I ,想要自由配置极点,也必须考察它的能观性

定理5.1 增广矩阵的能控性
当满足条件 rank\begin{bmatrix}\mathbf{A}&\mathbf{B}\\-\mathbf{C}&\mathbf{0}\end{bmatrix}=n+p 时,矩阵对 (\mathbf{A},\mathbf{B}) 的能控性就是扩展系统 (\mathbf{A}_I,\mathbf{B}_I) 的能控性。

而对增益 \mathbf{K},\mathbf{K}_P,\mathbf{K}_I 的设计主要遵循以下两个步骤:

①第一步先设计扩展系统的状态反馈控制器,获得 \mathbf{K}_1,\mathbf{K}_2
(5.36) \mathbf{u}=-\begin{bmatrix}\mathbf{K}_1&\mathbf{K}_2\end{bmatrix}\begin{bmatrix}\mathbf{x}~\\\mathbf{x}_I\end{bmatrix}
与(5.33)比较可知
(5.37) \mathbf{K}_1=\mathbf{K}+\mathbf{K}_P\mathbf{C},\qquad \mathbf{K}_2=-\mathbf{K}_I

②第二步就是确定 \mathbf{K},\mathbf{K}_P 。通常先算出 \mathbf{K}_P 再求出 \mathbf{K}
设初始条件满足 t=0 时, \mathbf{x}_0=\mathbf{0},~~\mathbf{x}_{I,0}=\mathbf{0}\mathbf{w}t\geq0 时恒定,
(5.38) \mathbf{u}(0)=\mathbf{K}_P\mathbf{w}
当动态矩阵 \mathbf{A} 渐近稳定时,可算出输出变量的稳态响应
(5.39) \mathbf{y}_\infty =\lim_{t \rightarrow \infty}{\mathbf{y}}(t)=\mathbf{-CA^{-1}Bu}_\infty\mathbf{u}_\infty =\mathbf{-(CA^{-1}B)^{-1}y}_\infty
因为静态输入参考信号 \mathbf{w} 和输出终态 \mathbf{y}_\infty 会相等。但是增益一直不变,所以会有
(5.40) \mathbf{u}(0)= \mathbf{K}_P\mathbf{w}=\mathbf{K}_P\mathbf{y}_\infty=-\mathbf{K}_P\mathbf{CA^{-1}Bu}_\infty
(5.41) \mathbf{u}(0)=\mathbf{u}_\infty
于是有PI控制律下唯一的增益矩阵
(5.42) \mathbf{K}_P=\mathbf{-(CA^{-1}B)^{-1}},\qquad  \mathbf{K}_I=-\mathbf{K}_2,\qquad \mathbf{K}=\mathbf{K}_1-\mathbf{K}_P\mathbf{C}

在设计扩展系统时,不需要考虑扰动项 \mathbf{Ed} ,直接根据给定特征值来设计反馈增益 \mathbf{K}_1,\mathbf{K}_2 ,这是因为扩展矩阵设计时,加入新的积分器状态变量时,已经考虑了扰动的因素,而联合设计以后对于构成扩展系统的每一条状态方程都将是渐近稳定的,也就是说,它们的终态会趋于平衡点,也即

(5.43) \mathbf{\dot x}_I=\mathbf{w-Cx}=\mathbf{0}\Rightarrow \mathbf{w}=\mathbf{Cx}=\mathbf{y}_\infty

值得一提的是,比例环节 \mathbf{K}_P 在控制律设计中不是必须的,它产生的作用也只是静态的前馈控制,因为参考信号 \mathbf{w} 输进去以后,输入控制对象的输入信号 \mathbf{u}(t) 在极短时间内就会达到稳态值。此外,设计比例环节 \mathbf{K}_P 的前提是,动态矩阵 \mathbf{A} 必须可逆,而当 \mathbf{A} 不是渐进稳定的时候,可以直接让 \mathbf{K}_P=\mathbf{0} ,这样就能让设计简化了。

图5.3 PI状态反馈控制器设计

例5.2 摩托车模型

考虑摩托车的动力模型,此时外界扰动为恒定的侧风 d=F_w。使用PI状态反馈控制器,对系统模型扩展,先设计扩展控制律,得到

(5.44) u=[~\underbrace{0.57~~~0.99~~~2.82}_{\mathbf{k^T_1}}~~~\underbrace{-3.16}_{k_2}~]\begin{bmatrix}\mathbf{x}\\ ~x_I\end{bmatrix}

有一个状态变量,摩托车车体的偏航角 \psi ,不是渐进稳定的,故让 k_P=0 ,继续算出

(5.45) k_I=-k_2=3.16,\quad  \mathbf{k}=\mathbf{k^T_1}-k_P\mathbf{c^T}=\mathbf{k^T_1}=\left[ 0.57~~~0.99~~~2.82 \right]

在初始状态时有一个偏移, t=5s 时,侧风会以以阶跃信号形式施加 d=F_w=2000N 的干扰力。下图就展示了对应的模拟过程,摩托车用于控制方向的输入量,前轮导向角 \delta=0表示不施加控制,即表示未控制的橙色虚线,蓝色实线表示接受了PI反馈控制。从下图可知,如果不进行控制,所有误差就会累积,而经过了反馈控制后,系统总体上性能有了很好改善。

图5.4 摩托车受干扰后的控制模型

这章介绍了一些基本的基于全状态反馈控制器的设计方法,下一章将着重介绍基于能控标准型的设计方法。

下一章传送门:

善道:线性系统控制入门(六)用能控标准型设计控制器zhuanlan.zhihu.com图标

参考文献:

[1]Regelungstechnik B (Zustandsraummethoden) (WS 2019), Prof. Dr.-Ing. Knut Graichen

Lehrstuhl für Regelungstechnik, Friedrich-Alexander-Universität Erlangen-Nürnberg

编辑于 2020-03-07

文章被以下专栏收录