Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ループ整形と安定余裕の仕様

この例では、制御システムを systune または looptune で調整する際にループ整形と安定余裕を指定する方法を説明します。

関数 systunelooptune は、時間領域と周波数領域のさまざまな要件に従って固定構造制御システムのパラメーターを調整します。それらの設計要件を指定するには、調整目標オブジェクトを使用します。

ループ整形

TuningGoal.LoopShape 要件は、開ループ応答のゲインの整形に使用されます。この設計法は "ループ整形" と呼ばれます。以下に例を示します。

s = tf('s');
R1 = TuningGoal.LoopShape('u',1/s);

これは、位置 "u" で測定された開ループ応答が純積分器のようになる (そのゲインに関する限り) ことを指定しています。MATLAB では、AnalysisPoint ブロックを使用して位置 "u" をマークします。詳細については、「調整可能なモデルの作成」の例を参照してください。Simulink では、slTuner インターフェイスの addPoint メソッドを使用して、"u" を目的の点としてマークします。

その他のゲイン仕様と同様に、いくつかの周波数点を使用して、目的のループ整形の漸近線を指定できます。たとえば、ゲイン交差が 1 rad/s、1 rad/s の前の勾配が -20 dB/decade、1 rad/s の後の勾配が -40 dB/decade のループ整形を指定するには、周波数 0.1,1,10 のゲインが 10,1,0.01 になるようにそれぞれ指定します。

LS = frd([10,1,0.01],[0.1,1,10]);
R2 = TuningGoal.LoopShape('u',LS);

bodemag(LS,R2.LoopGain)
legend('Specified','Interpolated')

Figure contains an axes object. The axes object with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Specified, Interpolated.

ループ整形要件は、開ループ応答 L に対する制約です。この制約は、調整のために、感度関数 S=1/(1+L) および相補感度関数 T=L/(1+L) に対する閉ループ ゲインの制約に変換されます。viewGoal を使用して、ターゲット ループ整形と S (緑) および T (赤) の対応するゲイン範囲を可視化します。

viewGoal(R2)

Figure contains an axes object. The axes object contains an object of type line. These objects represent Target loop shape, S bound, T bound.

最小ループ ゲインと最大ループ ゲイン

TuningGoal.LoopShape の代わりに TuningGoal.MinLoopGainTuningGoal.MaxLoopGain を使用して、特定の周波数帯域内のループ ゲインの最小値または最大値を指定できます。これは、交差近傍の実際のループ整形の特定を調整アルゴリズムに任せるのが最適である場合に役立ちます。たとえば、次の要件は、帯域内の最小ループ ゲインと帯域外のロールオフ特性を指定していますが、実際の交差周波数も交差近傍のループ整形も指定していません。

MinLG = TuningGoal.MinLoopGain('u',5/s);  % integral action
MinLG.Focus = [0 0.2];

MaxLG = TuningGoal.MaxLoopGain('u',1/s^2);  % -40dB/decade roll off
MaxLG.Focus = [1 Inf];

viewGoal([MinLG MaxLG])

Figure contains 2 axes objects. Axes object 1 contains an object of type line. These objects represent Min loop gain, inv(S) bound. Axes object 2 contains an object of type line. These objects represent Max loop gain, T bound.

TuningGoal.MaxLoopGain 要件は、ループ ゲインが小さい (|L|1) ときは開ループ ゲインと閉ループ ゲインが同程度であるという事実に基づいています。そのため、この要件には、ループ ゲインを 1 に近い値未満に保つ効果がない可能性があります。たとえば、柔軟モードでゲイン スパイクが交差周波数を超えると仮定し、このスパイクを 0.5 (-6 dB) 未満に保つ必要があるとします。この場合は、TuningGoal.MaxLoopGain を使用する代わりに、ループ開始点を "u" とする TuningGoal.Gain を使用して L のゲインを直接制約することができます。

MaxLG = TuningGoal.Gain('u','u',0.5);
MaxLG.Opening = 'u';

開ループ応答が不安定な場合は、この要件に関連付けられた暗黙的な安定性の制約をさらに無効にするようにします。

MaxLG.Stabilize = false;

図 1 は、柔軟モードでの開ループ応答の評価に使用されるこの要件を示しています。

図 1: L に対するゲインの制約

安定余裕

TuningGoal.Margins 要件では、ディスク余裕の概念を使用して、指定したループ開始位置においてゲイン余裕と位相余裕の最小量を適用します。MIMO フィードバック ループの場合、この要件は各フィードバック チャネルでのゲイン変動または位相変動に対して安定性を保証します。ゲインまたは位相は一度にすべてのチャネルで変化する可能性があり、その変化量はチャネルごとに異なります。詳細については、制御システムの調整における安定余裕を参照してください。たとえば、次のコードは位置 "u" において ±6 dB のゲイン余裕と 45 度の位相余裕を適用します。

R = TuningGoal.Margins('u',6,45);

MATLAB では、AnalysisPoint ブロックを使用して位置 "u" をマークします (詳細については、調整可能なモデルの作成を参照)。Simulink では、slTuner インターフェイスの addPoint メソッドを使用して、"u" を目的の点としてマークします (Simulink モデルに対する slTuner インターフェイスの作成と設定を参照)。通常、安定余裕はプラント入力またはプラント出力、あるいはその両方で測定されます。

ターゲット ゲイン余裕とターゲット位相余裕の値は、適切な閉ループ伝達関数に対する正規化ゲインの制約に変換されます。目的の余裕は、ゲインが 1 未満の周波数で達成されます。viewGoal を使用して、設定した要件を確認します。

viewGoal(R)

MATLAB figure

影付きの領域は、制約に違反する部分を示しています。調整後、調整モデル T について viewGoal(R,T) を使用して、調整された周波数依存の余裕をこのプロットに表示できます。

参考

| | |

関連するトピック