[matlab練習] 類比控制器離散化設計(使用Forward方法)
來源:曾傳蘆老師<控制器設計與應用>
1.matlab解法
1.1 解題步驟
Step1.設定取樣時間
上升時間/10 or 上升時間/6
Step2.受控體離散化
一定會使用ZOH(Zero-Order Hold)。
先求受控體轉移函數,使用tf()指令。
得到連續系統的受控體,使用 c2d()指令,將系統離散化。c2d()指令的參數順序:原來系統、取樣時間、離散化的方法。
獲得離散的轉移函數後,使用tfdata()指令之功能為將轉移函數之分子和分母抽出來。"v"參數表示以向量形式呈現。
Step3.控制器離散化
可以使用近似方法,此例採用Forward方法,選擇 Z-1 / T 。
Step4.求出連續系統與離散系統的閉迴路轉移函數,並繪圖
閉迴路轉移函數 = D(s)G(s) / 1 + D(s)G(s)
1.2 m檔案
clear
%Step1.設定取樣時間
ts=0.2; %取樣時間。求法為上升時間/10 or /6
%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沒有forward指令
sys_contr=tf([10, 1],[1 1]);
num_d=[10/ts 1-10/ts];
den_d=[1/ts 1-1/ts];
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', 'Forward')
step(SYS_c,SYS_d)
---
#forward #類比控制器 #離散化 #近似方法
0 留言