[matlab練習] 設計滿足規格的相位領先(Phase-Lead)控制器
設計一相位領先控制器,使閉迴路系統滿足以下條件:
Kv >= 12
PM >= 40度
解題步驟
Step1. 求 K 值
K = 12
Step2. 求系統相位邊限(PM) 值 (phi_l)
將K = 12代入未補償系統,以matlab求之,程式如下:
clc
clear all
k = 12;
num = k;
den = [1 1 0];
G = tf(num, den)
margin(G)
從圖得知,Pm = 16.4 deg (ph_l = 16.4),
Wn = 3.39
Step3.求最大相角 phi_m
phi_m = phi_s (條件相位邊限) - phi_l(未補償系統之相位邊限) + e (安全邊限,值介於5~15)
phi_m = 40- 16.4 + 6 = 29.6 (deg)
phi_m = 29.6 (deg)
Step4.求控制器a參數
公式如下:
a = (1+sin(phi_m/180*pi)) / (1-sin(phi_m/180*pi));
求得 a = 2.9521
Step5.在 -10 log a (dB) 求 Wm (未補償系統增益所對應之頻率)
以 matlab 求之,程式如下:
-10*log10(a)
得 Wm = 4.48
Step6. 求 T
公式如下:
以 matlab 求之,程式如下:
T = 1/(sqrt(a)*wm)
得 T = 0.1299
Step7.檢視控制器是否滿足條件需求
檢查補償後系統是否符合性能規格,若相位邊限仍然太低,則應提高 e 值(安全邊限),再重新設計。
程式如下:
D = tf([a*T 1], [T 1]);
G = tf(num, den);
figure(1)
margin(D*G)
Gc = D*G/(1+D*G) % close-loop system
figure(2)
step(Gc) %畫系統步階響應圖
shg
從圖得之,Pm = 42.4 (deg),滿足條件 PM >= 40度。
---
完整程式碼如下:
clc
clear all
k = 12;
num = k;
den = [1 1 0];
phi_s = 40;
phi_l = 16.4;
e = 6;
phi_m = phi_s - phi_l + e; %phi_m=29.6 degree
a = (1+sin(phi_m/180*pi)) / (1-sin(phi_m/180*pi));
-10*log10(a)
wm=4.48;
T = 1/(sqrt(a)*wm)
D = tf([a*T 1], [T 1]);
G = tf(num, den);
figure(1)
margin(D*G)
Gc = D*G/(1+D*G) % close-loop system
figure(2)
step(Gc)
shg
相位領前控制器的目的在於增加開迴路系統在增益交越點附近的相位,並在新的增益交越點配置最大的領前相位。
---
#相位領先 #phase_lead
0 留言