最小拍控制系統詳細解讀(階躍輸入+速度輸入2個案例)【Simulink仿真】

1.符號說明與結構框圖

  1. y(k)——系統響應輸出的離散值
  2. u(k)——數字PID控制輸出的離散值
  3. r(k)——期望輸出的離散值(事先已知),在本例中爲常數(即階躍輸入)
  4. e(k)——e(k)=r(k)-y(k),爲期望值-實際值,是單位負反饋的誤差比較信號
  5. D(z)——數字控制器的脈衝傳遞函數
  6. G(s)——被控對象的傳遞函數,G(z)——廣義被控對象的脈衝傳遞函數
  7. Φ(z)=C(z)/R(z)\Phi(z)=C(z)/R(z)——系統的閉環傳遞函數,Φe(z)=E(z)/C(z)\Phi_e(z)=E(z)/C(z)——系統的閉環誤差傳遞函數
    系統的結構框圖如下:
    系統結構框圖

2.最小拍控制系統構造原則

最少拍系統是指系統對某些典型的輸入(階躍、速度、加速度輸入)具有最快的響應特性。具體來說,最少拍系統應滿足對典型輸入在有限個採樣週期內結束過渡過程且穩態誤差爲零。研究誤差序列e(k)e(k)的特性之前,不妨通過在Z域研究Φe(z)\Phi_e(z)的表達式來得出使得e(k)e(k)最快收斂至0的條件。
最小拍控制系統的設計原理是使得系統的閉環誤差傳遞函數Φe(z)=a1z1+a2z2+...+anzn\Phi_e(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}具有最簡單的表達式。因爲zkz^{-k}的反Z變換爲δ(tk)\delta(t-k),因此e(k)=a1δ(tT)+a2δ(t2T)+...+anδ(tnT)(an0)e(k)=a_1\delta(t-T)+a_2\delta(t-2T)+...+a_n\delta(t-nT)(a_n≠0),即e(1)=a1,e(2)=a2,...,e(n)=ane(1)=a_1,e(2)=a_2,...,e(n)=a_nn的值是有限的說明系統能在有限拍內達到最小,n的值越小,Φe(z)\Phi_e(z)的表達式越簡單,能達到穩態值所需的拍數(週期數)越少。而我們的目的就是設計控制器D(z)使其達到穩態誤差e(k)(甚至是e(t))的要求。
設計步驟大體如下:

  1. 根據被控對象的數學模型求出廣義被控對象的脈衝傳遞函數G(z)
  2. 根據輸入信號的類型,確定模型Φe(z)=1Φ(z)\Phi_e(z)=1-\Phi(z),其對應關係如下表:
典型輸入 Z域表達式 Φe(z)\Phi_e(z)的形式
u(t)u(t) 11z1\frac{1}{1-z^{-1}} (1z1)F(z)(1-z^{-1})F(z)
tu(t)tu(t) Tz1(1z1)2\frac{Tz^{-1}}{{(1-z^{-1})}^2} (1z1)2F(z){(1-z^{-1})}^2F(z)
12t2u(t)\frac{1}{2}t^2u(t) T2z1(1+z1)2(1z1)3\frac{T^2z^{-1}(1+z^{-1})}{2{(1-z^{-1})}^3} (1z1)3F(z){(1-z^{-1})}^3F(z)

當被控對象不含有不穩定零極點,不含有純滯後環節z1z^{-1}時,F(z)=1,此時的被控對象也稱爲簡單對象。
滿足以上條件的任意一個,被控對象稱爲複雜對象,當G(s)中含有不穩定零點或純滯後環節時,不能使用D(z)或者Φe(z)\Phi_e(z)中增加因式消除,只能保留至Φ(z)\Phi(z),當G(s)中含有不穩定極點時,在Φe(z)\Phi_e(z)中增加對應的零點抵消Φ(z)\Phi(z)中的不穩定極點。
3. 求控制器的脈衝傳遞函數D(z),求取原理如下:
由於C(z)=E(z)D(z)G(z)C(z)=E(z)D(z)G(z),所以C(z)R(z)=D(z)G(z)E(z)R(z)\frac{C(z)}{R(z)}=D(z)G(z)\frac{E(z)}{R(z)},即Φe(z)=D(z)G(z)Φe(z)\Phi_e(z)=D(z)G(z)\Phi_e(z)在單位負反饋系統中Φe(z)=1Φ(z)\Phi_e(z)=1-\Phi(z),因此D(z)=Φ(z)G(z)(1Φ(z))D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}
4. 根據D(z)生成控制算法(或者脈衝傳遞函數)求出輸出序列,畫出系統的響應曲線。

2.1數字控制器D(z)的構造

我們已經知道D(z)=Φ(z)G(z)(1Φ(z))D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))},因此欲求出D(z)只需知道Φ(z)\Phi(z)Φe(z)\Phi_e(z)即可。
Φ(z)=(a0+a1z1+a2z2+...+anzn)(1z1z1)(1z2z1)...(1zkz1)zm\Phi(z)=(a_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n})(1-z_1z^{-1})(1-z_2z^{-1})...(1-z_kz^{-1})z^{-m}
其中z1,z2,...,zkz_1,z_2,...,z_kΦ(z)\Phi(z)保留的的廣義被控對象G(z)不穩定零點,zmz^{-m}是閉環傳遞函數Φ(z)\Phi(z)保留的,在G(z)裏面出現的純滯後環節zmz^{-m},而輸入形式決定了前面多項式a0+a1z1+a2z2+...+anzna_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}的階數n,階數n和Φe(z)=(1z1)pF(z)\Phi_e(z)={(1-z^{-1})}^pF(z)中的p是一致的,即n=p,係數a0a1...ana_0、a_1、...、a_n依賴於條件Φe(z)=(1z1)pF(z)\Phi_e(z)={(1-z^{-1})}^pF(z)而定,Φe(z)\Phi_e(z)中含有p重零點z=1,因此它的0階導到p-1階導在z=1處的值都應該是0,即

{Φe(z)z=1=0dΦe(z)dzz=1=0d2Φe(z)dz2z=1=0...dnΦe(z)dznz=1=0\begin{cases} \left. \Phi_e(z) \right| _{z=1}=0 \\ \left. \frac{{\rm d}\Phi_e(z)}{{\rm d}z} \right| _{z=1}=0 \\ \left. \frac{{\rm d^2}\Phi_e(z)}{{\rm d}z^2} \right| _{z=1}=0 \\ ...\\ \left. \frac{{\rm d^n}\Phi_e(z)}{{\rm d}z^n} \right| _{z=1}=0 \end{cases}
根據上面的方程組可以解出Φe(z)\Phi_e(z)中的未知參數a0a1...ana_0、a_1、...、a_n,因此Φe(z)\Phi_e(z)已經確定,D(z)即可求得。

3.簡單控制對象的最小拍控制器設計

3.1階躍輸入

假設被控對象的傳遞函數爲G(s)=9.40.017s+1G(s)=\frac{9.4}{0.017s+1}求階躍輸入下的最小拍控制器D(z)的表達式。在Simulink的仿真中,我們設定了Z變換的採樣頻率是0.005s,(其他地方默認爲-1,即服從系統的採樣頻率)
Simulink仿真圖示意
先求取廣義被控對象的傳遞函數
G(z)=Z[1eTss9.40.017s+1]=(1z1)Z[(9.4s(0.017s+1))]=2.394z110.745z1G(z) =Z[\frac{1-e^{-Ts}}{s}\frac{9.4}{0.017s+1}] =(1-z^{-1})Z[(\frac{9.4}{s(0.017s+1)})] =\frac{2.394z^{-1}}{1-0.745z^{-1}}
沒有不穩定零極點和純滯後環節,因此選取Φe(z)=(1z1),Φ(z)=z1\Phi_e(z)=(1-z^{-1}),\Phi(z)=z^{-1}
此時D(z)=Φ(z)G(z)(1Φ(z))=0.4174z0.7452z1D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}=0.4174\frac{z-0.7452}{z-1}
我們搭建好Simulink仿真電路如下:
Simulink的仿真圖
按照我們的理論,系統的應該在控制算法作用的第一拍(0.005s處)時達到0穩態誤差,仿真曲線如下圖(給定值爲1500):
最小拍的階躍響應
可以看到驗證結果與我們理論推導相符。注意我們這裏示波器取的採樣週期爲-1(inherited),說明是Matlab內置的採樣時間,會比我們定的Ts=1s要短的多,非常接近於連續系統的仿真結果。可以看出響應曲線在上升段有很微小的紋波抖動,在進入穩態值後,紋波消失。產生紋波的原因在於Y(z)Y(z)

3.2速度輸入

假設被控對象的傳遞函數爲G(s)=2s(s+1)G(s)=\frac{2}{s(s+1)},求系統在採樣時間1s,輸入信號爲單位速度輸入的條件下的最小拍控制器D(z)。系統的結構框圖如下圖所示:
系統結構框圖
下面我們藉助Matlab的命令輕鬆地解決這個問題。首先按照第二部分最小拍控制系統的設計原則的步驟,我們應該求出帶零階保持器的廣義被控對象的Z域脈衝傳遞函數G(z)=Z[1eTssG(s)]G(z)=Z[\frac{1-e^{-Ts}{s}\cdot G(s)}],在Matlab工作區輸入代碼並獲得輸出的脈衝傳遞函數:

>> syms s;%定義符號變量s
>> s=tf('s');%s定義爲tf(transfer function傳遞函數)類型的結構體
>> Gs=2/(s*(s+1));
>> Ts=1;
>> Gz=c2d(Gs,Ts,'zoh')%帶零階保持器(ZOH)的離散化,採樣時間爲1s

Gz =
 
    0.7358 z + 0.5285
  ----------------------
  z^2 - 1.368 z + 0.3679
 
Sample time: 1 seconds
Discrete-time transfer function.

>> zpk(Gz)%展示爲零極點模式

ans =
 
  0.73576 (z+0.7183)
  ------------------
   (z-1) (z-0.3679)
 
Sample time: 1 seconds
Discrete-time zero/pole/gain model.

可以看出脈衝傳遞函數G(z)中含有1個不穩定極點z=1,但是考慮到此時的Φe(z)=(1z1)2F(z)\Phi_e(z)={(1-z^{-1})}^2F(z),具有z=1這個零點,說明D(z)的表達式D(z)=Φ(z)G(z)Φe(z)D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)}中可以將極點z=1約去,不必再增加額外的(1z1)(1-z^{-1})因式,因此可以取F(z)=1即Φe(z)=(1z1)2\Phi_e(z)={(1-z^{-1})}^2,此時Φ(z)=1Φe(z)=1(1z1)2=2z1z2\Phi(z)=1-\Phi_e(z)=1-{(1-z^{-1})}^2=2z^{-1}-z^{-2},根據D(z)=Φ(z)G(z)Φe(z)D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)}可以求出控制器表達式D(z)。

>> syms z;
>> z=tf('z');
>> Phiez=(1-z^(-1))^2;
>> Phiz=1-Phiez;%得到Φ(z)
>> Dz=Phiz/(Gz*Phiez);%得到數字控制器的脈衝傳遞函數
>> minreal(zpk(Dz))%得到最簡零極點式

ans =
 
  2.7183 (z-0.5) (z-0.3679)
  -------------------------
      (z+0.7183) (z-1)
 
Sample time: 1 seconds
Discrete-time zero/pole/gain model.

我們按照此要去搭建好Simulink仿真圖如下
Simulink仿真圖
D(z)的Sample time設置爲1(因爲我們的採樣時間是Ts=1s),仿真時間設爲10s(差不多可以清楚地看見過渡過程)
速度輸入的仿真
黃色爲指令信號(單位速度輸入),藍色爲響應曲線。我們將示波器的圖形(print to figure)打印到圖形。利用數據遊標工具找到t=1和t=2的點。如果我們的理論正確,那麼e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0;

t 數據遊標(採樣時刻的值)
1 在這裏插入圖片描述
2 在這裏插入圖片描述
3 在這裏插入圖片描述
4 在這裏插入圖片描述

由於r(k)=k,y(k)的採樣值依次爲0,2,3.002,3.997,e(k)=r(k)-y(k)基本滿足e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0。
從我們仿真的結果看,採樣點處的值只需要兩拍就達到了穩態,但是採樣點之間有紋波(這是因爲E(z)=a1z1+a2z2+...+anznE(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n}並不是有限項,U(z)也並不是有限項,即u(k)最終並沒有達到恆定,誤差也並沒有最終嚴格歸0),這種控制屬於有紋波的最小拍控制。還可以通過增加積分可犧牲控制拍數的手段,達到無紋波的最小拍控制,這是連續系統所做不到的。
希望本文對您有幫助,感謝大家對本站點的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章