最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ゲインと位相余裕の評価

この例では、制御システムの閉ループの応答特性の安定余裕の効果を調べる方法を示します。

フィードバック ループの安定性

通常、安定性は、すべての内部信号が制限内に収まっていることを意味します。これは、制御できなくなったり、機器が損傷を受けることを避けるための、制御システムに対する基準の要件です。線形フィードバック システムでは、安定性は閉ループ伝達関数の極を見ることで評価できます。たとえば、SISO フィードバック ループを見てみます。

図 1: SISO フィードバック ループ

単位ループ ゲイン k に対しては、以下を使用して閉ループ伝達関数 T を計算できます。

G = tf([.5 1.3],[1 1.2  1.6 0]);
T = feedback(G,1);

T の極を求めるには、次のように入力します。

pole(T)
ans =

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

k=1 のフィードバック ループは、すべての極が負の実数部をもつため安定しています。

安定性のレベル

閉ループの極を確認すると、安定性を 2 進数で評価できます。業務上は、安定性が堅牢 (または脆弱) であるかがわかると非常に役に立ちます。堅牢性を示すものとして、安定性が失われる前の、ループ ゲインの変化の度合いがあります。根軌跡プロットを使用すると、ループが安定している k 値の範囲を推定できます。

rlocus(G)

軌跡が y 軸と交差する点をクリックすると、このフィードバック ループが以下に対して安定していることが示されます。

この範囲は、k=1 の場合、安定性が失われる前に、ループ ゲインを 270% 増加できることを示します。

ゲイン余裕と位相余裕

ループ ゲインの変化は堅牢な安定性を示す 1 つの要素にすぎません。一般的に、不完全なプラントのモデル化は、ゲインと位相の両方が正確にわかっていないことを意味します。モデル化誤差はゲインの交差周波数 (開ループ ゲインが 0dB の周波数) 付近で最も悪影響を及ぼすため、この周波数でどの程度の位相の変化を許容できるかも問題になります。

位相余裕は、安定性を失うにはゲインの交差周波数でどの程度の位相の変化が必要であるかを測定します。同様に、ゲイン余裕は、安定性を失うにはゲインの交差周波数でどの程度の相対ゲインの変化が必要であるかを測定します。これらの 2 つの数値は共に、閉ループの安定性に対して推定される "安全性の余裕" を示します。安定余裕が小さいほど、安定性は低下します。

ゲイン余裕と位相余裕は、以下のようにボード線図に表示できます。まず、プロットを作成します。

bode(G), grid

次に、プロットを右クリックし、[特性]、[最小安定余裕] サブメニューを選択します。最後に、青のドット マーカーをクリックします。結果のプロットは以下のようになります。

これは、約 9 dB のゲイン余裕と約 45°の位相余裕を示しています。対応する閉ループ ステップ応答は、約 20% のオーバーシュートとある程度の振動を示しています。

step(T), title('Closed-loop response for k=1')

ゲインを k=2 に増やすと、安定余裕は以下まで削減されます。

[Gm,Pm] = margin(2*G);
GmdB = 20*log10(Gm)   % gain margin in dB
Pm  % phase margin in degrees
GmdB =

    2.7471


Pm =

    8.6328

閉ループ応答には大きく減衰された振動が存在します。これは不安定になりつつあることを示す兆候です。

step(feedback(2*G,1)), title('Closed-loop response for k=2')

複数のゲインまたは位相クロッシングをもつシステム

システムには、複数のゲイン交差周波数または位相交差周波数が存在する場合があります。これにより、複数のゲイン余裕値または位相余裕値が生じます。たとえば、次のフィードバック ループを考えます。

図 2: 複数の位相交差を含むフィードバック ループ

k=1 に対する閉ループ応答は安定しています。

G = tf(20,[1 7]) * tf([1 3.2 7.2],[1 -1.2 0.8]) * tf([1 -8 400],[1 33 700]);
T = feedback(G,1);
step(T), title('Closed-loop response for k=1')

このループの安定性を評価するには、そのボード応答をプロットします。

bode(G), grid

次に、プロットを右クリックし、[特性]、[すべての安定余裕] サブメニューを選択して、すべての交差周波数および関連する安定余裕を表示します。結果のプロットは、以下のようになります。

2 つの 180 度の位相クロッシングと、それに対応する -9.35dB および +10.6dB のゲイン余裕が存在することに注目してください。負のゲイン余裕はゲインの減少により安定性が失われていることを示し、正のゲイン余裕はゲインの増加により安定性が失われていることを示します。これは、k=1 に関してプラス/マイナス 6dB のゲインの変化に対して閉ループ ステップ応答をプロットすることで確認できます。

k1 = 2;     T1 = feedback(G*k1,1);
k2 = 1/2;   T2 = feedback(G*k2,1);
step(T,'b',T1,'r',T2,'g',12),
legend('k = 1','k = 2','k = 0.5')

プロットは、小さなゲイン値と大きなゲイン値の両方に対して振動が増加していることを示しています。

コマンド allmargin を使用すると、すべての安定余裕を計算できます。ゲイン余裕は dB ではなくゲイン比で表されることに注意してください。値を dB に変換するには、mag2db を使用します。

m = allmargin(G)

GainMargins_dB = mag2db(m.GainMargin)
m = 

  struct with fields:

     GainMargin: [0.3408 3.3920]
    GMFrequency: [1.9421 16.4807]
    PhaseMargin: 68.1178
    PMFrequency: 7.0762
    DelayMargin: 0.1680
    DMFrequency: 7.0762
         Stable: 1


GainMargins_dB =

   -9.3510   10.6091