來源:曾傳蘆老師<控制器設計與應用>


1.matlab解法

1.1 解題步驟

Step1.設定取樣時間

上升時間/10  or  上升時間/6  


Step2.受控體離散化

一定會使用ZOH(Zero-Order Hold)。

先求受控體轉移函數,使用tf()指令。

得到連續系統的受控體,使用 c2d()指令,將系統離散化。c2d()指令的參數順序:原來系統、取樣時間、離散化的方法。

獲得離散的轉移函數後,使用tfdata()指令之功能為將轉移函數之分子和分母抽出來。"v"參數表示以向量形式呈現。


Step3.控制器離散化

可以使用近似方法,此例採用Backward方法,選擇 z-1 / Tz 。


和受控體離散化使用c2d()指令不同的地方在於,因為matlab沒有Backward的指令,因此控制器要離散化就必須使用近似方法來推導,得出分子分母的轉移函數。也就是將z-1 / Tz,代入 D(S),最後求得 Z(T+10)-10 / Z(T+1)-1 。


Step4.求出連續系統與離散系統的閉迴路轉移函數,並繪圖

閉迴路轉移函數 = D(s)G(s) / 1 + D(s)G(s) 


1.2 m檔案


clear


%Step1.設定取樣時間

ts=0.2;


%Step2.受控體離散化

%只能用zero-hold

sys_ant=tf(0.1,[1,0.1,0]);%求受控體轉移函數

dsys_ant=c2d(sys_ant,ts,'zoh');%離散化,參數順序:原來系統、取樣時間、離散化的方法。

[num_ant,den_ant]=tfdata(dsys_ant,'v');%把離散化轉移函數的分子分母抽出來


%Step3.控制器離散化

%使用近似方法推導,因為matlab沒有Backward指令

sys_contr=tf([10, 1],[1 1]);

num_d=[10+ts -10]; %Z(T+10)-10

den_d=[1+ts  -1]; %Z(T+1)-1

dsys_contr=tf(num_d,den_d,ts);


%Step4.求出連續系統與離散系統的閉迴路轉移函數,並繪圖

SYS_c=sys_contr*sys_ant/(1+sys_contr*sys_ant);%連續系統的閉迴路轉移函數

SYS_d=dsys_contr*dsys_ant/(1+dsys_contr*dsys_ant);%離散系統的閉迴路轉移函數

figure('name', 'Backward')

step(SYS_c,SYS_d)


---

#backward #類比控制器 #離散化 #近似方法

0 留言