文章目录
序言
离散系统和连续系统类似
建立离散状态空间模型
和上一篇文章中的连续系统一样,我们首先要做的就是建立状态空间模型,有多种方法可以用来建立状态空间模型,我们这里介绍差分方程法和Z传递函数法。
由差分方程建立状态空间模型
我们将系统分为含有高阶差分项和不含高阶差分项两种情况,后者是前者的特例
输入不含有高阶差分项
y ( k + n ) + a 1 y ( k + n − 1 ) + a 2 y ( k + n − 2 ) + ⋯ + a n − 1 y ( k + 1 ) + a n y ( k ) = b u ( k ) y(k+n)+a_{1}y(k+n-1)+a_{2}y(k+n-2)+\cdots+a_{n-1}y(k+1)+a_{n}y(k)=bu(k) y(k+n)+a1y(k+n−1)+a2y(k+n−2)+⋯+an−1y(k+1)+any(k)=bu(k)
选取如下n个变量作为系统的一组状态变量
{
x
1
(
k
)
=
y
(
k
)
x
2
(
k
)
=
y
(
k
+
1
)
x
3
(
k
)
=
y
(
k
+
2
)
⋮
⋮
x
n
(
k
)
=
y
(
k
+
n
−
1
)
\begin{cases} x_{1}(k)=y(k)\\ x_{2}(k)=y(k+1)\\ x_{3}(k)=y(k+2)\\ \ \ \ \vdots \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots\\ x_{n}(k)=y(k+n-1)\\ \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧x1(k)=y(k)x2(k)=y(k+1)x3(k)=y(k+2) ⋮ ⋮xn(k)=y(k+n−1)
则这些状态变量之间有如下关系
{
x
1
(
k
+
1
)
=
x
2
(
k
)
x
2
(
k
+
1
)
=
x
3
(
k
)
⋮
⋮
x
n
−
1
(
k
+
1
)
=
x
n
(
k
)
x
n
(
k
+
1
)
=
−
a
n
x
1
(
k
)
−
a
n
−
1
x
2
(
k
)
−
⋯
−
a
1
x
n
(
k
)
+
b
u
(
k
)
\begin{cases} x_{1}(k+1)=x_{2}(k)\\ x_{2}(k+1)=x_{3}(k)\\ \ \ \ \vdots \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots\\ x_{n-1}(k+1)=x_{n}(k)\\ x_{n}(k+1)=-a_{n}x_{1}(k)-a_{n-1}x_{2}(k)-\cdots-a_{1}x_{n}(k)+bu(k) \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧x1(k+1)=x2(k)x2(k+1)=x3(k) ⋮ ⋮xn−1(k+1)=xn(k)xn(k+1)=−anx1(k)−an−1x2(k)−⋯−a1xn(k)+bu(k)
将上式写成矩阵向量形式,得到离散状态空间方程,即
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
x(k+1)=Fx(k)+Hu(k)
x(k+1)=Fx(k)+Hu(k)
式子中的两个向量如下所示
x
(
k
)
=
[
x
1
(
k
)
x
2
(
k
)
⋮
x
n
(
k
)
]
x
(
k
+
1
)
=
[
x
1
(
k
+
1
)
x
2
(
k
+
1
)
⋮
x
n
(
k
+
1
)
]
x(k) =\left[ \begin{matrix} x_{1}(k) \\ x_{2}(k) \\ \vdots \\ x_{n}(k) \\ \end{matrix} \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x(k+1) = \left[ \begin{matrix} x_{1}(k+1) \\ x_{2}(k+1) \\ \vdots \\ x_{n}(k+1) \\ \end{matrix} \right]
x(k)=⎣⎢⎢⎢⎡x1(k)x2(k)⋮xn(k)⎦⎥⎥⎥⎤ x(k+1)=⎣⎢⎢⎢⎡x1(k+1)x2(k+1)⋮xn(k+1)⎦⎥⎥⎥⎤
其中F、H是两个矩阵,如下所示
F
=
[
0
1
0
⋯
0
0
0
1
⋯
0
⋮
⋮
⋮
⋱
⋮
0
0
0
⋯
1
−
a
n
−
a
n
−
1
a
n
−
2
⋯
−
a
1
]
H
=
[
0
0
⋮
0
b
]
F = \left[ \begin{matrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_{n} & -a_{n-1} & a_{n-2} & \cdots & -a_{1} \\ \end{matrix} \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ H = \left[ \begin{matrix} 0\\ 0\\ \vdots \\ 0\\ b\\ \end{matrix} \right]
F=⎣⎢⎢⎢⎢⎢⎡00⋮0−an10⋮0−an−101⋮0an−2⋯⋯⋱⋯⋯00⋮1−a1⎦⎥⎥⎥⎥⎥⎤ H=⎣⎢⎢⎢⎢⎢⎡00⋮0b⎦⎥⎥⎥⎥⎥⎤
系统的输出
y
(
k
)
=
x
1
(
k
)
y(k)=x_{1}(k)
y(k)=x1(k)我们可以表示成
y
(
k
)
=
C
x
(
k
)
y(k)=C x(k)
y(k)=Cx(k),其中的
C
C
C如下所示
C
=
[
1
0
⋯
0
]
C= \left[ \begin{matrix} 1&0&\cdots&0 \end{matrix} \right]
C=[10⋯0]
上面合并一下得到下面的离散系统的状态空间模型
{
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
y
(
k
)
=
C
x
(
k
)
\begin{cases} x(k+1)=Fx(k)+Hu(k)\\ y(k)=Cx(k) \end{cases}
{x(k+1)=Fx(k)+Hu(k)y(k)=Cx(k)
输入不含有高阶差分项
差分方程如下
y
(
k
+
n
)
+
a
1
y
(
k
+
n
+
1
)
+
a
2
y
(
k
+
n
−
2
)
+
⋯
+
a
n
y
(
k
)
=
b
0
u
(
k
+
n
)
+
b
1
u
(
k
+
n
−
1
)
+
b
2
u
(
k
+
n
−
2
)
+
⋯
+
b
n
u
(
k
)
y(k+n)+a_{1}y(k+n+1)+a_{2}y(k+n-2)+\cdots+a_{n}y(k)=\\b_{0}u(k+n)+b_{1}u(k+n-1)+b_{2}u(k+n-2)+\cdots+b_{n}u(k)
y(k+n)+a1y(k+n+1)+a2y(k+n−2)+⋯+any(k)=b0u(k+n)+b1u(k+n−1)+b2u(k+n−2)+⋯+bnu(k)
我们不加推导直接给出建立后的结果,状态空间模型如下
{
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
y
(
k
)
=
C
x
(
k
)
+
D
u
(
k
)
\begin{cases} x(k+1)=Fx(k)+Hu(k)\\ y(k)=Cx(k)+Du(k) \end{cases}
{x(k+1)=Fx(k)+Hu(k)y(k)=Cx(k)+Du(k)
各个矩阵如下所示
F
=
[
0
1
0
⋯
0
0
0
1
⋯
0
⋮
⋮
⋮
⋱
⋮
0
0
0
⋯
1
−
a
n
−
a
n
−
1
a
n
−
2
⋯
−
a
1
]
H
=
[
h
1
h
2
h
3
⋮
h
n
]
F = \left[ \begin{matrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_{n} & -a_{n-1} & a_{n-2} & \cdots & -a_{1} \\ \end{matrix} \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ H = \left[ \begin{matrix} h_{1} \\ h_{2} \\ h_{3} \\ \vdots \\ h_{n} \\ \end{matrix} \right] \\
F=⎣⎢⎢⎢⎢⎢⎡00⋮0−an10⋮0−an−101⋮0an−2⋯⋯⋱⋯⋯00⋮1−a1⎦⎥⎥⎥⎥⎥⎤ H=⎣⎢⎢⎢⎢⎢⎡h1h2h3⋮hn⎦⎥⎥⎥⎥⎥⎤
C = [ 1 0 0 ⋯ 0 ] D = h 0 = b 0 C= \left[ \begin{matrix} 1 & 0 & 0&\cdots&0\\ \end{matrix} \right]\ \ \ \ \ \ \ \ \ \ D=h_{0}=b_{0} C=[100⋯0] D=h0=b0
其中
h
h
h的计算方法如下
{
h
0
=
b
0
h
1
=
b
1
−
a
1
h
0
h
2
=
b
2
−
a
1
h
1
−
a
2
h
0
⋮
⋮
h
n
=
b
n
−
a
1
h
n
−
1
−
⋯
−
a
n
−
1
h
1
−
a
n
h
0
\begin{cases} h_{0}=b_{0}\\ h_{1}=b_{1}-a_{1}h_{0}\\ h_{2}=b_{2}-a_{1}h_{1}-a_{2}h_{0}\\ \ \ \vdots\ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots\\ h_{n}=b_{n}-a_{1}h_{n-1}-\cdots-a_{n-1}h_{1}-a_{n}h_{0} \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧h0=b0h1=b1−a1h0h2=b2−a1h1−a2h0 ⋮ ⋮hn=bn−a1hn−1−⋯−an−1h1−anh0
为了方便记忆,可以写成矩阵相乘的形式
[
1
0
0
⋯
0
a
1
1
0
⋯
0
a
2
a
1
1
⋯
0
⋮
⋮
⋮
⋱
⋮
a
n
a
n
−
1
⋯
a
1
1
]
[
h
0
h
1
h
2
⋮
h
n
]
=
[
b
0
b
1
b
2
⋮
b
n
]
\left[ \begin{matrix} 1&0&0&\cdots&0\\ a_{1}&1&0&\cdots&0\\ a_{2}&a_{1}&1&\cdots&0\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ a_{n}&a_{n-1}&\cdots&a_{1}&1 \end{matrix} \right] \left[ \begin{matrix} h_{0}\\ h_{1}\\ h_{2}\\ \vdots\\ h_{n} \end{matrix} \right]=\left[ \begin{matrix} b_{0}\\ b_{1}\\ b_{2}\\ \vdots\\ b_{n} \end{matrix} \right]
⎣⎢⎢⎢⎢⎢⎡1a1a2⋮an01a1⋮an−1001⋮⋯⋯⋯⋯⋱a1000⋮1⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡h0h1h2⋮hn⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡b0b1b2⋮bn⎦⎥⎥⎥⎥⎥⎤
由 Z Z Z传递函数建立状态空间模型
有很多种方法可以求出Z传递函数的状态空间模型,实际上,Z传递函数是零初始条件下的差分方程,我们目前接触到的应该都是零初始状态,所以前面已经说过了一种由差分方程求传递函数的方法,而且给出了相应的计算公式。
下面我们给出另一种求解方法,求出来另外两种状态空间方程,即能控标准型和能观标准型,至于这两种标准型的特殊之处,等到后面零极点配置的时候才会显现出来。
G
(
z
)
=
b
0
z
n
+
b
1
z
n
−
1
+
⋯
+
b
n
z
n
+
a
1
z
n
−
1
+
⋯
+
a
n
G(z)=\frac{b_{0}z^{n}+b_{1}z^{n-1}+\cdots+b_{n}}{z^{n}+a_{1}z^{n-1}+\cdots+a_{n}}
G(z)=zn+a1zn−1+⋯+anb0zn+b1zn−1+⋯+bn
我们不加推导地直接给出计算公式
F
=
[
0
1
0
⋯
0
0
0
1
⋯
0
⋮
⋮
⋮
⋱
⋮
0
0
0
⋯
1
−
a
n
−
a
n
−
1
a
n
−
2
⋯
−
a
1
]
H
=
[
0
0
⋮
0
1
]
F = \left[ \begin{matrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_{n} & -a_{n-1} & a_{n-2} & \cdots & -a_{1} \\ \end{matrix} \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ H = \left[ \begin{matrix} 0\\ 0\\ \vdots \\ 0\\ 1\\ \end{matrix} \right]
F=⎣⎢⎢⎢⎢⎢⎡00⋮0−an10⋮0−an−101⋮0an−2⋯⋯⋱⋯⋯00⋮1−a1⎦⎥⎥⎥⎥⎥⎤ H=⎣⎢⎢⎢⎢⎢⎡00⋮01⎦⎥⎥⎥⎥⎥⎤
C = [ b n − a n b 0 b n − 1 − a n − 1 b 0 ⋯ b 1 − a 1 b 0 ] , D = b 0 C = \left[ \begin{matrix} b_{n}-a_{n}b_{0}&b_{n-1}-a_{n-1}b_{0}&\cdots&b_{1}-a_{1}b_{0} \end{matrix} \right],\ \ \ \ \ \ \ \ \ \ \ D=b_{0} C=[bn−anb0bn−1−an−1b0⋯b1−a1b0], D=b0
上面就是所谓的能控标准型
,我们按照如下变换得到四个新的矩阵,如下所示
F
‾
=
F
T
,
H
‾
=
C
T
,
C
‾
=
H
T
,
D
‾
=
b
0
\overline F=F^{T},\ \ \ \ \ \ \ \ \ \ \ \ \ \overline H= C^{T},\ \ \ \ \ \ \ \ \ \ \overline C=H^{T},\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \overline D=b_{0}
F=FT, H=CT, C=HT, D=b0
上面就是所谓的能观标准型
由状态空间模型得到Z传递函数
在零初始条件下
,我们这里不加推导地直接给出转换公式,如下所示
G
(
z
)
=
C
(
z
I
−
F
)
−
1
H
+
D
G(z)=C(zI-F)^{-1}H+D
G(z)=C(zI−F)−1H+D
能观能控性判据
能控性是指系统的状态是否受输入量的控制,如果系统的状态能够在输入量的控制下从任意状态转移到另一个任意状态,则系统是能控的,否则是不能控的。
能观性是指在输出量的观测中,是否能重新构建出所有状态变量,如果能,则系统是能观的,否则是不能观的。
能控性是研究极点配置问题的基础,能观性在观测器的设计中,起着重要的作用。
离散系统的能控性判据
分为状态能控和输出能控
状态能控性判据
系统的状态方程如下所示
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
x(k+1)=Fx(k)+Hu(k)
x(k+1)=Fx(k)+Hu(k)
系统状态完全能控的充分必要条件为由F、H构成的能控矩阵
Q
3
=
[
H
F
H
⋯
F
n
−
1
H
]
Q_{3}=\left[ \begin{matrix} H&FH&\cdots&F^{n-1}H\end{matrix}\right]
Q3=[HFH⋯Fn−1H]
的秩等于状态变量的个数n
输出完全能控
系统输出完全能控的充分必要条件为由F、H、C、D构成的矩阵
Q
4
=
[
C
H
C
F
H
C
F
2
H
⋯
C
F
n
−
1
H
D
]
Q_{4}=\left[\begin{matrix}CH&CFH&CF^{2}H&\cdots&CF^{n-1}H&D \end{matrix} \right]
Q4=[CHCFHCF2H⋯CFn−1HD]
的秩为m,m是输出向量的维数
离散系统的能观性判据
系统具有能观性的充分必要条件为由C、F构成的矩阵
V
2
=
[
C
C
F
⋮
C
F
n
−
1
]
V_{2}=\left[\begin{matrix}C \\CF\\ \vdots \\CF^{n-1} \end{matrix} \right]
V2=⎣⎢⎢⎢⎡CCF⋮CFn−1⎦⎥⎥⎥⎤
的秩等于状态变量的个数n
离散系统的状态反馈控制器设计
极点配置设计法
当系统完全能控,我们可以通过状态反馈任意配置极点。
设被控对象的状态方程为
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
x(k+1)=Fx(k)+Hu(k)
x(k+1)=Fx(k)+Hu(k)
控制框图如下
若选择控制信号
u
(
k
)
=
−
L
x
(
k
)
u(k)=-Lx(k)
u(k)=−Lx(k)
式中
L
=
[
l
1
l
2
⋯
l
n
]
L=[l_{1} \ \ \ l_{2}\ \ \ \cdots \ \ \ l_{n}]
L=[l1 l2 ⋯ ln]为状态反馈增益矩阵。采用线性状态反馈后,得到了闭环控制系统,如下是闭环后的框图
最终我们得到闭环系统的状态方程下式
x
(
k
+
1
)
=
(
F
−
H
L
)
x
(
k
)
x(k+1)=(F-HL)x(k)
x(k+1)=(F−HL)x(k)
它的特征方程为
a
c
(
z
)
=
∣
z
I
−
F
+
H
L
∣
=
0
a_{c}(z)=\left| zI-F+HL \right|=0
ac(z)=∣zI−F+HL∣=0
我们知道状态方程的系统矩阵的特征值就是闭环系统的极点。所以我们可以通过配置
L
L
L来配置状态方程的特征值,从而实现闭环系统的极点配置。
下面用一个例子来说明问题
已知系统状态方程中两个矩阵如下为
F
=
[
1
−
3
0
1
]
H
=
[
1
1
]
F= \left[ \begin{matrix} 1&-3\\ 0&1 \end{matrix} \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ H= \left[ \begin{matrix} 1\\ 1 \end{matrix} \right]
F=[10−31] H=[11]
式子中的
u
(
k
)
=
−
L
x
(
k
)
u(k)=-Lx(k)
u(k)=−Lx(k)状态反馈闭环系统期望的极点为
p
1
=
0.6
,
p
2
=
0.3
p_{1}=0.6,p_{2}=0.3
p1=0.6,p2=0.3。试设计状态反馈增益矩阵
L
=
[
l
1
l
2
]
L=[l_{1}\ \ l_{2}]
L=[l1 l2]
解:闭环系统期望的特征方程为
a
c
(
z
)
=
(
z
−
p
1
)
(
z
−
p
2
)
=
(
z
−
0.6
)
(
z
−
0.3
)
=
z
2
−
0.9
z
+
0.18
a_{c}(z)=(z-p_{1})(z-p_{2})=(z-0.6)(z-0.3)=z^{2}-0.9z+0.18
ac(z)=(z−p1)(z−p2)=(z−0.6)(z−0.3)=z2−0.9z+0.18
这台反馈闭环系统的特征方程为
a
c
(
z
)
=
∣
z
I
−
F
+
H
L
∣
=
z
2
−
(
2
−
l
1
−
l
2
)
z
+
(
1
−
4
l
1
−
l
2
)
a_{c}(z)=\left| zI-F+HL \right|=z^{2}-(2-l_{1}-l_{2})z+(1-4l_{1}-l_{2})
ac(z)=∣zI−F+HL∣=z2−(2−l1−l2)z+(1−4l1−l2)
令上面两个
z
z
z的多项式相等得
2
−
l
1
−
l
2
=
0.9
1
−
4
l
1
−
l
2
=
0.18
2-l_{1}-l_{2}=0.9\\ 1-4l_{1}-l_{2}=0.18
2−l1−l2=0.91−4l1−l2=0.18
得
l
1
=
−
0.093
l
2
=
1.1933
L
=
[
l
1
l
2
]
=
[
−
0.0933
1.1933
]
l_{1}=-0.093\\ l_{2}=1.1933\\ L=[l_{1}\ \ l_{2}]=[-0.0933\ \ 1.1933]
l1=−0.093l2=1.1933L=[l1 l2]=[−0.0933 1.1933]
状态观测器设计
全维观测器
用极点配置方法进行系统设计时,我们需要测量全部的状态变量,但是在实际系统中,要测量全部状态量是困难的。对那些不能直接测量的状态,用估计的方法得到,从而实现状态反馈。完成这种估计的过程的实际装置叫做状态观测器,或称状态估计器,或称状态重构,下面我们介绍全维观测器。
我们有一个被控对象,其状态方程如下
{
x
(
k
+
1
)
=
F
x
(
k
)
+
H
u
(
k
)
y
(
k
)
=
C
x
(
k
)
(1)
\begin{cases} x(k+1)=Fx(k)+Hu(k) \\ y(k)=Cx(k) \end{cases}\tag{1}
{x(k+1)=Fx(k)+Hu(k)y(k)=Cx(k)(1)
再建立一个状态方程,矩阵参数和被控对象完全相同
{
x
^
(
k
+
1
)
=
F
x
^
(
k
)
+
H
u
(
k
)
y
^
(
k
)
=
C
x
^
(
k
)
+
D
u
(
k
)
(2)
\begin{cases} \hat x(k+1)=F\hat x(k)+Hu(k)\\ \hat y(k)=C\hat x(k)+Du(k) \end{cases}\tag{2}
{x^(k+1)=Fx^(k)+Hu(k)y^(k)=Cx^(k)+Du(k)(2)
我们看状态方程(1)它由
u
(
k
)
u(k)
u(k)得到了
x
(
k
)
x(k)
x(k)和
y
(
k
)
y(k)
y(k),但是我们虽然知道它是这样的结果,但是我们总得有个装置去计算这个结果吧,那么下面的状态方程(2)就是用来计算这个结果的。但是计算出来的结果和物理上的真实结果不一定相同,可能存在滞后,偏差,毕竟我们无法精确地复现物理模型。所以我们需要将它的输出结果与实际结果进行比较,将差值反馈到观测器状态空间方程的输入端构成闭环反馈,这样是为了尽可能地让状态观测器的输出与真实的输出相近。具体图形说明请看陈炳和先生所著《计算机控制系统原理与应用》第一版第432页。
这里要跳一大段,详情请看书!!!
最终状态观测器误差的状态方程方程如下
x
~
(
k
+
1
)
=
(
F
−
K
e
C
)
x
~
(
k
)
\tilde x(k+1)=(F-K_{e}C)\tilde x(k)
x~(k+1)=(F−KeC)x~(k)
它的特征方程为
a
e
(
z
)
=
∣
z
I
−
F
+
K
e
C
∣
=
0
a_{e}(z)=\left| zI-F+K_{e}C \right|=0
ae(z)=∣zI−F+KeC∣=0
其中的
K
e
K_{e}
Ke为观测器增益矩阵,我们看到
x
~
(
k
)
\tilde x(k)
x~(k)的动态特性仅与
F
、
C
、
K
e
F、C、K_{e}
F、C、Ke有关,在系统状态方程已知的情况下,我们仅需要配置
K
e
K_{e}
Ke就可以了。配置的过程为
- 明确观测器所要达到的控制性能指标
- 设计出观测器相应闭环极点
- 列出观测器需要的特征方程
- 通过待定系数列出我们设计的观测器的特征方程
- 让二者对应系数相同即可