はい、承知いたしました。MATLABのmargin
コマンドについて、ゲイン余裕・位相余裕の基礎を含め、分かりやすく詳細に解説する約5000語の記事を作成します。
【図解】MATLAB marginを分かりやすく解説!ゲイン余裕・位相余裕の基礎
はじめに:制御システムの安定性と周波数応答解析の重要性
制御システムは、私たちの身の回りにある様々な機器やプロセスで活躍しています。エアコンの温度調整、自動車のクルーズコントロール、産業用ロボットの精密な動きなど、制御システムは目標値を正確に、そして安定して実現するために不可欠です。
しかし、制御システムが不安定になるとどうなるでしょうか?目標値に収束せず、振動が止まらなかったり、時には発散してシステムが破壊に至ることもあります。したがって、設計した制御システムが「安定であること」は最も基本的な、かつ最も重要な要件となります。
システムの安定性を評価する方法はいくつかありますが、大きく分けて時間応答解析と周波数応答解析があります。時間応答解析では、ステップ応答やインパルス応答などを調べ、出力が時間と共に目標値に収束するか、発散しないかなどを確認します。例えば、システムに急な入力を与えたときに、出力が激しく振動したり、無限に増大したりしないかを調べます。
一方、周波数応答解析は、システムに様々な周波数の正弦波入力を与えたときの、出力のゲイン(振幅比)と位相遅れを調べる方法です。この周波数応答をグラフ化したものが、ボード線図(Bode Diagram)やナイキスト線図(Nyquist Plot)です。周波数応答解析の大きな利点は、システムの「ロバスト性(robustness)」、つまり外乱やモデル化誤差、システム内部のパラメータ変動などに対する強さを評価しやすい点にあります。また、周波数応答解析は、制御器設計において、特定の周波数帯域でのシステムの挙動を改善するための明確な指針を与えてくれる強力なツールでもあります。
周波数応答解析を用いた安定性評価において、特に重要な指標となるのが「ゲイン余裕 (Gain Margin)」と「位相余裕 (Phase Margin)」です。これらの指標は、システムが不安定になる境界からどれだけ余裕があるかを示し、システムの安定性の度合いやロバスト性を定量的に評価するために広く用いられています。
そして、これらの重要な指標をMATLABという強力なツールを使って簡単に計算し、視覚的に確認できるのが、今回詳しく解説するmargin
コマンドです。
この記事では、まず制御システムの安定性、周波数応答の基礎、そしてゲイン余裕と位相余裕の定義と物理的な意味を、ボード線図とナイキスト線図を用いて分かりやすく解説します。その上で、MATLABのmargin
コマンドの具体的な使い方、その出力の解釈、そしていくつかの実践的な例を通して、どのようにシステムの安定性を評価し、制御システム設計に役立てるのかを詳細に説明していきます。
この記事を読み終える頃には、あなたもゲイン余裕と位相余裕の意味を深く理解し、MATLABを使って自在にシステムの安定性を評価できるようになっているはずです。
制御システムの安定性とは?なぜ周波数応答で評価するのか?
安定性の基本的な考え方
制御システムにおける「安定性」とは、一般的に「システムに有界な入力(例えば、大きさに限りのある入力)を与えたときに、出力も有界になる(大きさが無限に増大しない)」という性質を指します。これをBIBO安定(Bounded-Input Bounded-Output Stability)と呼びます。
直感的には、システムが安定であれば、何らかの外乱や初期条件の変動があっても、出力は最終的に定常状態(目標値や一定値)に収束し、無限に振動したり発散したりすることはありません。不安定なシステムは、一度バランスを崩すと制御不能になり、望ましくない結果を引き起こします。
最も基本的な安定性の判別方法として、システムの特性方程式(閉ループ伝達関数の分母多項式=0)の根(極)の位置を調べる方法があります。線形時不変システムの場合、すべての極が複素平面の左半平面(実部が負の領域)にあればシステムは安定です。一つでも右半平面に極があったり、虚軸上に重複する極があったりすると不安定になります。ラウス・フルビッツの安定判別法などは、特性方程式の係数から極の位置を直接計算せずに安定性を判別する方法です。
時間応答解析の限界
ステップ応答やインパルス応答といった時間応答解析は、システムの過渡特性や整定時間、オーバーシュートなどを視覚的に把握するのに非常に役立ちます。しかし、これらの時間応答からシステムの「ロバスト性」を定量的に評価するのは難しい場合があります。例えば、ステップ応答が安定に見えても、システムのパラメータが少し変動しただけで不安定になってしまうかもしれません。また、外乱が加わったときにシステムがどのように応答するかの予測も、時間応答だけでは難しいことがあります。
周波数応答解析による安定性評価の利点
ここで周波数応答解析が重要になります。周波数応答は、システムが様々な周波数の入力に対してどれだけ敏感に応答するかを示します。特に、システムの安定性との関連が深いのは、開ループ伝達関数 $L(s)$ の周波数応答 $L(j\omega)$ です。
閉ループ制御システムの安定性は、ナイキストの安定判別法によって、開ループ伝達関数 $L(j\omega)$ の周波数応答が複素平面上の点 $(-1, 0)$ に対してどのように振る舞うか(ナイキスト線図が $(-1, 0)$ 点を囲むかどうか)で判別できます。
ナイキストの安定判別法は、閉ループ伝達関数 $T(s) = \frac{G(s)C(s)}{1 + G(s)C(s)}$ の安定性を、開ループ伝達関数 $L(s) = G(s)C(s)$ の周波数応答 $L(j\omega)$ を使って評価する方法です。ここで、$G(s)$ は制御対象、$C(s)$ は制御器の伝達関数とします。閉ループ系の極は、$1 + L(s) = 0$ の根、つまり $L(s) = -1$ の根です。ナイキスト線図は $L(j\omega)$ の軌跡であり、この軌跡が複素平面上の $(-1, 0)$ 点にどれだけ近づくか、あるいは $(-1, 0)$ 点を囲むかどうかが、閉ループ系の安定性に関わるというわけです。
ゲイン余裕と位相余裕は、このナイキスト線図上の $(-1, 0)$ 点との距離や角度として定義される指標であり、ナイキストの安定判別法から自然に導かれる安定性の度合いを示す尺度です。これらの指標を見ることで、システムが不安定になる境界(ナイキスト線図が $(-1, 0)$ 点を通る状態)からどれだけ離れているか、つまりどれだけ「余裕」があるかを定量的に評価できるのです。
図1:フィードバック制御システムのブロック線図
(目標値 R(s) -> 制御器 C(s) -> 操作量 U(s) -> 制御対象 G(s) -> 出力 Y(s))
(出力 Y(s) -> フィードバック -> (負帰還) -> 制御器 C(s) への入力 E(s))
(開ループ伝達関数 L(s) = C(s)G(s))
(閉ループ伝達関数 T(s) = Y(s)/R(s) = C(s)G(s) / (1 + C(s)G(s)))
このように、周波数応答解析、特に開ループ伝達関数の周波数応答を調べることは、閉ループシステムの安定性を評価し、そのロバスト性を定量的に把握するための強力な手法です。そして、ゲイン余裕と位相余裕は、この周波数応答解析における安定性・ロバスト性の主要な指標となります。
周波数応答の基礎:ボード線図とは?
ゲイン余裕と位相余裕を理解するためには、まず周波数応答とそれを視覚化したボード線図の読み方を知る必要があります。
周波数応答の定義
線形時不変システムに角周波数 $\omega$ の正弦波入力 $u(t) = A \sin(\omega t)$ を与えると、十分時間が経過した後の出力 $y(t)$ も同じ周波数 $\omega$ の正弦波になります。ただし、出力の振幅は入力の振幅と比べて変化し、位相もずれます。
出力は $y(t) = B \sin(\omega t + \phi)$ の形で表されます。ここで、
- ゲイン (Gain):出力の振幅 $B$ と入力の振幅 $A$ の比 $|H(j\omega)| = B/A$
- 位相 (Phase):出力の位相 $\phi$ と入力の位相(ここでは0)の差 $\angle H(j\omega) = \phi$
これらゲインと位相は、システムの伝達関数 $H(s)$ の $s$ を $j\omega$ に置き換えた複素数 $H(j\omega)$ の絶対値と偏角に等しくなります。この $H(j\omega)$ をシステムの周波数伝達関数と呼びます。周波数伝達関数は、入力信号の周波数 $\omega$ に応じて変化するゲインと位相の情報を含んでおり、これがシステムの周波数応答を表します。
ボード線図 (Bode Diagram)
ボード線図は、システムの周波数応答をグラフ化したもので、以下の2つのグラフから構成されます。
- ゲイン線図 (Magnitude Plot):横軸を周波数 $\omega$ (対数スケール)、縦軸をゲイン $|H(j\omega)|$ をデシベル(dB)で表した値 $20 \log_{10} |H(j\omega)|$ としたグラフ。ゲインが1の場合は 0 dB となり、ゲインが1より大きい場合は正の値、1より小さい場合は負の値となります。
- 位相線図 (Phase Plot):横軸を周波数 $\omega$ (対数スケール)、縦軸を位相 $\angle H(j\omega)$ を度(degrees)またはラジアン(radians)で表したグラフ。通常は度で表示されます。
図2:一般的なボード線図の例
(上段:ゲイン線図、下段:位相線図)
(横軸:周波数 [rad/s] (対数スケール))
(ゲイン線図 縦軸:ゲイン [dB])
(位相線図 縦軸:位相 [deg])
ボード線図を見ることで、システムが低い周波数の入力にどう応答するか、高い周波数の入力にどう応答するか、そしてその間の周波数でどのようにゲインや位相が変化するかが一目で分かります。例えば、低い周波数でゲインが高いシステムは、ゆっくりした変化に敏感に応答します。高い周波数でゲインが低いシステムは、速い変化(ノイズなど)を抑制する性質があります。
開ループ伝達関数のボード線図
ゲイン余裕と位相余裕は、開ループ伝達関数 $L(s)$ の周波数応答である $L(j\omega)$ のボード線図上で定義されます。フィードバック制御システムの安定性は、閉ループ伝達関数 $T(s)$ ではなく、開ループ伝達関数 $L(s)$ の周波数応答を使って評価するのが一般的です。これは、開ループ伝達関数の方がシステムの特性変更(例えば制御器の設計)が周波数応答にどう影響するかを把握しやすく、またナイキストの安定判別法が開ループ伝達関数に基づいているためです。
したがって、MATLABのmargin
コマンドが計算するゲイン余裕と位相余裕は、引数として与えられたシステムの開ループ伝達関数に対するものです。
ナイキストの安定判別法とゲイン・位相余裕
ゲイン余裕と位相余裕は、ナイキストの安定判別法から派生した概念です。ナイキスト線図は、開ループ伝達関数 $L(j\omega)$ を複素平面上にプロットしたものです。$\omega$ を 0 から無限大まで変化させたときの $L(j\omega)$ の軌跡がナイキスト線図です。安定判別には、通常、虚軸対称な軌跡全体($\omega$ を $-\infty$ から $\infty$ まで変化させたときの軌跡)と、必要であれば複素平面右半平面の無限遠点を回る大きな半円の写像も含めて考えますが、ゲイン余裕と位相余裕の定義には $\omega \ge 0$ の部分だけが主に使われます。
ナイキストの安定判別法の詳細な原理はここでは割愛しますが、簡単に言うと、開ループ伝達関数 $L(s)$ が不安定極(右半平面にある極)を持たない場合、閉ループ系が安定であるための条件は、ナイキスト線図が複素平面上の点 $(-1, 0)$ を囲まないこと(右回りに一周もしないこと)です。
図3:ナイキスト線図の例
(複素平面上に Re軸と Im軸)
(原点 (0,0))
(-1, 0) 点
(ω=0 から ω=∞ までの L(jω) の軌跡)
ゲイン余裕 (Gain Margin, GM)
ゲイン余裕は、システムが不安定になる(ナイキスト線図が $(-1, 0)$ 点を通る)ために、システムのゲインをどれだけ増やせるか、という量を示します。
定義:
ゲイン余裕 GM は、開ループ伝達関数 $L(j\omega)$ の位相が -180度になる周波数(位相交差周波数、Phase Crossover Frequency, $\omega_{pc}$)におけるゲイン $|L(j\omega_{pc})|$ の逆数で定義されます。
$GM = \frac{1}{|L(j\omega_{pc})|} \quad$ ただし $\angle L(j\omega_{pc}) = -180^\circ$
デシベルで表す場合は、
$GM_{dB} = 20 \log_{10}(GM) = -20 \log_{10}|L(j\omega_{pc})|$
安定判別基準:
閉ループ系が安定であるためには、$GM > 1$ (または $GM_{dB} > 0$ dB) である必要があります。これは、位相が -180度になる周波数で、ゲインが 1 (0 dB) より小さい必要があることを意味します。もしこの周波数でゲインが 1 より大きいと、ナイキスト線図は $(-1, 0)$ 点を左側から通過し、ナイキストの安定判別法の条件(L(s)が不安定極を持たない場合)を満たさなくなる可能性があります。(厳密には開ループ系の不安定極の数も考慮しますが、ここでは単純化して説明します)
物理的な意味:
ゲイン余裕は、システム全体のゲインを $GM$ 倍まで増やしても、システムがまだ安定である、という余裕を示します。例えば、GM = 5 (14 dB) なら、システムのゲインが5倍になっても安定を保てます。GM が小さいシステムは、わずかなゲイン変動で不安定になるリスクが高いと言えます。
ボード線図上での見方:
ゲイン余裕は、位相線図が -180度を横切る周波数 $\omega_{pc}$ におけるゲイン線図の値から読み取れます。ゲイン線図上で、周波数 $\omega_{pc}$ におけるゲインが $-G_{dB}$ dB だったとすると、ゲイン余裕は $G_{dB}$ dB になります。つまり、$GM_{dB} = -20 \log_{10}|L(j\omega_{pc})|$ です。これは、ゲイン線図が 0 dB 線よりもどれだけ下にあるか(負の値か)を示します。
図4:ボード線図上でのゲイン余裕の見方
(ゲイン線図と位相線図)
(位相線図が -180度線を横切る点を特定)
(その周波数 $\omega_{pc}$ におけるゲイン線図の値を読み取る)
(ゲイン線図が -Gd Bなら、ゲイン余裕は +G dB)
(ゲイン余裕はゲイン線図の 0 dB 線から下向きの距離として示される)
ナイキスト線図上での見方:
ゲイン余裕は、ナイキスト線図が負の実軸(虚部が0、実部が負の領域)と交差する点から $(-1, 0)$ 点までの距離に関連します。ナイキスト線図が負の実軸と交差する点を $(-a, 0)$ とすると、この周波数における位相は -180度です。ゲインはこの点の実部 $|-a|=a$ です。したがって、ゲイン余裕 GM は $1/a$ となります。安定であれば、ナイキスト線図は $(-1, 0)$ 点より右側で負の実軸と交差するため、$0 < a < 1$ となり、GM = $1/a > 1$ となります。
図5:ナイキスト線図上でのゲイン余裕の見方
(ナイキスト線図が負の実軸と交差する点 (-a, 0) を示す)
(ゲイン余裕 GM = 1/a)
(安定な場合、-1 < -a < 0 なので a < 1, GM > 1)
(不安定な場合、-a < -1 なので a > 1, GM < 1)
位相余裕 (Phase Margin, PM)
位相余裕は、システムが不安定になる(ナイキスト線図が $(-1, 0)$ 点を通る)ために、システムの位相がどれだけ遅れても許容できるか、という量を示します。
定義:
位相余裕 PM は、開ループ伝達関数 $L(j\omega)$ のゲインが 1 (0 dB) になる周波数(ゲイン交差周波数、Gain Crossover Frequency, $\omega_{gc}$)における位相 $\angle L(j\omega_{gc})$ と -180度との差で定義されます。
$PM = 180^\circ + \angle L(j\omega_{gc}) \quad$ ただし $|L(j\omega_{gc})| = 1$ (または 0 dB)
安定判別基準:
閉ループ系が安定であるためには、$PM > 0^\circ$ である必要があります。これは、ゲインが 1 (0 dB) になる周波数で、位相が -180度よりも大きい値(遅れが少ない、例えば -150度など)である必要があることを意味します。
物理的な意味:
位相余裕は、システム全体の位相遅れがさらに PM 度増えても、システムがまだ安定である、という余裕を示します。PM が小さいシステムは、位相遅れに対して敏感であり、応答が振動的になりやすい傾向があります。一般的に、PM が小さいほど、ステップ応答に大きなオーバーシュートが現れるなど、過渡応答の減衰が悪くなります。
ボード線図上での見方:
位相余裕は、ゲイン線図が 0 dB を横切る周波数 $\omega_{gc}$ における位相線図の値から読み取れます。位相線図上で、周波数 $\omega_{gc}$ における位相が $\phi_{deg}$ 度だったとすると、位相余裕は $PM = 180^\circ + \phi_{deg}$ となります。安定であれば、$\phi_{deg} > -180^\circ$ なので $PM > 0^\circ$ となります。位相余裕は、位相線図の -180度線から上向きの距離として示されます。
図6:ボード線図上での位相余裕の見方
(ゲイン線図と位相線図)
(ゲイン線図が 0 dB 線を横切る点を特定)
(その周波数 $\omega_{gc}$ における位相線図の値を読み取る)
(位相線図が $\phi$ 度なら、位相余裕は 180 + $\phi$ 度)
(位相余裕は位相線図の -180度線から上向きの距離として示される)
ナイキスト線図上での見方:
位相余裕は、ナイキスト線図が複素平面上の単位円(原点を中心とする半径1の円)と交差する点と、原点、そして $(-1, 0)$ 点を結ぶ線分の角度に関連します。ナイキスト線図が単位円と交差する点の座標を $(x, y)$ とすると、この周波数におけるゲインは $\sqrt{x^2+y^2}=1$ です。この点の偏角 $\theta = \operatorname{atan2}(y, x)$ が、ゲイン交差周波数における位相 $\angle L(j\omega_{gc})$ です。位相余裕は $180^\circ + \theta$ となります。安定であれば、この点は $(-1, 0)$ 点よりも上の領域にあるか、負の実軸と交差する点が $(-1, 0)$ より右側にあるため、$\theta > -180^\circ$ となり、PM > 0度となります。
図7:ナイキスト線図上での位相余裕の見方
(ナイキスト線図が単位円と交差する点を P とする)
(原点 O, 点 P, 点 (-1,0) を考える)
(線分 OP と実軸のなす角度が $\theta$)
(位相余裕 PM = 180 + $\theta$)
(安定な場合、P は通常左半平面の上半分にあるか、負の実軸と交差する点が (-1,0) より右側)
ゲイン余裕・位相余裕とシステム応答の関係
- ゲイン余裕が大きいほど:
- システムのゲイン変動に対して安定性が高い(ロバスト性が高い)。
- 定常状態に収束するまでの振動が少ない傾向がある。
- 位相余裕が大きいほど:
- システムの位相遅れ変動に対して安定性が高い(ロバスト性が高い)。
- 過渡応答におけるオーバーシュートが小さく、整定が速い傾向がある。減衰性が高い。
- 一般的に、PM > 30度~60度程度が望ましいとされます。
GMとPMは、単に安定か不安定かを判別するだけでなく、安定性の「度合い」やシステムの応答特性(どれくらい振動的かなど)を評価するための重要な指標となります。これらの指標が十分に大きいほど、システムはより安定であり、外乱やパラメータ変動に対するロバスト性も高くなります。
MATLAB margin
コマンドの使い方
MATLABには、システムのゲイン余裕、位相余裕、およびそれぞれの交差周波数を簡単に計算・図示するための強力な関数 margin
が用意されています。
基本的な構文
margin(sys)
sys
: 解析したいシステムのモデル。tf
(伝達関数)、zpk
(零点-極-ゲイン形式)、ss
(状態空間形式) など、Control System Toolboxでサポートされているシステムモデルオブジェクトを指定します。
このコマンドを実行すると、MATLABは自動的にシステムのボード線図を描画し、その図上にゲイン余裕、位相余裕、および対応する周波数を示すマーカーとテキストボックスを表示します。
出力引数を指定する場合
ゲイン余裕、位相余裕、および対応する周波数を数値として取得したい場合は、出力引数を指定します。
[gm, pm, wgm, wpm] = margin(sys)
gm
: ゲイン余裕(絶対値)pm
: 位相余裕(度数)wgm
: ゲイン余裕が計算された周波数(位相交差周波数 $\omega_{pc}$)(rad/s)wpm
: 位相余裕が計算された周波数(ゲイン交差周波数 $\omega_{gc}$)(rad/s)
注意点として、gm
はゲインの絶対値(例えば 5 ならゲインが5倍まで許容)、pm
は度数で、wgm
と wpm
はラジアン/秒で出力されます。ゲイン余裕をデシベルで取得したい場合は、20*log10(gm)
と計算する必要があります。
margin
コマンドは何を計算しているのか?
margin(sys)
は、与えられたシステム sys
の開ループ伝達関数 $L(s)$ の周波数応答 $L(j\omega)$ を計算し、以下の条件を満たす周波数を見つけます。
- 位相交差周波数 $\omega_{pc}$: $\angle L(j\omega_{pc}) = -180^\circ$ となる周波数の中で、ゲインが 1 (0 dB) を超える最も低い周波数(通常)。複数の位相交差周波数がある場合、
margin
コマンドは通常、安定性判別に関連する特定の周波数を選びます。 - ゲイン交差周波数 $\omega_{gc}$: $|L(j\omega_{gc})| = 1$ (または $20 \log_{10} |L(j\omega_{gc})| = 0$ dB) となる周波数の中で、位相が -180度を超える最も低い周波数(通常)。複数のゲイン交差周波数がある場合も同様です。
そして、これらの周波数におけるゲインと位相を使って、ゲイン余裕と位相余裕を計算します。
- $GM = 1 / |L(j\omega_{pc})|$
- $PM = 180^\circ + \angle L(j\omega_{gc})$
margin
コマンドは、ボード線図を描画する場合、これらの計算結果を図上に表示します。
複数システムの解析
margin
コマンドは、システムモデルの配列に対しても使用できます。
margin(sysarray)
これにより、配列に含まれる各システムのボード線図とマージン情報がまとめて表示されます。
離散時間システムの解析
margin
コマンドは、離散時間システムモデル(サンプリング時間 Ts
が指定された tf
や zpk
オブジェクトなど)にも使用できます。離散時間システムの周波数応答は、アナログシステムの周波数応答と類似した方法で計算されますが、通常はナイキスト周波数(サンプリング周波数の半分)までの周波数帯域で評価されます。離散時間システムのボード線図やマージンの解釈も、アナログシステムの場合と基本的には同じですが、周波数軸の範囲に注意が必要です。
MATLAB margin
コマンドを使った具体例
それでは、実際にMATLABを使ってmargin
コマンドを使ってみましょう。いくつかの例を通して、その使い方と出力の解釈を理解します。
例1:シンプルなシステムのGM/PM計算とボード線図表示
最も基本的な1次遅れ系と積分要素の組み合わせのようなシステムを考えます。
開ループ伝達関数 $L(s) = \frac{10}{s(s+2)}$
このシステムのゲイン余裕、位相余裕を計算し、ボード線図に表示させてみます。
“`matlab
% システムモデルの定義 (伝達関数形式)
num = [10];
den = [1, 2, 0]; % s(s+2) = s^2 + 2s + 0
sys = tf(num, den);
% ゲイン余裕と位相余裕を計算・図示
margin(sys);
% ゲイン余裕と位相余裕を数値として取得
[gm, pm, wgm, wpm] = margin(sys);
% 結果の表示
fprintf(‘ゲイン余裕 (絶対値): %.2f\n’, gm);
fprintf(‘ゲイン余裕 (dB): %.2f dB\n’, 20*log10(gm));
fprintf(‘ゲイン余裕周波数 (位相交差周波数): %.2f rad/s\n’, wgm);
fprintf(‘位相余裕: %.2f 度\n’, pm);
fprintf(‘位相余裕周波数 (ゲイン交差周波数): %.2f rad/s\n’, wpm);
“`
上記のコードを実行すると、MATLABは図8のようなボード線図を表示します。
図8:margin(sys)
で表示されるボード線図の例
(上段:ゲイン線図、下段:位相線図)
(ゲイン線図上で、位相余裕周波数 wpm の位置に縦線とマーカー。その周波数のゲイン(0 dB)と位相余裕(pm)を示すテキストボックス)
(位相線図上で、ゲイン余裕周波数 wgm の位置に縦線とマーカー。その周波数の位相(-180度)とゲイン余裕(gm_dB)を示すテキストボックス)
(凡例:Gm, Pm, wGc, wPc の値が表示されている)
図のゲイン線図を見ると、ある周波数でゲイン線図が 0 dB を横切っています。これがゲイン交差周波数 $\omega_{gc}$ です。この周波数での位相線図の値から位相余裕が計算されます。
図の位相線図を見ると、ある周波数で位相線図が -180度を横切っています。これが位相交差周波数 $\omega_{pc}$ です。この周波数でのゲイン線図の値からゲイン余裕が計算されます(ただし dB 値の符号を反転)。
表示されるテキストボックスには、Gm
(ゲイン余裕 dB値), Pm
(位相余裕 度数), wGc
(ゲイン交差周波数 rad/s), wPc
(位相交差周波数 rad/s) の値が表示されています。
数値出力の場合、例えば上記のコードを実行すると、以下のような結果が表示される可能性があります(具体的な値はシステムによって異なります)。
ゲイン余裕 (絶対値): 10.00
ゲイン余裕 (dB): 20.00 dB
ゲイン余裕周波数 (位相交差周波数): 3.16 rad/s
位相余裕: 20.36 度
位相余裕周波数 (ゲイン交差周波数): 3.00 rad/s
この結果から、このシステムはゲイン余裕が 20 dB (絶対値 10)、位相余裕が 20.36 度であることが分かります。ゲイン余裕は十分に大きいですが、位相余裕が比較的(例えば60度などに比べて)小さいことが分かります。これは、このシステムが安定ではあるものの、位相遅れに対してあまり余裕がなく、応答が少し振動的になる可能性があることを示唆しています。
例2:安定/不安定なシステムの比較
システムのパラメータを変更して、安定な場合と不安定な場合を比較してみましょう。例として、以下のような開ループ伝達関数を考えます。
$L(s) = \frac{K}{s(s+1)(s+5)}$
このシステムは、ゲイン $K$ の値を大きくすると不安定になります。$K=5$ の場合と $K=50$ の場合で margin
の結果を比較してみます。
“`matlab
% システムモデルの定義
num1 = [5];
den1 = conv([1, 1], [1, 5]); % (s+1)(s+5) = s^2 + 6s + 5
den1 = conv([1, 0], den1); % s(s^2 + 6s + 5) = s^3 + 6s^2 + 5s + 0
sys1 = tf(num1, den1); % K=5 の場合
num2 = [50];
den2 = conv([1, 1], [1, 5]);
den2 = conv([1, 0], den2);
sys2 = tf(num2, den2); % K=50 の場合
% システムモデルを配列に格納
sys_array = [sys1, sys2];
% ゲイン余裕と位相余裕を計算・図示 (複数のシステムが同じ図にプロットされる)
margin(sys_array);
% それぞれのシステムの数値結果を取得
[gm1, pm1, wgm1, wpm1] = margin(sys1);
[gm2, pm2, wgm2, wpm2] = margin(sys2);
fprintf(‘— K=5 の場合 —\n’);
fprintf(‘ゲイン余裕 (dB): %.2f dB\n’, 20log10(gm1));
fprintf(‘位相余裕: %.2f 度\n’, pm1);
fprintf(‘— K=50 の場合 —\n’);
fprintf(‘ゲイン余裕 (dB): %.2f dB\n’, 20log10(gm2));
fprintf(‘位相余裕: %.2f 度\n’, pm2);
“`
図9:K=5 (安定) と K=50 (不安定) の場合のボード線図とマージン
(K=5 のボード線図:ゲイン線図が0dBより下、位相線図が-180度より上にある区間がある)
(K=50 のボード線図:ゲイン線図が0dBより上、位相線図が-180度より下にある区間がある)
(それぞれのマージン値を示すマーカーとテキストボックス)
この実行結果を見ると、例えば以下のようになるはずです。
--- K=5 の場合 ---
ゲイン余裕 (dB): 21.14 dB
位相余裕: 65.45 度
--- K=50 の場合 ---
ゲイン余裕 (dB): -18.86 dB
位相余裕: -21.30 度
$K=5$ の場合、ゲイン余裕は 21.14 dB (> 0 dB)、位相余裕は 65.45 度 (> 0 度) であり、安定であることが分かります。ボード線図でも、ゲイン余裕周波数でゲインが負の値、位相余裕周波数で位相が -180度より大きい値になっています。
$K=50$ の場合、ゲイン余裕は -18.86 dB (< 0 dB)、位相余裕は -21.30 度 (< 0 度) となっています。ゲイン余裕が負、位相余裕が負ということは、システムが不安定であることを示しています。ボード線図でも、ゲイン余裕周波数でゲインが正の値、位相余裕周波数で位相が -180度より小さい値になっています。
この例から、ゲイン余裕 > 0 dB かつ 位相余裕 > 0 度 が安定の条件であることがよく分かります。また、ゲイン $K$ を大きくするとゲイン線図全体が上にシフトし、結果としてゲイン交差周波数と位相交差周波数が高くなり、ゲイン余裕と位相余裕が悪化(小さくなる)ことが分覚ります。
例3:GM/PMが無限大の場合
安定なシステムの中には、ゲイン余裕や位相余裕が無限大となる場合があります。例えば、開ループ伝達関数の位相が -180度を決して下回らないシステムなどです。簡単な例として、1次遅れ系 $L(s) = \frac{1}{s+1}$ を考えます。
“`matlab
% システムモデルの定義
num = [1];
den = [1, 1];
sys = tf(num, den);
% ゲイン余裕と位相余裕を計算・図示
margin(sys);
% 数値結果を取得
[gm, pm, wgm, wpm] = margin(sys);
fprintf(‘— 1次遅れ系の場合 —\n’);
fprintf(‘ゲイン余裕 (絶対値): %.2f\n’, gm);
fprintf(‘ゲイン余裕 (dB): %.2f dB\n’, 20*log10(gm));
fprintf(‘ゲイン余裕周波数 (位相交差周波数): ‘);
if isinf(wgm)
fprintf(‘無限大または不定\n’); % MATLABによっては Inf または NaN
else
fprintf(‘%.2f rad/s\n’, wgm);
end
fprintf(‘位相余裕: %.2f 度\n’, pm);
fprintf(‘位相余裕周波数 (ゲイン交差周波数): %.2f rad/s\n’, wpm);
“`
図10:1次遅れ系のボード線図とマージン (GM=Inf)
(位相線図が -180度を決して下回らない)
(ゲイン線図が 0dB を横切る点はある (wpm))
(マージンとして Gm=Inf dB, Pm = ある正の値 が表示される)
このシステムの場合、位相線図は 0度から始まり、周波数と共に単調に減少して -90度 asymptote(漸近線)に近づきますが、決して -180度には到達しません。したがって、位相交差周波数 $\omega_{pc}$ は存在しません。このような場合、ゲイン余裕は無限大 (Inf) となります。
また、ゲイン線図は周波数と共に減少し、ある周波数で 0 dB を横切ります。この周波数 $\omega_{gc}$ における位相は -90度よりも大きい値なので、位相余裕 $180 + \angle L(j\omega_{gc})$ は正の値となります。
数値出力の例:
--- 1次遅れ系の場合 ---
ゲイン余裕 (絶対値): Inf
ゲイン余裕 (dB): Inf dB
ゲイン余裕周波数 (位相交差周波数): 無限大または不定
位相余裕: 58.19 度
位相余裕周波数 (ゲイン交差周波数): 1.00 rad/s
この結果から、ゲイン余裕が無限大、位相余裕が正の値であり、システムが安定であることが分かります。ゲイン余裕が無限大というのは、システムのゲインをどれだけ増やしても、位相が -180度に達する前にゲインが無限大になってしまう、あるいは位相が -180度に全く到達しないため、原理的にはゲインによる不安定化は起こりえないという意味です(もちろん実際には非線形性や高次のダイナミクスによって不安定化する可能性はあります)。
MATLABのmargin
コマンドは、このような場合も適切に Inf や NaN を出力してくれます。
設計への応用:ゲイン余裕・位相余裕を改善するには
ゲイン余裕や位相余裕は、システムの安定性やロバスト性を評価するだけでなく、制御システム設計における重要な目標値ともなります。多くの場合、目標値追従性能や外乱抑制性能といった他の要件とトレードオフの関係にありますが、一般的に以下のような目安が知られています。
- ゲイン余裕 (GM): 6 dB 以上(絶対値で 2 以上)
- 位相余裕 (PM): 30度~60度
これらの値を確保することで、実用上十分な安定性とロバスト性を持つシステムを設計できることが多いです。
設計した制御器によって、システムの開ループ伝達関数 $L(s)$ が変化し、それに伴ってゲイン余裕と位相余裕も変化します。制御器を設計する際には、margin
コマンドを使ってGMとPMを確認しながら、目標とする性能と安定性を満たすようにパラメータ調整や制御器の構造設計を行います。
GM/PMを改善するための基本的な考え方
GMやPMを改善するということは、開ループ伝達関数 $L(j\omega)$ のナイキスト線図を $(-1, 0)$ 点から遠ざける、あるいはボード線図上でゲイン線図の 0 dB 交差周波数での位相を大きくする(-180度から遠ざける)、または位相線図の -180度交差周波数でのゲインを小さくする(0 dBから遠ざける)ことに相当します。
- ゲインの調整: 開ループゲイン(通常、伝達関数の分子の定数項など)を小さくすると、ゲイン線図全体が下にシフトします。これによりゲイン交差周波数 $\omega_{gc}$ が低くなり、その結果位相余裕が改善される傾向があります。ただし、ゲインを小さくしすぎると、定常偏差が大きくなったり、応答が遅くなったりするトレードオフがあります。
- 制御器の設計: P, I, D制御や位相進み/遅れ補償などの制御器を導入することで、特定の周波数帯域での開ループ伝達関数のゲインや位相特性を積極的に変更できます。
- P制御: 比例ゲイン $K_p$ を調整することは、システム全体のゲイン調整に相当します。ゲインを上げると応答は速くなりますが、GMやPMが悪化し、不安定になりやすくなります(例2参照)。
- I制御: 積分要素 ($1/s$) は、低周波数帯域のゲインを上げて定常偏差を改善する効果がありますが、位相を最大 -90度遅らせるため、GMやPMを悪化させる要因となります。
- D制御: 微分要素 ($s$) は、高周波数帯域のゲインを上げて応答を速くする効果がありますが、これも位相を最大 +90度進めるため、GMやPMに影響を与えます。PIやPID制御器は、これらの要素を組み合わせることで、様々な周波数帯域の特性を調整します。
- 位相進み補償器 (Lead Compensator): 特定の周波数帯域で位相を進ませる効果があり、主に位相余裕 PM を改善するために使用されます。ゲイン交差周波数付近で位相を進ませることで、PMを増加させ、システムの応答の減衰性を高めることができます。
- 位相遅れ補償器 (Lag Compensator): 低周波数帯域のゲインを上げることで定常偏差を改善する効果がありますが、位相を進ませる効果はないため、通常は高周波数帯域のゲインを維持しつつ、低周波数の特性を改善するために用いられます。設計によってはGMやPMを悪化させる可能性があるため注意が必要です。
制御システム設計では、まずシステム全体の要求仕様(整定時間、オーバーシュート、定常偏差、外乱抑制など)を満たすための制御器の構造とパラメータの目星をつけ、その上でmargin
コマンドなどで安定性・ロバスト性(GM, PM)を確認し、必要であれば調整を繰り返すというプロセスが一般的です。
MATLABのControl System Toolboxには、これらの設計を支援するための様々なツール(例えば Control System Tuner アプリなど)がありますが、margin
コマンドは、設計の途中で現在の設計がどれくらいの安定性・ロバスト性を持っているかを素早く確認するための基本的ながら非常に強力なツールです。
まとめ
この記事では、制御システムの安定性評価における周波数応答解析の重要性、特にゲイン余裕と位相余裕という二つの主要な指標について、その基礎からMATLABを使った実践的な計算方法までを詳細に解説しました。
- 制御システムの安定性は最も重要な特性であり、不安定なシステムは望ましくない挙動を示します。
- 周波数応答解析は、システムの安定性を評価し、外乱やパラメータ変動に対するロバスト性を定量的に把握するための強力な手法です。
- ボード線図(ゲイン線図と位相線図)は、システムの周波数応答を視覚的に把握するための標準的なツールです。
- ゲイン余裕 (GM) は、システムが不安定になるまでに許容できるゲインの増加量を dB や絶対値で示したもので、位相が -180度となる位相交差周波数 $\omega_{pc}$ におけるゲインから定義されます。
- 位相余裕 (PM) は、システムが不安定になるまでに許容できる位相遅れの量を度数で示したもので、ゲインが 1 (0 dB) となるゲイン交差周波数 $\omega_{gc}$ における位相から定義されます。
- 安定なシステムでは、GM > 0 dB かつ PM > 0 度 である必要があります。GMとPMが大きいほど、システムはより安定でロバスト性が高いと言えます。
- MATLABの
margin
コマンドは、与えられたシステム(開ループ伝達関数として解釈される)のゲイン余裕、位相余裕、およびそれぞれの交差周波数を簡単に計算し、ボード線図上に図示する機能を提供します。 margin(sys)
で図示し、[gm, pm, wgm, wpm] = margin(sys)
で数値を取得できます。- GMやPMは制御システム設計における重要な目標値であり、制御器の設計やパラメータ調整によってこれらの値を改善し、システムの安定性・ロバスト性を確保することが行われます。
ゲイン余裕と位相余裕は、制御工学において最も基本的で重要な概念の一つです。これらの概念とMATLABのmargin
コマンドを使いこなすことは、制御システムの安定性を評価し、より良い制御システムを設計するための第一歩となります。ぜひ、様々なシステムに対してmargin
コマンドを実行し、ボード線図やナイキスト線図と合わせて結果を観察することで、理解を深めてください。