现代控制论第 2 篇 / 共 2 篇

控制系统的状态空间表达式

约 6 分钟
目录
  1. 现代控制论研究控制系统的视角
  2. 状态空间表达式及其模拟结构图
  3. 求解状态空间表达式
  4. 时域微分方程组求解
  5. 传递函数求解
  6. 状态空间下的变换
  7. 线性变换
  8. 特征值与特征矢量
  9. 将系统矩阵变为标准型
  10. 由状态空间表达式求传递函数
  11. 总结

§01现代控制论研究控制系统的视角

关于控制系统,我们在经典控制论中已经研究了很多,主要采用传递函数和频率分析的方式。这样的方式天然研究输入和输出之间的关系,在不加特殊分析的条件下往往不会涉及系统内部各个中间量的变化。

不过如果我们需要分析系统内部各个量之间的变化,仅使用经典控制论的方法未免有些乏力了,于是我们引入现代控制论——一门以系统内部各个状态量为切入点的理论。

故名思意,系统的状态变量就是描述系统内部状态的一组独立变量的集合,通常是一个矢量,选取它作为分析的切入点是因为系统中非状态的量一般能够由状态量推导或分析出来。

与之相关的几个概念:状态空间—状态变量(向量)张成的多维空间;状态方程—由状态变量构成的一阶线性微分方程组;输出方程—系统输出与状态变量之间的函数关系。

§02状态空间表达式及其模拟结构图

状态空间表达式是系统的状态方程与输出方程构成的方程组,一般形式如下:

x˙=Ax+Buy=Cx+Du\begin{gathered} \dot{\boldsymbol{x}} = A\boldsymbol{x} + B\boldsymbol{u} \\ \boldsymbol{y} = C\boldsymbol{x} + D\boldsymbol{u} \end{gathered}

其中x{\boldsymbol{x}}表示状态变量,x˙\dot{\boldsymbol{x}}表示状态变量导数,AA表示系统矩阵,一般而言是方阵,BB表示输入矩阵,CC表示输出矩阵,DD表示直接传递矩阵。在这门课的学习中,我们一般认为D=0D = 0。

显而易见的是,上述方程组描述的是多输入多输出系统,对于单输入单输出系统而言,方程组中的B、C、yB、C、y将分别变成列向量、行向量以及单个元素,如下。

x˙=Ax+buy=cx\begin{gathered} \dot{\boldsymbol{x}} = A\boldsymbol{x} + \boldsymbol{b}u \\ y = \boldsymbol{c}\boldsymbol{x} \end{gathered}

以单输入单输出为例,我们可以绘制与经典控制论类似的模拟结构图如下。


这张图是状态空间表达式转化为模拟结构图的基本单元,它是如何绘制出来的呢?

核心是引入的积分器,描述了变量和导数之间的关系,其余的绘制方式其实与经典控制论别无二致。

这是从时域微分方程直接推导出模拟结构图,用经典控制论中复数域的模拟结构图一样可以推导出这样的模拟结构图,以一阶惯性环节作为简单示例。


想要由复数域的公式或结构图得出上面的图片,不熟练时可以按照如下步骤:

Step1-将复数域公式或结构图变化为时域输入输出方程,这需要利用积分变换的积分或微分公式

Step2-由得出的时域方程绘图

§03求解状态空间表达式

求解给定系统的状态空间表达式一般有三种方法:由模拟结构图求解、由系统机理求解、由传递函数求解。其中前两者的本质都是由某些信息写出系统的时域微分方程组,再将其写成矩阵形式,而后者则有单独的公式和解法。

时域微分方程组求解

我们先看由模拟结构图求状态空间表达式的方法。


当我们拿到上图的模拟结构图后,就可以按照量传递的关系写出如下方程组。

x˙1=K3T3x2x˙2=−1T2x2+K2T2x3x˙3=−1T1x3−K1K4T1x1+K1T1uy=x1\begin{aligned} \dot{x}_1 &= \frac{K_3}{T_3}x_2 \\[6pt] \dot{x}_2 &= -\frac{1}{T_2}x_2 + \frac{K_2}{T_2}x_3 \\[6pt] \dot{x}_3 &= -\frac{1}{T_1}x_3 - \frac{K_1K_4}{T_1}x_1 + \frac{K_1}{T_1}u \\[6pt] y &= x_1 \end{aligned}

这样的方程组可以写为标准的状态空间表达式如下。

x˙=(0K3T300−1T2K2T2−K1K4T10−1T1)x+(00K1T1)uy=(100)x\begin{aligned} \dot{\boldsymbol{x}} &= \begin{pmatrix} 0 & \dfrac{K_3}{T_3} & 0 \\[6pt] 0 & -\dfrac{1}{T_2} & \dfrac{K_2}{T_2} \\[6pt] -\dfrac{K_1K_4}{T_1} & 0 & -\dfrac{1}{T_1} \end{pmatrix} \boldsymbol{x} + \begin{pmatrix} 0 \\[6pt] 0 \\[6pt] \dfrac{K_1}{T_1} \end{pmatrix} u \\[10pt] y &= \begin{pmatrix} 1 & 0 & 0 \end{pmatrix}\boldsymbol{x} \end{aligned}

关于由系统机理求状态空间表达式,思想基本是一致的,只是需要一些实际元件的微分描述公式,例如电感电容上电压电流之间的关系,或者动力学上的一些内容,这里不再赘述。

传递函数求解

由传递函数求出对应的状态空间表达式的问题,我们称之为实现问题,这显然是有多解的,所以我们这里只给出一种一般的形式。其推导过程是先将传递函数画成某种模拟结构图,再由模拟结构图推导状态空间表达式。

W(s)=Y(s)U(s)=bmsm+bm−1sm−1+⋯+b1s+b0sn+an−1sn−1+⋯+a1s+a0,m≤nW(s)=\frac{Y(s)}{U(s)} =\frac{b_m s^m+b_{m-1}s^{m-1}+\cdots+b_1s+b_0} {s^n+a_{n-1}s^{n-1}+\cdots+a_1s+a_0}, \qquad m\leq n

当传递函数没有零点时,即分子中只有b0b_0时,状态空间表达式如下,其中矩阵AA这一特殊形式称为友矩阵。

(x˙1x˙2⋮x˙n−1x˙n)⏟x˙=(010⋯0001⋯0⋮⋮⋮⋱⋮000⋯1−a0−a1−a2⋯−an−1)⏟A(x1x2⋮xn−1xn)⏟x+(00⋮01)⏟bu\underbrace{ \begin{pmatrix} \dot{x}_1 \\ \dot{x}_2 \\ \vdots \\ \dot{x}_{n-1} \\ \dot{x}_n \end{pmatrix} }_{\dot{\boldsymbol{x}}} = \underbrace{ \begin{pmatrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_0 & -a_1 & -a_2 & \cdots & -a_{n-1} \end{pmatrix} }_{A} \underbrace{ \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{pmatrix} }_{\boldsymbol{x}} + \underbrace{ \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 0 \\ 1 \end{pmatrix} }_{\boldsymbol{b}} u y=(b000⋯0)⏟cxy= \underbrace{ \begin{pmatrix} b_0 & 0 & 0 & \cdots & 0 \end{pmatrix} }_{\boldsymbol{c}} \boldsymbol{x}

当传递函数有零点时,即分子中含有ss的非零次幂时,有两种实现,第一种如下。

(x˙1x˙2⋮x˙n−1x˙n)=(010⋯0001⋯0⋮⋮⋮⋱⋮000⋯1−a0−a1−a2⋯−an−1)(x1x2⋮xn−1xn)+(00⋮01)u\begin{pmatrix} \dot{x}_1 \\ \dot{x}_2 \\ \vdots \\ \dot{x}_{n-1} \\ \dot{x}_n \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_0 & -a_1 & -a_2 & \cdots & -a_{n-1} \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 0 \\ 1 \end{pmatrix} u y=(b0−a0bnb1−a1bn⋯bn−1−an−1bn)(x1x2⋮xn−1xn)+bnuy= \begin{pmatrix} b_0-a_0b_n & b_1-a_1b_n & \cdots & b_{n-1}-a_{n-1}b_n \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{pmatrix} +b_nu

一个明显的事情就是系统的状态方程和无零点时相同,有零点的另一种实现也是这样,这是因为无论是否有零点,传递函数决定的特征方程没有变化。

有零点的第二种实现如下。

(x˙1x˙2⋮x˙n−1x˙n)=(010⋯0001⋯0⋮⋮⋮⋱⋮000⋯1−a0−a1−a2⋯−an−1)(x1x2⋮xn−1xn)+(βn−1βn−2⋮β1β0)u\begin{pmatrix} \dot{x}_1 \\ \dot{x}_2 \\ \vdots \\ \dot{x}_{n-1} \\ \dot{x}_n \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_0 & -a_1 & -a_2 & \cdots & -a_{n-1} \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{pmatrix} + \begin{pmatrix} \beta_{n-1} \\ \beta_{n-2} \\ \vdots \\ \beta_1 \\ \beta_0 \end{pmatrix} u y=(10⋯00)(x1x2⋮xn−1xn)+βnuy= \begin{pmatrix} 1 & 0 & \cdots & 0 & 0 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{pmatrix} +\beta_n u βn=bnβn−1=bn−1−an−1βnβn−2=bn−2−an−2βn−an−1βn−1  ⋮β0=b0−a0βn−a1βn−1−⋯−an−1β1=b0−∑i=0n−1aiβn−i\begin{aligned} \beta_n &= b_n \\[6pt] \beta_{n-1} &= b_{n-1}-a_{n-1}\beta_n \\[6pt] \beta_{n-2} &= b_{n-2}-a_{n-2}\beta_n-a_{n-1}\beta_{n-1} \\ &\;\vdots \\[6pt] \beta_0 &= b_0-a_0\beta_n-a_1\beta_{n-1}-\cdots-a_{n-1}\beta_1 \\ &= b_0-\sum_{i=0}^{n-1}a_i\beta_{n-i} \end{aligned}

对于这种实现方式,实际上一般比较难算,个人认为了解即可。

§04状态空间下的变换

线性变换

在一个状态空间中,给定选取的一组状态变量,我们总可以通过平移使得这个状态变量构成的向量从空间的原点出发,指向空间中的某一点。所以为了简化讨论,我们以原点为起点进行说明。这个状态向量指向的那一点,可以表征在当前环境下系统中状态变量的值,而当环境连续变化时,其指向的那一点就会在空间中划出一道轨迹。


通过线性代数我们可以知道,从原点起始的向量转移到另一个位置的操作,可以用一个矩阵乘以一个向量表示,这也被称为线性变换。这个线性变换操作描述的是对于一个给定的定常系统,我们可以选择多种不同的状态变量来组成描述系统的状态空间表达式,而这个线性变换用到的矩阵就是不同状态空间表达式之间的联系。

从数学上我们要求这个矩阵是非奇异的,也就是矩阵满秩或方阵行列式不为00。记为TT,于是有如下变换关系。

x=Tzz˙=T−1ATz+T−1Buy=CTz+Du\begin{aligned} \boldsymbol{x} &= T\boldsymbol{z} \\[6pt] \dot{\boldsymbol{z}} &= T^{-1}AT\boldsymbol{z}+T^{-1}B\boldsymbol{u} \\[6pt] \boldsymbol{y} &= CT\boldsymbol{z}+D\boldsymbol{u} \end{aligned}

特征值与特征矢量

在经典控制论中我们学过系统的特征方程,以及特征方程的解特征值。通过数学关系,我们可以给出现代控制论中特征方程的另一种表达形式。

∣λI−A∣=0\left|\lambda I-A\right|=0

通过数学推导我们还知道,经过TT线性变换后系统的特征值不变。

下面给出特征矢量的定义,对于单特征根而言,定义如下。

Api=λipiA\boldsymbol{p}_i=\lambda_i\boldsymbol{p}_i

对于多特征根而言,定义如下。

λ1P1−AP1=0λ1P2−AP2=−P1⋮λ1Pq−APq=−Pq−1\begin{aligned} \lambda_1 P_1-AP_1 &= 0 \\ \lambda_1 P_2-AP_2 &= -P_1 \\ &\vdots \\ \lambda_1 P_q-AP_q &= -P_{q-1} \end{aligned}

将系统矩阵变为标准型

通过上述内容我们知道,可以用线性变换改变系统状态空间表达式的形式,使得分析更加简单,下面给出一些常见的转换结果与对应的TT。

对于一般的AA,特征值无重根时有:

J=(λ10⋯00λ2⋯0⋮⋮⋱⋮00⋯λn)T=(P1P2⋯Pn)\begin{aligned} J&= \begin{pmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{pmatrix} \\[10pt] T &= \begin{pmatrix} P_1 & P_2 & \cdots & P_n \end{pmatrix} \end{aligned}

特征值有重根时有:

J=(λ11⋯00λ1⋱⋮0⋮⋱⋱10⋯0λ1λq+100⋱0λn)T=(P1P2⋯PqPq+1⋯Pn)\begin{aligned} J &= \left( \begin{array}{cccc|ccc} \lambda_1 & 1 & \cdots & 0 & & & \\ 0 & \lambda_1 & \ddots & \vdots & & 0 & \\ \vdots & \ddots & \ddots & 1 & & & \\ 0 & \cdots & 0 & \lambda_1 & & & \\ \hline & & & & \lambda_{q+1} & & 0 \\ & 0 & & & & \ddots & \\ & & & & 0 & & \lambda_n \end{array} \right) \\[10pt] T &= \begin{pmatrix} P_1 & P_2 & \cdots & P_q & P_{q+1} & \cdots & P_n \end{pmatrix} \end{aligned}

对于AA为友矩阵,特征值无重根时有:

A=(010⋯0001⋯0⋮⋮⋮⋱⋮000⋯1−a0−a1−a2⋯−an−1)T=(11⋯1λ1λ2⋯λnλ12λ22⋯λn2⋮⋮⋮λ1n−1λ2n−1⋯λnn−1),λi≠λj(i≠j)\begin{aligned} A &= \begin{pmatrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_0 & -a_1 & -a_2 & \cdots & -a_{n-1} \end{pmatrix} \\[12pt] T &= \begin{pmatrix} 1 & 1 & \cdots & 1 \\ \lambda_1 & \lambda_2 & \cdots & \lambda_n \\ \lambda_1^2 & \lambda_2^2 & \cdots & \lambda_n^2 \\ \vdots & \vdots & & \vdots \\ \lambda_1^{n-1} & \lambda_2^{n-1} & \cdots & \lambda_n^{n-1} \end{pmatrix}, \qquad \lambda_i\ne\lambda_j\quad(i\ne j) \end{aligned}

特征值有重根时有:

T=(100⋯1⋯1λ110⋯λ4⋯λnλ122λ11⋯λ42⋯λn2⋮⋮⋮⋮⋮λ1n−1ddλ1(λ1n−1)12d2dλ12(λ1n−1)⋯λ4n−1⋯λnn−1)T= \begin{pmatrix} 1 & 0 & 0 & \cdots & 1 & \cdots & 1 \\ \lambda_1 & 1 & 0 & \cdots & \lambda_4 & \cdots & \lambda_n \\ \lambda_1^2 & 2\lambda_1 & 1 & \cdots & \lambda_4^2 & \cdots & \lambda_n^2 \\ \vdots & \vdots & \vdots & & \vdots & & \vdots \\ \lambda_1^{n-1} & \dfrac{d}{d\lambda_1}\left(\lambda_1^{n-1}\right) & \dfrac{1}{2}\dfrac{d^2}{d\lambda_1^2}\left(\lambda_1^{n-1}\right) & \cdots & \lambda_4^{n-1} & \cdots & \lambda_n^{n-1} \end{pmatrix}

其中重根部分是将重根作为自变量,以一定规则求导。本课程不涉及三阶以上的计算,故没有给出通式。

特征值有共轭复根时有:

T=(1011σωλ3λ4σ2−ω22σωλ32λ42σ3−3σω23σ2ω−ω3λ33λ43)T−1AT=(σω00−ωσ0000λ30000λ4)\begin{aligned} T &= \begin{pmatrix} 1 & 0 & 1 & 1 \\ \sigma & \omega & \lambda_3 & \lambda_4 \\ \sigma^2-\omega^2 & 2\sigma\omega & \lambda_3^2 & \lambda_4^2 \\ \sigma^3-3\sigma\omega^2 & 3\sigma^2\omega-\omega^3 & \lambda_3^3 & \lambda_4^3 \end{pmatrix} \\[12pt] T^{-1}AT &= \begin{pmatrix} \sigma & \omega & 0 & 0 \\ -\omega & \sigma & 0 & 0 \\ 0 & 0 & \lambda_3 & 0 \\ 0 & 0 & 0 & \lambda_4 \end{pmatrix} \end{aligned}

§05由状态空间表达式求传递函数

对于一般单输入单输出状态空间表达式而言,其输入与状态、输入与输出之间的传递函数表达式可以写为如下形式:

Wux(s)=X(s)U(s)=(sI−A)−1bW(s)=Y(s)U(s)=c(sI−A)−1b+d\begin{aligned} \boldsymbol{W}_{ux}(s) &=\frac{\boldsymbol{X}(s)}{U(s)} =(sI-A)^{-1}\boldsymbol{b} \\[8pt] W(s) &=\frac{Y(s)}{U(s)} =\boldsymbol{c}(sI-A)^{-1}\boldsymbol{b}+d \end{aligned}

其中前者为一个向量,后者为一个元素。

对于多输入多输出系统而言则可写为如下形式:

Wux(s)=(sI−A)−1BW(s)=C(sI−A)−1B+D\begin{aligned} W_{ux}(s) &= (sI-A)^{-1}B \\[8pt] W(s) &= C(sI-A)^{-1}B+D \end{aligned}

其中后者为一个矩阵函数

W(s)=(W11(s)W12(s)⋯W1r(s)W21(s)W22(s)⋯W2r(s)⋮⋮⋱⋮Wm1(s)Wm2(s)⋯Wmr(s))W(s)= \begin{pmatrix} W_{11}(s) & W_{12}(s) & \cdots & W_{1r}(s) \\ W_{21}(s) & W_{22}(s) & \cdots & W_{2r}(s) \\ \vdots & \vdots & \ddots & \vdots \\ W_{m1}(s) & W_{m2}(s) & \cdots & W_{mr}(s) \end{pmatrix}

下面给出多系统在不同链接方式下总传递函数和单个传递函数之间的关系:

并联连接时总传递函数为各个传递函数之和

串联连接时总传递函数为各个传递函数之积,由于矩阵乘法的顺序固定,此处先乘离输出近的传递函数,再乘远的传递函数。

输出反馈时总传递函数的公式如下,同串联连接,矩阵乘法顺序固定。

W(s)=[I+W1(s)W2(s)]−1W1(s)W(s)=\left[I+W_1(s)W_2(s)\right]^{-1}W_1(s)

§06总结

这一章的内容属于现代控制论的基础,且多为数学公式,其中不少公式的推导也不是由纯数学模型而来,而是结合了模拟结构图的构建,需要较多经验才能构造或推导。

从实用的角度来看,只要发现公式形式上的规律并能实际运用即可,如果想真的深度理解现代控制和数学之间的紧密关系,还需要等待全部内容学完并统一分析才行,故此处不进行赘述。

现代控制论 2 / 2

在文章页展开 →
  1. 01关于现代控制论2026.11.04
  2. 02控制系统的状态空间表达式正在读