关于线性连续系统转换到离散系统的方法
虽然通常在分析设计控制器时,总是针对连续系统设计的。但是若要将其在实际工程中应用起来,则免不了需要将它转换为离散的形式。本文主要对连续系统转换到离散系统的几种方法进行了汇总,便于之后的翻阅。
参考资料:
1.传递函数
线性连续系统的一种重要的表示形式为传递函数。将传递函数进行离散化的方法就是z变换,将传递函数中的"s"变量全部用"z"替换即可。
G
(
s
)
?
G
(
z
)
G(s) \longrightarrow G(z)
G(s)?G(z) 常见的三种"s"与"z"的对应关系分别如下所示,其中
T
T
T表示采样时间。
-
前项差分变换
z
=
1
+
T
s
(1)
z=1+Ts \tag{1}
z=1+Ts(1) -
后项差分变换
z
=
1
1
?
T
s
(2)
z=\frac{1}{1-Ts} \tag{2}
z=1?Ts1?(2) -
双线性变换(Tustin变换)
z
=
1
+
T
s
/
2
1
?
T
s
/
2
(3)
z=\frac{1+Ts/2}{1-Ts/2} \tag{3}
z=1?Ts/21+Ts/2?(3)
2.状态空间方程
线性连续系统的另一种重要的表示形式为状态空间方程。一般来说,将状态空间方程进行离散化的方法有两种,分别为欧拉法和零阶保持法。下面分别进行介绍。
{
x
˙
=
A
x
+
B
u
y
=
C
x
+
D
u
?
{
x
(
k
+
1
)
=
A
z
x
(
k
)
+
B
z
u
(
k
)
y
(
k
)
=
C
z
x
(
k
)
+
D
z
u
(
k
)
\begin{cases} \dot{x}=Ax+Bu \\ y=Cx+Du \end{cases} \longrightarrow \begin{cases} x(k+1)=A_zx(k)+B_zu(k) \\ y(k)=C_zx(k)+D_zu(k) \end{cases}
{x˙=Ax+Buy=Cx+Du??{x(k+1)=Az?x(k)+Bz?u(k)y(k)=Cz?x(k)+Dz?u(k)?
2.1.欧拉法
欧拉法利用了泰勒展开式的一阶近似,将状态导数表示为了如下形式
x
˙
=
x
(
k
+
1
)
?
x
(
k
)
T
(4)
\dot{x}=\frac{x(k+1)-x(k)}{T} \tag{4}
x˙=Tx(k+1)?x(k)?(4) 将上式代入状态空间方程,可以得到离散化状态空间方程
{
x
(
k
+
1
)
=
A
z
x
(
k
)
+
B
z
u
(
k
)
y
(
k
)
=
C
z
x
(
k
)
+
D
z
u
(
k
)
(5)
\begin{cases} x(k+1)=A_zx(k)+B_zu(k) \\ y(k)=C_zx(k)+D_zu(k) \end{cases} \tag{5}
{x(k+1)=Az?x(k)+Bz?u(k)y(k)=Cz?x(k)+Dz?u(k)?(5) 上式中,
A
z
=
I
+
T
A
,
B
z
=
T
B
,
C
z
=
C
,
D
z
=
D
A_z=I+TA,B_z=TB,C_z=C,D_z=D
Az?=I+TA,Bz?=TB,Cz?=C,Dz?=D。
2.2.零阶保持法
我们知道,线性系统的状态空间方程的解可以表示为
x
(
t
)
=
e
A
(
t
?
t
0
)
x
(
t
0
)
+
∫
t
0
t
e
A
(
t
?
τ
)
B
u
(
τ
)
d
τ
(6)
x(t)=e^{A(t-t_0)}x(t_0)+\int_{t_0}^t{e^{A(t-\tau)}Bu(\tau)d\tau} \tag{6}
x(t)=eA(t?t0?)x(t0?)+∫t0?t?eA(t?τ)Bu(τ)dτ(6) 上式中,
e
A
(
t
?
t
0
)
e^{A(t-t_0)}
eA(t?t0?)表示系统的状态转移矩阵,
e
A
e^A
eA的形式称为矩阵指数。
定义时间间隔为
T
=
t
k
+
1
?
t
k
T=t_{k+1}-t_{k}
T=tk+1??tk?,且假设在时间间隔内
A
(
t
)
,
B
(
t
)
,
u
(
t
)
A(t),B(t),u(t)
A(t),B(t),u(t)保持不变。则式(6)可以写成
x
(
t
k
+
1
)
=
e
A
T
x
(
t
k
)
+
∫
0
T
e
A
(
T
?
τ
)
d
τ
B
u
(
t
k
)
=
e
A
T
x
(
t
k
)
+
e
A
T
∫
0
T
e
?
A
τ
d
τ
B
u
(
t
k
)
(7)
\begin{aligned} x(t_{k+1})&=e^{AT}x(t_k)+\int_{0}^T{e^{A(T-\tau)}d\tau}Bu(t_k) \\ &=e^{AT}x(t_k)+e^{AT}\int_{0}^T{e^{-A\tau}d\tau}Bu(t_k) \end{aligned} \tag{7}
x(tk+1?)?=eATx(tk?)+∫0T?eA(T?τ)dτBu(tk?)=eATx(tk?)+eAT∫0T?e?AτdτBu(tk?)?(7) 由式(7)可以确定,
A
z
=
e
A
T
,
B
z
=
e
A
T
∫
0
T
e
?
A
τ
d
τ
B
A_z=e^{AT},B_z=e^{AT}\int_{0}^T{e^{-A\tau}d\tau}B
Az?=eAT,Bz?=eAT∫0T?e?AτdτB。
在计算矩阵
B
z
B_z
Bz?时,由于存在矩阵指数的积分运算,在实际使用时可能会比较麻烦。当矩阵
A
A
A可逆时,矩阵指数的积分运算可以进行简化,如式(8)所示。具体推导过程详见Optimal State Estimation Kalman, H Infinity, and Nonlinear Approaches。
∫
0
T
e
?
A
τ
d
τ
=
[
I
?
e
?
A
T
]
A
?
1
(8)
\int_{0}^T{e^{-A\tau}d\tau}=[I-e^{-AT}]A^{-1} \tag{8}
∫0T?e?Aτdτ=[I?e?AT]A?1(8) 以上介绍的两种离散化方法中,零阶保持法在精确度和稳定性方面优于欧拉法。
|