数字系统,以前表示为差分方程或 Z 变换传递函数,也可以与状态空间表示一起使用。此外,所有处理模拟系统的相同技术都可以应用于数字系统,只是略有变化。
对于数字系统,我们可以使用离散数据集编写类似的方程
x [ k + 1 ] = A x [ k ] + B u [ k ] {\displaystyle x[k+1]=Ax[k]+Bu[k]}
y [ k ] = C x [ k ] + D u [ k ] {\displaystyle y[k]=Cx[k]+Du[k]}
如果我们有一个连续时间状态方程
x ′ ( t ) = A x ( t ) + B u ( t ) {\displaystyle x'(t)=Ax(t)+Bu(t)}
我们可以推导出我们上面讨论过的该方程的数字版本。我们对我们的方程进行拉普拉斯变换
X ( s ) = ( s I − A ) − 1 B u ( s ) + ( s I − A ) − 1 x ( 0 ) {\displaystyle X(s)=(sI-A)^{-1}Bu(s)+(sI-A)^{-1}x(0)}
现在,进行逆拉普拉斯变换,我们可以得到我们的时域系统,记住 * (sI - A) * 项的逆拉普拉斯变换是我们的状态转移矩阵 Φ
x ( t ) = L − 1 ( X ( s ) ) = Φ ( t − t 0 ) x ( 0 ) + ∫ t 0 t Φ ( t − τ ) B u ( τ ) d τ {\displaystyle x(t)={\mathcal {L}}^{-1}(X(s))=\Phi (t-t_{0})x(0)+\int _{t_{0}}^{t}\Phi (t-\tau )Bu(\tau )d\tau }
现在,我们在输入上应用一个零阶保持,以使系统数字化。请注意,我们将我们的开始时间 * t0 = kT *,因为我们只对系统在一个采样周期内的行为感兴趣。
u ( t ) = u ( k T ) , k T ≤ t ≤ ( k + 1 ) T {\displaystyle u(t)=u(kT),kT\leq t\leq (k+1)T}
x ( t ) = Φ ( t , k T ) x ( k T ) + ∫ k T t Φ ( t , τ ) B d τ u ( k T ) {\displaystyle x(t)=\Phi (t,kT)x(kT)+\int _{kT}^{t}\Phi (t,\tau )Bd\tau u(kT)}
我们能够从积分中删除 * u(kT) *,因为它不依赖于 τ。我们现在定义一个新函数 Γ,如下所示
Γ ( t , t 0 ) = ∫ t 0 t Φ ( t , τ ) B d τ {\displaystyle \Gamma (t,t_{0})=\int _{t_{0}}^{t}\Phi (t,\tau )Bd\tau }
将这个新表达式插入我们的方程,并将 * t = (k + 1)T * 给我们
x ( ( k + 1 ) T ) = Φ ( ( k + 1 ) T , k T ) x ( k T ) + Γ ( ( k + 1 ) T , k T ) u ( k T ) {\displaystyle x((k+1)T)=\Phi ((k+1)T,kT)x(kT)+\Gamma ((k+1)T,kT)u(kT)}
现在 Φ(T) 和 Γ(T) 是常数矩阵,我们可以用新的名称来表示它们。d 下标表示它们是系数矩阵的数字版本
A d = Φ ( ( k + 1 ) T , k T ) {\displaystyle A_{d}=\Phi ((k+1)T,kT)}
B d = Γ ( ( k + 1 ) T , k T ) {\displaystyle B_{d}=\Gamma ((k+1)T,kT)}
我们可以在状态方程中使用这些值,并转换为我们的括号表示法
x [ k + 1 ] = A d x [ k ] + B d u [ k ] {\displaystyle x[k+1]=A_{d}x[k]+B_{d}u[k]}
性能相似的连续系统和离散系统可以通过一组关系联系在一起。离散系统和连续系统具有不同的特征和不同的系数矩阵,这一点不足为奇。如果我们认为离散系统与连续系统相同,只是它以采样时间 T 进行采样,那么以下关系将成立。将模拟系统转换为数字硬件以供使用的过程称为**离散化**。我们已经对离散化做了基本介绍,但我们将在下面更详细地讨论它。
在离散化中,从连续时间对应物计算相关系数矩阵至关重要。如果我们有连续系统(A, B, C, D) ,我们可以使用关系t = kT 将状态空间解转换为采样系统
x ( k T ) = e A k T x ( 0 ) + ∫ 0 k T e A ( k T − τ ) B u ( τ ) d τ {\displaystyle x(kT)=e^{AkT}x(0)+\int _{0}^{kT}e^{A(kT-\tau )}Bu(\tau )d\tau }
x [ k ] = e A k T x [ 0 ] + ∫ 0 k T e A ( k T − τ ) B u ( τ ) d τ {\displaystyle x[k]=e^{AkT}x[0]+\int _{0}^{kT}e^{A(kT-\tau )}Bu(\tau )d\tau }
现在,如果我们想分析k+1 项,我们可以再次求解这个方程
x [ k + 1 ] = e A ( k + 1 ) T x [ 0 ] + ∫ 0 ( k + 1 ) T e A ( ( k + 1 ) T − τ ) B u ( τ ) d τ {\displaystyle x[k+1]=e^{A(k+1)T}x[0]+\int _{0}^{(k+1)T}e^{A((k+1)T-\tau )}Bu(\tau )d\tau }
将变量分离,并将积分分为两部分得到
x [ k + 1 ] = e A T e A k T x [ 0 ] + ∫ 0 k T e A T e A ( k T − τ ) B u ( τ ) d τ + ∫ k T ( k + 1 ) T e A ( k T + T − τ ) B u ( τ ) d τ {\displaystyle x[k+1]=e^{AT}e^{AkT}x[0]+\int _{0}^{kT}e^{AT}e^{A(kT-\tau )}Bu(\tau )d\tau +\int _{kT}^{(k+1)T}e^{A(kT+T-\tau )}Bu(\tau )d\tau }
如果我们代入一个新的变量 *β = (k + 1)T + τ*,并且看到下面的关系
e A k T x [ 0 ] = x [ k ] {\displaystyle e^{AkT}x[0]=x[k]}
我们得到最终的结果
x [ k + 1 ] = e A T x [ k ] + ( ∫ 0 T e A α d α ) B u [ k ] {\displaystyle x[k+1]=e^{AT}x[k]+\left(\int _{0}^{T}e^{A\alpha }d\alpha \right)Bu[k]}
将此方程与我们的常规解进行比较,我们可以得到一组将连续时间系统转换为离散时间系统的关系式。这里,我们将使用 “d” 下标来表示离散系统的系统矩阵,并使用 “c” 下标来表示连续系统的系统矩阵。
矩阵维度 A: *p* × *p* B: *p* × *q* C: *r* × *p* D: *r* × *q*
A d = e A c T {\displaystyle A_{d}=e^{A_{c}T}}
B d = ∫ 0 T e A τ d τ B c {\displaystyle B_{d}=\int _{0}^{T}e^{A\tau }d\tau B_{c}}
C d = C c {\displaystyle C_{d}=C_{c}}
D d = D c {\displaystyle D_{d}=D_{c}}
如果 Ac 矩阵是非奇异的,并且我们可以找到它的逆,那么我们可以将 Bd 定义为
B d = A c − 1 ( A d − I ) B c {\displaystyle B_{d}=A_{c}^{-1}(A_{d}-I)B_{c}}
离散矩阵和连续矩阵之间的差异是由于描述我们系统的基础方程不同。连续时间系统由线性微分方程表示,而数字系统由差分方程描述。差分方程中的高阶项是信号的延迟副本,而微分方程中的高阶项是模拟信号的导数。
如果我们有一个复杂的模拟系统,并且我们想在数字计算机中实现该系统,我们可以使用上述变换使我们的矩阵符合新的范式。
由于离散系统的系数矩阵与连续时间系数矩阵的计算方式不同,并且由于矩阵在技术上代表不同的东西,因此在文献中通常使用不同的变量来表示这些矩阵。例如,以下变量经常用在 *A* 和 *B* 的位置
Ω = A d {\displaystyle \Omega =A_{d}}
R = B d {\displaystyle R=B_{d}}
这些替换将使我们得到一个由有序四元组 *(*Ω*, *R*, *C*, *D*)* 定义的系统,用于表示我们的方程。
为了方便起见,我们将使用字母 *A* 和 *B* 来表示本书其余部分中的这些矩阵。
我们可以找到离散时间差分方程的一般时不变解。让我们开始建立一个模式。我们知道离散状态方程
x [ n + 1 ] = A x [ n ] + B u [ n ] {\displaystyle x[n+1]=Ax[n]+Bu[n]}
从时间n = 0 开始,我们可以开始创建一个模式
x [ 1 ] = A x [ 0 ] + B u [ 0 ] {\displaystyle x[1]=Ax[0]+Bu[0]}
x [ 2 ] = A x [ 1 ] + B u [ 1 ] = A 2 x [ 0 ] + A B u [ 0 ] + B u [ 1 ] {\displaystyle x[2]=Ax[1]+Bu[1]=A^{2}x[0]+ABu[0]+Bu[1]}
x [ 3 ] = A x [ 2 ] + B u [ 2 ] = A 3 x [ 0 ] + A 2 B u [ 0 ] + A B u [ 1 ] + B u [ 2 ] {\displaystyle x[3]=Ax[2]+Bu[2]=A^{3}x[0]+A^{2}Bu[0]+ABu[1]+Bu[2]}
通过一些代数技巧,我们可以将这个模式简化为一个方程
x [ n ] = A n x [ n 0 ] + ∑ m = 0 n − 1 A n − 1 − m B u [ m ] {\displaystyle x[n]=A^{n}x[n_{0}]+\sum _{m=0}^{n-1}A^{n-1-m}Bu[m]}
将此结果代入输出方程,得到
y [ n ] = C A n x [ n 0 ] + ∑ m = 0 n − 1 C A n − 1 − m B u [ m ] + D u [ n ] {\displaystyle y[n]=CA^{n}x[n_{0}]+\sum _{m=0}^{n-1}CA^{n-1-m}Bu[m]+Du[n]}
如果系统是时变的,我们有一个类似于连续时间情况的一般解
x [ n ] = ϕ [ n , n 0 ] x [ n 0 ] + ∑ m = n 0 n − 1 ϕ [ n , m + 1 ] B [ m ] u [ m ] {\displaystyle x[n]=\phi [n,n_{0}]x[n_{0}]+\sum _{m=n_{0}}^{n-1}\phi [n,m+1]B[m]u[m]}
y [ n ] = C [ n ] ϕ [ n , n 0 ] x [ n 0 ] + C [ n ] ∑ m = n 0 n − 1 ϕ [ n , m + 1 ] B [ m ] u [ m ] + D [ n ] u [ n ] {\displaystyle y[n]=C[n]\phi [n,n_{0}]x[n_{0}]+C[n]\sum _{m=n_{0}}^{n-1}\phi [n,m+1]B[m]u[m]+D[n]u[n]}
其中 φ,状态转移矩阵 ,定义方式与连续情况下的状态转移矩阵类似。但是,离散时间中的一些性质有所不同。例如,状态转移矩阵的逆不一定存在,并且在许多系统中它并不存在。
离散时间状态转移矩阵是以下方程的唯一解
ϕ [ k + 1 , k 0 ] = A [ k ] ϕ [ k , k 0 ] {\displaystyle \phi [k+1,k_{0}]=A[k]\phi [k,k_{0}]}
其中必须满足以下限制
ϕ [ k 0 , k 0 ] = I {\displaystyle \phi [k_{0},k_{0}]=I}
从这个定义中,我们可以很明显地计算出这个状态转移矩阵
ϕ [ k , k 0 ] = A [ k − 1 ] A [ k − 2 ] A [ k − 3 ] ⋯ A [ k 0 ] {\displaystyle \phi [k,k_{0}]=A[k-1]A[k-2]A[k-3]\cdots A[k_{0}]}
或者,
ϕ [ k , k 0 ] = ∏ m = 1 k − k 0 A [ k − m ] {\displaystyle \phi [k,k_{0}]=\prod _{m=1}^{k-k_{0}}A[k-m]}
MATLAB 是一款计算机程序,因此它使用数字方法计算所有系统。MATLAB 函数 lsim 用于模拟具有指定输入的连续系统。此函数通过调用 c2d 来工作,该函数将系统 (A, B, C, D) 转换为等效的离散系统。一旦系统模型被离散化,该函数就会将控制权传递给 dlsim 函数,该函数用于模拟具有指定输入的离散时间系统。
因此,像 MATLAB 这样的仿真程序会受到与离散化过程相关的舍入误差的影响。
假设我们在系统中引入了采样器
请注意,在采样器之后,我们必须引入一个重建电路(在其他地方有描述),以便我们可以继续将输入、输出和被控对象保持在拉普拉斯域中。请注意,我们用符号 Gr(s) 表示重建电路。
现在,让我们展示一下这个方程的传递函数
E ∗ ( s ) = L ∗ [ X ( s ) − Y ( s ) ] = X ∗ ( s ) − Y ∗ ( s ) {\displaystyle E^{*}(s)={\mathcal {L}}^{*}[X(s)-Y(s)]=X^{*}(s)-Y^{*}(s)}
Y ( s ) = E ∗ ( s ) G r ( s ) G ( s ) {\displaystyle Y(s)=E^{*}(s)G_{r}(s)G(s)\,}
现在,这有点复杂,所以请仔细阅读
Y ( s ) = X ∗ ( s ) G r ( s ) G ( s ) − Y ∗ ( s ) G r ( s ) G ( s ) {\displaystyle Y(s)=X^{*}(s)G_{r}(s)G(s)-Y^{*}(s)G_{r}(s)G(s)\,}
我们将转换为星域,因为该方程右侧的每一项都有一个星域项
Y ∗ ( s ) = X ∗ ( s ) G r ∗ ( s ) G ∗ ( s ) − Y ∗ ( s ) G r ∗ ( s ) G ∗ ( s ) {\displaystyle Y^{*}(s)=X^{*}(s)G_{r}^{*}(s)G^{*}(s)-Y^{*}(s)G_{r}^{*}(s)G^{*}(s)}
接下来我们可以将变量转换为 Z 域
Y ( z ) = X ( z ) G r ( z ) G ( z ) − Y ( z ) G r ( z ) G ( z ) {\displaystyle Y(z)=X(z)G_{r}(z)G(z)-Y(z)G_{r}(z)G(z)\,}
我们可以解出 Y(z)
Y ( z ) = X ( z ) G r ( z ) G ( z ) 1 + G r ( z ) G ( z ) {\displaystyle Y(z)={\frac {X(z)G_{r}(z)G(z)}{1+G_{r}(z)G(z)}}}
上面的例子是一个非常简单的例子。但是,鼓励读者在以下位置为具有采样器(及其相关重建器)的系统求解传递函数
在反馈系统之前
在正向路径中,在被控对象之后
在反向路径中
在反馈回路之后