數字系統,以前表示為差分方程或 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)}}}
上面的例子是一個非常簡單的例子。但是,鼓勵讀者在以下位置為具有采樣器(及其相關重建器)的系統求解傳遞函式
在反饋系統之前
在正向路徑中,在被控物件之後
在反向路徑中
在反饋迴路之後