Main Content

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

systune

MATLAB でモデル化された固定構造制御システムの調整

説明

systune は、柔軟な調整目標と厳密な調整目標の両方に従って固定構造制御システムを調整します。systune は、1 つ以上のフィードバック ループに分布している、次数と構造の固定された複数の制御要素を調整できます。調整ワークフローの概要については、自動調整のワークフローを参照してください。

このコマンドは MATLAB® でモデル化された制御システムを調整します。Simulink® モデルを調整する場合は、slTuner (Simulink Control Design) を使用して Simulink モデルに対するインターフェイスを作成します。その後、slTunersystune (Simulink Control Design) を使って制御システムを調整できるようになります。

[CL,fSoft] = systune(CL0,SoftReqs) は、柔軟な調整要件を最もよく満たすように制御システム モデル CL0 の自由パラメーターを調整します。最も優れた柔軟な制約値は fSoft として返されます。実数パラメーターの不確かさに対するロバスト調整には、不確かな実数パラメーターをもつ制御システム モデルを使用します。一連のプラント モデルに対するロバスト調整には、制御システム モデル CL0 の配列を使用します (入力引数を参照)。

[CL,fSoft,gHard] = systune(CL0,SoftReqs,HardReqs) は、厳密な調整要件 (制約) を満たすことを条件として、柔軟な調整要件を最もよく満たすように制御システムを調整します。柔軟な制約と厳密な制約を最もよく達成する値を返します。

[CL,fSoft,gHard] = systune(CL0,SoftReqs,HardReqs,options) は、最適化のオプションを指定します。

また、[CL,fSoft,gHard,info] = systune(___) は、各最適化実行の詳細情報を返します。前の構文で説明したすべての入力引数がここでも適用されます。

すべて折りたたむ

カスケード制御システムを設定値追従および外乱の抑制の要件を満たすように調整します。

次の図のカスケード制御システムには、調整可能なコントローラーが 2 つ含まれています。内側のループ用の PI コントローラー C2 と、外側のループ用の PID コントローラー C1 です。

ブロック x1 および x2 で解析ポイントの位置をマークしています。それらの位置で、システムの調整の要件を指定するために、ループを開いたり信号を加えたりできます。

この制御システムの自由パラメーターを次の要件を満たすように調整します。

  • 出力信号 y1 は応答時間 10 秒および定常偏差 1% で基準信号 r に追従。

  • x2 において加えられた外乱を y1 において係数 10 で抑制。

コントローラーを表す調整可能な制御設計ブロックと、プラントを表す数値 LTI モデルを作成します。さらに、各フィードバック ループの対象のポイントをマークする AnalysisPoint ブロックを作成します。

G2 = zpk([],-2,3);
G1 = zpk([],[-1 -1 -1],10);

C20 = tunablePID('C2','pi');
C10 = tunablePID('C1','pid');

X1 = AnalysisPoint('X1');
X2 = AnalysisPoint('X2');

これらのコンポーネントを接続して全体の閉ループ制御システムのモデルを作成します。

InnerLoop = feedback(X2*G2*C20,1);
CL0 = feedback(G1*InnerLoop*C10,X1);
CL0.InputName = 'r';
CL0.OutputName = 'y';

CL0 は調整可能な genss モデルです。入力チャネルと出力チャネルの名前を指定すると、システムの調整要件を指定する際に識別できるようになります。

設定値追従および外乱の抑制の調整要件を指定します。

Rtrack = TuningGoal.Tracking('r','y',10,0.01);
Rreject = TuningGoal.Gain('X2','y',0.1);

TuningGoal.Tracking 要件は、'y' の信号が、応答時間 10 秒、追従誤差 1% で 'r' の信号に追従することを指定します。

TuningGoal.Gain 要件は、AnalysisPoint ブロック X2 に関連付けられた暗黙的な入力からのゲインを 'y' に制限しています (AnalysisPointを参照)。このゲインを 1 未満の値に制限することで、X2 において加えられた外乱が出力で必ず抑制されます。

制御システムを調整します。

[CL,fSoft] = systune(CL0,[Rtrack,Rreject]);
Final: Soft = 1.24, Hard = -Inf, Iterations = 110

systune は、それぞれの調整要件を正規化されたスカラー値 f に変換します。このコマンドは、f の値が最小となるように CL0 の調整可能なパラメーターを調整します。各要件について、f < 1 であれば要件は満たされ、f >1 であれば要件に違反します。fSoft は最小化された f の値のベクトルです。最小化された f の値のうちで最大の値が Soft として表示されます。

出力モデル CLCL0 の調整バージョンです。CL には CL0 と同じ制御設計ブロックが含まれ、現在の値は調整されたパラメーターの値と等しくなります。

'r' から 'y' へのステップ応答を調べて、調整後の制御システムが追従要件を満たすことを確認します。

stepplot(CL)

Figure contains an axes object. The axes object with title From: r To: y contains an object of type line. This object represents CL.

ステップ プロットから、調整後の制御システム CL では、ほぼ望ましい応答時間で出力が入力に追従していることがわかります。

X2 において加えられた信号に対する閉ループ応答を調べて、調整後のシステムを外乱の抑制要件に対して検証します。

CLdist = getIOTransfer(CL,'X2','y');
stepplot(CLdist);

Figure contains an axes object. The axes object with title From: X2 To: y contains an object of type line. This object represents CLdist.

getIOTransfer は、指定の入力から出力への閉ループ応答を抽出します。一般に、systune で調整した制御システムの検証には getIOTransfergetLoopTransfer が有用です。

また、viewGoal を使用すると、調整後の制御システムの応答を調整要件 Rtrack および Rreject と直接比較できます。

viewGoal([Rtrack,Rreject],CL)

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Tracking error, Max error, Effective bound. Axes object 2 contains 2 objects of type line. These objects represent Principal gains, Max gain, Effective bound.

カスケード制御システムを設定値追従および外乱の抑制の要件を満たすように調整します。これらの要件には、内側と外側のループの安定余裕に関する厳密な制約が適用されます。

次の図のカスケード制御システムには、調整可能なコントローラーが 2 つ含まれています。内側のループ用の PI コントローラー C2 と、外側のループ用の PID コントローラー C1 です。

ブロック x1 および x2 で解析ポイントの位置をマークしています。それらの位置で、システムの調整の要件を指定するために、ループを開いたり信号を加えたりできます。

この制御システムの自由パラメーターを次の要件を満たすように調整します。

  • 出力信号 y1 は応答時間 5 秒および定常偏差 1% で r の基準信号に追従。

  • x2 において加えられた外乱を出力 y1 において係数 10 で抑制。

これらの調整要件に、両方のループの安定余裕に関する厳密な制約を適用します。

コントローラーを表す調整可能な制御設計ブロックと、プラントを表す数値 LTI モデルを作成します。さらに、各フィードバック ループの対象のポイントをマークする AnalysisPoint ブロックを作成します。

G2 = zpk([],-2,3);
G1 = zpk([],[-1 -1 -1],10);

C20 = tunablePID('C2','pi');
C10 = tunablePID('C1','pid');

X1 = AnalysisPoint('X1');
X2 = AnalysisPoint('X2');

これらのコンポーネントを接続して全体の閉ループ制御システムのモデルを作成します。

InnerLoop = feedback(X2*G2*C20,1);
CL0 = feedback(G1*InnerLoop*C10,X1);
CL0.InputName = 'r';
CL0.OutputName = 'y';

CL0 は調整可能な genss モデルです。入力チャネルと出力チャネルの名前を指定すると、システムの調整要件を指定する際に識別できるようになります。

設定値追従および外乱の抑制の調整要件を指定します。

Rtrack = TuningGoal.Tracking('r','y',5,0.01);
Rreject = TuningGoal.Gain('X2','y',0.1);

TuningGoal.Tracking 要件は、'y' の信号が応答時間 5 秒、追従誤差 1% で 'r' の信号に追従するよう指定しています。

TuningGoal.Gain 要件は、AnalysisPoint ブロック X2 に関連付けられた暗黙的な入力からのゲインを出力 'y' に制限しています (AnalysisPointを参照)。このゲインを 1 未満の値に制限することで、X2 において加えられた外乱が出力で必ず抑制されます。

ゲイン余裕と位相余裕の調整要件を指定します。

RmargOut = TuningGoal.Margins('X1',18,60);
RmargIn = TuningGoal.Margins('X2',18,60);
RmargIn.Openings = 'X1';

RmargOut では、最小ゲイン余裕 18 dB および最小位相余裕 60 度が適用されます。X1 を指定すると、その要件が外側のループに適用されます。同様に、RmargIn では、X2 で識別される内側のループに同じ要件が適用されています。必ず外側のループが開いた状態で内側のループの余裕が評価されるようにするには、外側のループの解析ポイントの位置 X1RmargIn.Openings に含めます。

安定余裕の厳密な制約の下で、追従と外乱の抑制の柔軟な要件を満たすように制御システムを調整します。

SoftReqs = [Rtrack,Rreject];
HardReqs = [RmargIn,RmargOut];
[CL,fSoft,gHard] = systune(CL0,SoftReqs,HardReqs);
Final: Soft = 1.13, Hard = 0.97724, Iterations = 112

systune はそれぞれの調整要件を、柔軟な制約では f、厳密な制約では g という正規化されたスカラー値に変換します。このコマンドは、それぞれの g < 1 という制約の下で、f の値が最も小さくなるように CL0 の調整可能なパラメーターを調整します。

表示される Hard の値は、gHard の最小化された g の値のうちで最大の値です。この値が 1 未満であり、両方の厳密な制約を満たしていることを示しています。

調整した制御システムの安定余裕の要件について検証します。

figure;
viewGoal(HardReqs,CL)

Figure contains 4 axes objects. Axes object 1 with ylabel Gain margin (dB) contains an object of type line. These objects represent Required margins, Stability margins. Axes object 2 with ylabel Phase margin (deg) contains an object of type line. These objects represent Required margins, Stability margins, Tuned lower bound. Axes object 3 with ylabel Gain margin (dB) contains an object of type line. These objects represent Required margins, Stability margins. Axes object 4 with ylabel Phase margin (deg) contains an object of type line. These objects represent Required margins, Stability margins, Tuned lower bound.

viewGoal のプロットにより、調整後の制御システムで、両方のループに対する安定余裕の要件がすべての周波数で満たされていることが確認されます。青の線は、最適化の計算で使用される余裕を表し、調整後の制御システムの実際の余裕の上限となります。

'r' から 'y' へのステップ応答を調べて、調整後の制御システムが追従要件を満たすかどうかを調べます。

figure;
stepplot(CL,20)

Figure contains an axes object. The axes object with title From: r To: y contains an object of type line. This object represents CL.

ステップ プロットから、調整後の制御システム CL では出力が入力に追従しているものの、応答は目標よりも若干遅く、追従誤差は目標よりも大きい可能性のあることがわかります。詳細を確認するために、viewGoal を使用して追従要件を直接調べます。

figure;
viewGoal(Rtrack,CL)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Tracking error, Max error, Effective bound.

実際の追従誤差は 1 ~ 10 rad/s で影付きの領域に入っており、この状態で要件を満たしていないことを示しています。そのため、調整後の制御システムは、安定余裕の厳密な制約の下では柔軟な追従要件を満たしません。目的のパフォーマンスを達成するには、必要に応じて、いずれかの要件を緩和するか、1 つ以上の厳密な制約を柔軟な制約に変換します。

入力引数

すべて折りたたむ

調整する制御システム。調整可能なパラメーターをもつ一般化状態空間 (genss) モデルまたはモデルの配列として指定します。CL0 を構築するには、次を行います。

  1. 制御システムの調整可能な要素をパラメーター化します。事前定義された tunablePIDtunableGaintunableTF などの構造体を使用できます。あるいは、基本的な調整可能なパラメーター (realp) から独自の構造体を作成することもできます。

  2. 固定コンポーネントと調整可能なコンポーネントの相互接続として制御システム全体の閉ループ モデルを作成します。これを行うには、feedbackconnect などのモデル相互接続コマンドを使用します。調整要件を指定して評価する対象の信号を追加でマークするには AnalysisPoint ブロックを使用します。

調整するモデルの作成の詳細については、MATLAB でモデル化された制御システムを調整するための設定を参照してください。

一連のプラント モデルに対する制御システムのロバスト調整を行う場合は (Robust Control Toolbox™ が必要)、同じ調整可能なパラメーターをもつ調整可能な genss モデルの配列を指定します。コントローラーをパラメーターの不確かさに対してロバストにするには、ureal (Robust Control Toolbox) または uss (Robust Control Toolbox) で定義された不確かな実数パラメーターをもつモデルを使用します。この場合、CL0 は、調整可能な制御設計ブロックと不確かな制御設計ブロックの両方を含む genss モデルになります。ロバスト調整の詳細については、Robust Tuning Approaches (Robust Control Toolbox)を参照してください。

制御システムの調整の柔軟な調整目標 (目的)。TuningGoal オブジェクトのベクトルとして指定します。これらのオブジェクトは、TuningGoal.TrackingTuningGoal.StepTrackingTuningGoal.Margins などの設計要件を取得します。

systune は、柔軟な調整目標が最も小さくなるように制御システムの調整可能なパラメーターを調整します。この調整においては、厳密な調整目標 (ある場合) を満たすことが条件になります。

使用可能な調整目標の詳細については、調整目標を参照してください。

制御システムの調整の厳密な調整目標 (制約)。TuningGoal オブジェクトのベクトルとして指定します。これらのオブジェクトは、TuningGoal.TrackingTuningGoal.StepTrackingTuningGoal.Margins などの設計要件を取得します。

systune は、厳密な調整目標のそれぞれを正規化されたスカラー値に変換します。その後、systune は、それらの正規化された値が最も小さくなるように自由パラメーターを最適化します。厳密な目標は、正規化された値が 1 未満であれば達成になります。

使用可能な調整目標の詳細については、調整目標を参照してください。

調整アルゴリズムのオプション。systuneOptions で作成するオプション セットとして指定します。使用できるオプションは、次のとおりです。

  • 追加の最適化の実行回数。各最適化は自由パラメーターの乱数の初期値から開始されます。

  • 最適化を終了する許容誤差。

  • 並行処理使用のフラグ。

使用可能なすべてのオプションの詳細については、systuneOptions のリファレンス ページを参照してください。

出力引数

すべて折りたたむ

調整された制御システム。一般化状態空間 (genss) モデルとして返されます。このモデルには、CL0 と同じ種類の調整可能な要素 (制御設計ブロック) が同じ数だけ含まれます。それらの要素の現在の値が調整済みのパラメーターです。調整された要素の値にアクセスするには、getBlockValue または showTunable を使用します。

systune の入力引数 CL0 として、調整する制御システム モデルの配列を指定した場合は、すべてのモデルのパラメーターが同時に調整されます。この場合、CL は、調整済みの genss モデルの配列になります。詳細については、Robust Tuning Approaches (Robust Control Toolbox)を参照してください。

柔軟な制約を最もよく達成した値。ベクトルとして返されます。systune は柔軟な要件を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、厳密な制約に従って関数が最小化されるようにパラメーターを調整します (アルゴリズムを参照)。fSoft には、柔軟な制約のそれぞれについて最もよく達成した値が含まれます。これらの値は、SoftReqs で指定される制約と同じ順序で fSoft に表示されます。fSoft の値が意味をもつのは、厳密な制約を満たす場合のみです。

厳密な制約を最もよく達成した値。ベクトルとして返されます。systune は厳密な要件を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、これらの値が 1 より小さくなるようにパラメーターを調整します (アルゴリズムを参照)。gHard には、厳密な制約のそれぞれについて最もよく達成した値が含まれます。これらの値は、HardReqs で指定される制約と同じ順序で gHard に表示されます。厳密な制約は、すべての値が 1 未満であれば達成になります。

各最適化実行の詳細情報。データ構造体として返されます。次の表は、info のフィールドについてまとめたものです。

フィールド
Run

スカラーとして返される実行番号。systuneOptionsRandomStart オプションを使用して複数の最適化を実行する場合、info は構造体配列で、info.Run はインデックスです。

Iterations

実行中に行われる反復の回数。スカラーとして返されます。RandomStart を使用する場合、info.Iterations(j) は j 回目の実行で終了までに行われる反復の数です。

f

全体で最善の柔軟な制約値。スカラーとして返されます。systune は柔軟な調整目標を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、厳密な目標に従って関数が最小化されるようにパラメーターを調整します (アルゴリズムを参照)。info.f は最後の反復での柔軟な目標の最大値です。この値は、厳密な目標が満たされる場合にのみ意味があります。この値が 1 より小さい場合、柔軟な目標も達成されます。

g

全体で最善の厳密な制約値。スカラーとして返されます。systune は厳密な調整目標を制御システムの自由パラメーターの関数に変換します。次にこのコマンドは、これらの値が 1 より小さくなるようにパラメーターを調整します (アルゴリズムを参照)。info.g は、最終の反復での最大の厳密な目標値です。この値が 1 より小さい場合、厳密な目標は満たされています。

x

調整されたパラメーター値。ベクトルとして返されます。このベクトルには、実行の最後での調整可能なパラメーターの値が含まれています。info.x には、ループ スケーリングなどの追加の変数 (systune で使用される場合) の値も含まれている場合があります (info.LoopScaling を参照)。

MinDecay

調整されたシステム ダイナミクスの最小 decay 率。2 要素の行ベクトルとして返されます。

info.MinDecay(1) は、閉ループ極の最小 decay 率です。

info.MinDecay(2) は、安定性制約をもつ調整されたブロックのダイナミクスの最小 decay 率です。安定ダイナミクスと decay 率の詳細については、systuneOptionsMinDecay オプションを参照してください。

fSoft

個々の柔軟な制約値。ベクトルとして返されます。systune はそれぞれの柔軟な調整目標を、制御システムの自由パラメーターの関数である正規化された値に変換します。次にこのコマンドは、厳密な目標に従って値が最小化されるようにパラメーターを調整します (アルゴリズムを参照)。info.fSoft には、各実行終了時における柔軟な目標の個々の値が含まれます。これらの値は、systune への入力引数 SoftReqs で目標を指定するのと同じ順序で fSoft に出現します。

gHard

個々の厳密な制約値。ベクトルとして返されます。systune はそれぞれの厳密な調整目標を、制御システムの自由パラメーターの関数である正規化された値に変換します。次にこのコマンドは、それらの値を最小化するようにパラメーターを調整します。厳密な目標は、その値が 1 よりも小さい場合に満たされます (アルゴリズムを参照)。info.gHard には、各実行終了時における厳密な目標の個々の値が含まれます。これらの値は、systune への入力引数 HardReqs で目標を指定するのと同じ順序で gHard に出現します。

Blocks

調整された制御システムにおける調整可能ブロックおよびパラメーターの調整後の値。構造体として返され、そのフィールドは調整可能な要素の名前、値は対応する調整後の値です。

RandomStart オプションを正の値に設定して複数回の実行を行う場合、このフィールドを使用して、制御システムのパフォーマンスを他の実行の結果と検証できます。たとえば、次のコードを使用して、j 回目の実行からの調整後の値を適用します。

CLj = setBlockValue(CL0,info(j).Blocks)

LoopScaling

MIMO 調整要件の評価に最適な対角スケーリング。状態空間モデルとして返されます。

マルチループ制御システムに適用された場合、開ループ応答を含む調整目標は、適用対象のループ伝達関数のスケーリングに影響を受けることがあります。これにより、適切な最適化結果が得られない場合があります。systune はスケーリングに関する問題を自動的に修正し、info.LoopScaling の状態空間モデルとして最適な対角スケーリング行列 D を返します。

D の各対角要素に関連付けられたループ チャネルは info.LoopScaling.InputName にリストされます。スケーリングされたループ伝達は D\L*D です。ここで、Linfo.LoopScaling.InputName の位置で測定された開ループ伝達です。

このようなループ スケーリングにより影響を受ける調整目標には、次のものがあります。

  • TuningGoal.LoopShape

  • TuningGoal.MinLoopGain および TuningGoal.MaxLoopGain

  • TuningGoal.Sensitivity

  • TuningGoal.Rejection

  • TuningGoal.Margins

info には次のフィールドも含まれています。そのエントリは、不確かさをもつ制御システムのロバスト調整のために systune を使用する場合に意味をもちます。

フィールド
wcPert

不確かさをもつパラメーターの最悪の組み合わせ。構造体配列として返されます 各構造体には不確かさをもつ一連のパラメーター値が含まれています。パフォーマンスが最悪の摂動がまずリストされます。

wcf

最悪の柔軟な目標値。スカラーとして返されます。この値は、調整後のコントローラーを使用している際の、不確かさの範囲における最大の柔軟な目標値 (f) です。

wcg

最悪の厳密な目標値。スカラーとして返されます。この値は、調整後のコントローラーを使用している際の、不確かさの範囲における最大の厳密な目標値 (g) です。

wcDecay

調整コントローラーを使用している際の、不確かさの範囲における最小の閉ループ decay 率。スカラーとして返されます。正の値はロバストな安定性を示します。安定ダイナミクスと decay 率の詳細については、systuneOptionsMinDecay オプションを参照してください。

アルゴリズム

x は、調整する制御システムの調整可能パラメーターのベクトルです。systune は、柔軟な調整要件および厳密な調整要件である SoftReqs(i)HardReqs(j) をそれぞれ、正規化された値 fi(x) と gj(x) に変換します。その後、systune が制約付きの最小化問題を解きます。

maxjgj(x)<1 を条件として、xmin<x<xmax に対して maxifi(x) を最小化します。

xmin と xmax は、制御システムの自由パラメーターの最小値と最大値です。

柔軟な調整目標と厳密な調整目標の両方を使用する場合、ソフトウェアは、次の形式をもつ一連の制約なしの部分問題を解決することにより、この最適化問題にアプローチします。

minxmax(αf(x),g(x)).

ソフトウェアは乗算器 α を調整して、部分問題の解決が元の制約付き最適化問題の解決へと収束するようにします。

systune は、値が最小化問題の最良解となるよう調整されたパラメーターをもつ制御システムを返します。systune はまた、fi(x) と gj(x) の最善の値を、それぞれ fSoft および gHard として返します。

各タイプの制約に対する関数 fi(x) および gj(x) の詳細は、それぞれの TuningGoal 要件オブジェクトのリファレンス ページを参照してください。

systune は、[1][2][3][4]で記述されている滑らかでない最適化アルゴリズムを使用します。

systune は、[5]のアルゴリズムと SLICOT ライブラリの構造維持固有値ソルバーを使用して、H ノルムを計算します。SLICOT ライブラリの詳細については、https://github.com/SLICOTを参照してください。

代替機能

アプリ

制御システム調整器アプリには、制御システム調整用のグラフィカル インターフェイスがあります。

参照

[1] Apkarian, P. and D. Noll, "Nonsmooth H-infinity Synthesis," IEEE Transactions on Automatic Control, Vol. 51, No. 1, (2006), pp. 71–86.

[2] Apkarian, P. and D. Noll, "Nonsmooth Optimization for Multiband Frequency-Domain Control Design," Automatica, 43 (2007), pp. 724–731.

[3] Apkarian, P., P. Gahinet, and C. Buhr, "Multi-model, multi-objective tuning of fixed-structure controllers," Proceedings ECC (2014), pp. 856–861.

[4] Apkarian, P., M.-N. Dao, and D. Noll, "Parametric Robust Structured Control Design," IEEE Transactions on Automatic Control, 2015.

[5] Bruinsma, N.A., and M. Steinbuch. "A Fast Algorithm to Compute the H Norm of a Transfer Function Matrix." Systems & Control Letters, 14, no.4 (April 1990): 287–93.

拡張機能

バージョン履歴

R2016a で導入

すべて展開する