フィードバック制御 Homework #10 解説

フィードバック制御 Homework #10
締切: 2015年1月7日(水)20:00
bababababababababababababababababababababab
Fig. 1 のフィードバック制御系において
P (s) =
5
s(s + 2)2
(1)
のとき,位相余裕 PM が同程度になるように,P 補償 KP (s),PI 補償 KP I (s),PID 補償を
KP ID (s) をそれぞれ
KP (s) = 0.6,
KP I (s) = 0.5
17s + 1
,
17s
KP ID (s) = 1.25
17s + 1 1.3s + 1
17s 0.1s + 1
(2)
このとき以下の問に答えよ.
HW 10-1 MATLAB Program 1 を用いて,制御対象 P (s) のボード線図・ゲイン余裕 GM・
位相余裕 PM・位相交差周波数 ωpc ,ゲイン交差周波数 ωgc を示せ.(単位を明記すること)
HW 10-2 MATLAB Program 1 を参考にして,(2) 式に示した各補償を用いたときの開ルー
プ伝達関数のボード線図・ゲイン余裕 GM・位相余裕 PM・位相交差周波数 ωpc ,ゲイン交差周
波数 ωgc を示せ.(単位を明記すること)
HW 10-3 Fig. 1 のフィードバック制御系に,(2) 式に示した各補償を用いたときの感度関数
S(s),相補感度関数 T (s) を示せ.また,それぞれのピークゲインとバンド幅も示せ.(単位を
明記すること)
HW 10-4 (2) 式に示した各補償を施した後のフィードバック系に対して,入力 r から出力 y
までのステップ応答を示せ.
MATLAB Program 1
Fig. 1: フィードバック制御系
001:
002:
003:
004:
005:
006:
007:
008:
P = tf([5], [1 4 4 0]);
bode(P)
grid on;
[Gm, Pm, wpc, wgc] = margin(P);
Gm = mag2db(Gm)
Pm
wpc
wgc
1
bababababababababababababababababababababab
HW 10-5 (Bonus 問題) (2) 式に示した各補償を施した後のフィードバック系に対して,入力
d から出力 y までのステップ応答を示せ.
HW 10-6 (Bonus 問題) 今までの問題から分かる P,PI,PID 制御それぞれの特性を述べよ.
2
フィードバック制御 Homework #10 解答
締切: 2015年1月7日(水)20:00
HW 10-1 プラントのボード線図を Fig. 2 に示す.ゲイン余裕は 10.1dB,位相余裕は 36.87 °,位
相交差周波数は 2.0rad/s,ゲイン交差周波数は 1.0rad/s である.
HW 10-2 各補償を用いた後の開ループ伝達関数のボード線図を Fig. 3 に示す.ただし,青線が P
補償を,赤線が PI 補償を,黄色線が PID 補償を施したものである.また,各開ループ伝達関数のゲイ
ン余裕,位相余裕,位相交差周波数,ゲイン交差周波数は次表の通りである.
Table 1: 各開ループ伝達関数のゲイン余裕 [dB],位相余裕 [ °],位相交差周波数 [rad/s],ゲイン交差周
波数 [rad/s].
ゲイン余裕 [dB] 位相余裕 [ °] 位相交差周波数 [rad/s] ゲイン交差周波数 [rad/s]
P 補償
14.54
52.77
2.0
0.67
PI 補償
15.60
51.88
1.94
0.58
PID 補償
14.43
53.33
5.78
2.11
HW 10-3 Fig. 1 のフィードバック制御系に,(2) 式に示した各補償を用いたときの感度関数 S(s) を
Fig. 4 に,相補感度関数 T (s) を Fig. 5 に示す.ただし,青線が P 補償を,赤線が PI 補償を,黄線が
PID 補償を示している.また,それぞれのピークゲインとバンド幅は次表の通りである.
Table 2: 感度関数 S(s) と相補感度関数 T (s) のピークゲイン [dB] とバンド幅 [rad/s].
感度関数 S(s)
相補感度関数 T (s)
ピークゲイン [dB] バンド幅 [rad/s] ピークゲイン [dB] バンド幅 [rad/s]
P 補償
4.09
0.465
1.02
1.22
PI 補償
3.82
0.378
1.25
1.06
PID 補償
4.42
1.51
1.09
3.70
HW 10-4 入力 r から出力 y までのステップ応答を Fig. 6 に示す.ただし,青線が P 補償を,赤線
が PI 補償を,緑線が PID 補償を示している.
HW 10-5 入力 d から出力 y までのステップ応答を Fig. 7 に示す.ただし,青線が P 補償を,赤線
が PI 補償を,緑線が PID 補償を示している.
50
50
0
0
-50
-50
-100
-100
-150
-90
-150
-90
-135
-135
-180
-180
-225
-225
-270
10-2
10-1
100
101
-270
10-1
102
100
101
Fig. 3: 開ループ伝達関数のボード線図
Fig. 2: プラントのボード線図
3
102
5
20
0
0
-20
-5
-40
-10
-60
-15
-80
-20
-100
-25
135
-120
0
-45
90
-90
45
-135
-180
0
-225
-45
10-1
0
1
10
2
10
10
-270
10-1
Fig. 4: 感度関数 S(s)
101
102
Fig. 5: 相補感度関数 T (s)
1.4
2.5
1.2
2
1
0.8
1.5
0.6
1
0.4
0.5
0.2
0
100
0
10
20
30
0
40
Fig. 6: r から y へのステップ応答
0
10
20
30
40
Fig. 7: d から y へのステップ応答
HW 10-6 例) Table 1 から分かるように,P 補償を施すことによってゲイン交差周波数を小さくす
るのと引き換えに開ループ伝達関数のゲイン余裕や位相余裕を向上させていることが分かる.また,制
御対象に積分器があるため r から y の応答は定常偏差も 0 になっていることが Fig. 6 から確認できる.
しかし,d から y の応答が 0 に収束しておらず,外乱を抑制することができていないことが Fig. 7 から
分かる.一方,PI 補償を施すと d から y の応答も 0 に収束するが,開ループ伝達関数のゲイン交差周波
数が若干小さくなり,速応性が悪くなっていることが確認できる.最後に,PID 補償を施すとゲイン交
差周波数が大きくなり,速応性が良くなっていることが確認できる.
4
フィードバック制御 Homework #10 解説
締切: 2015年1月7日(水)20:00
MATLAB Program
clear all ; close all ; clc ;
% Problem2
num = 5;
den = [1 4 4 0];
P = tf(num,den);
K_P = 0.6;
L_P = K_P * P;
K_PI = tf(0.5*[17 1],[17 0]);
L_PI = K_PI * P;
K_PD = tf(2.5*[1.3 1],[0.1 1]);
K_PID = K_PI * K_PD;
L_PID = K_PID * P;
figure(2)
bode(L_P,w)
grid on; hold on;
bode(L_PI,w)
bode(L_PID,w)
[Gm_P, Pm_P, wpc_P, wgc_P] = margin(L_P);
Gm_P = mag2db(Gm_P)
Pm_P
wpc_P
wgc_P
[Gm_PI, Pm_PI, wpc_PI, wgc_PI] = margin(L_PI);
Gm_PI = mag2db(Gm_PI)
Pm_PI
wpc_PI
wgc_PI
[Gm_PID, Pm_PID, wpc_PID, wgc_PID] = margin(L_PID);
Gm_PID = mag2db(Gm_PID)
Pm_PID
wpc_PID
wgc_PID
5
% Problem3
T_P = feedback(L_P,1);
T_PI = feedback(L_PI,1);
T_PID = feedback(L_PID,1);
S_P = feedback(1,L_P);
S_PI = feedback(1,L_PI);
S_PID = feedback(1,L_PID);
figure(3)
bode(T_P,w)
grid on; hold on;
bode(T_PI,w)
bode(T_PID,w)
% 真のピークゲインの 0.001%以内の値を返す
Peak_TP = getPeakGain(T_P,0.001);
Peak_TPI = getPeakGain(T_PI,0.001);
Peak_TPID = getPeakGain(T_PID,0.001);
% 次のような方法もある.
% [mag_P,Phs_P] = bode(T_P);
% Peak_TP = max(mag_P);
Peak_TP = mag2db(Peak_TP)
Peak_TPI = mag2db(Peak_TPI)
Peak_TPID = mag2db(Peak_TPID)
% この"bandwidth"という関数は感度関数に対しては使えないので注意
f_TP = bandwidth(T_P)
f_TPI = bandwidth(T_PI)
f_TPID = bandwidth(T_PID)
figure(4)
bode(S_P,w)
grid on; hold on;
bode(S_PI,w)
bode(S_PID,w)
% 真のピークゲインの 0.001%以内の値を返す
Peak_SP = getPeakGain(S_P,0.001);
Peak_SPI = getPeakGain(S_PI,0.001);
Peak_SPID = getPeakGain(S_PID,0.001);
Peak_SP = mag2db(Peak_SP)
6
Peak_SPI = mag2db(Peak_SPI)
Peak_SPID = mag2db(Peak_SPID)
% 感度関数のバンド幅はグラフから確認すること
% Problem4
time = 0:0.1:40;
r = 1*ones(length(time),1);
y_P = step(T_P,time);
y_PI = step(T_PI,time);
y_PID = step(T_PID,time);
figure(5)
plot(time,r,’k-’,’LineWidth’,3)
hold on; grid on;
plot(time,y_P,’b-’,’LineWidth’,3)
plot(time,y_PI,’r-’,’LineWidth’,3)
plot(time,y_PID,’g-’,’LineWidth’,3)
set( gca, ’fontname’, ’Arial’ ) ;
set(gca,’FontSize’,16);
% Problem5
GP_yd = feedback(P,K_P);
GPI_yd = feedback(P,K_PI);
GPID_yd = feedback(P,K_PID);
y_P = step(GP_yd,time);
y_PI = step(GPI_yd,time);
y_PID = step(GPID_yd,time);
figure(6)
% plot(time,r,’k-’,’LineWidth’,3)
hold on; grid on;
plot(time,y_P,’b-’,’LineWidth’,3)
plot(time,y_PI,’r-’,’LineWidth’,3)
plot(time,y_PID,’g-’,’LineWidth’,3)
set( gca, ’fontname’, ’Arial’ ) ;
set(gca,’FontSize’,16);
7