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

systune

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

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

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

構文

[CL,fSoft] = systune(CL0,SoftReqs)
[CL,fSoft,gHard] = systune(CL0,SoftReqs,HardReqs)
[CL,fSoft,gHard] = systune(CL0,SoftReqs,HardReqs,options)
[CL,fSoft,gHard,info] = systune(___)

説明

[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 コントローラー と、外側のループ用の PID コントローラー です。

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

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

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

  • において加えられた外乱を において係数 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' の信号が 'r' の信号を追従し、応答時間は 10 秒、追従誤差は 1% でなければならないことを示しています。

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

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

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

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

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

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

stepplot(CL)

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

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

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

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

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

viewGoal([Rtrack,Rreject],CL)

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

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

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

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

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

  • において加えられた外乱を出力 において係数 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' の信号が 'r' の信号を追従し、応答時間は 5 秒、追従誤差は 1% でなければならないことを示しています。

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.9772, Iterations = 115
       Some closed-loop poles are marginally stable (decay rate near 1e-07)

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

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

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

figure;
viewGoal(HardReqs,CL)

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

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

figure;
stepplot(CL,20)

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

figure;
viewGoal(Rtrack,CL)

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

入力引数

すべて折りたたむ

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

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

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

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

一連のプラント モデルに対する制御システムのロバスト調整を行う場合は (Robust Control Toolbox™ が必要)、同じ調整可能なパラメーターをもつ調整可能な genss モデルの配列を指定します。コントローラーをパラメーターの不確かさに対してロバストにするには、ureal または uss で定義された不確かな実数パラメーターをもつモデルを使用します。この場合、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 のフィールドは、以下のとおりです。

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

スカラーとして返される、実行時の反復処理の合計回数。この値は、各実行で最適化が終了するまでの間に実行される反復の回数です。

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

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

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

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

ベクトルとして返される、閉ループ極の最小 decay 率。

既定では、調整されたシステムの閉ループの極配置は Re(p) < –10–7 を満たすよう制約されています。この制約を変更するには、systuneOptionsMinDecay オプションを使用します。

調整された制御システム CL における調整可能ブロックおよびパラメーターの調整後の値。構造体として返されます。getBlockValue または showBlockValue を使用して調整後のパラメーターの値にアクセスすることもできます。

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

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

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

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

調整コントローラーを使用している際の、不確かさの範囲における最大の柔軟な目標値 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。

調整コントローラーを使用している際の、不確かさの範囲における最大の厳密な目標値 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。

調整コントローラーを使用している際の、不確かさの範囲における最小の閉ループ減衰率 (不確かさをもつ制御システムのロバスト調整にのみ適用されます)。正の値はロバストな安定性を示します。詳細については、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 ライブラリの詳細については、http://slicot.org を参照してください。

代替機能

アプリ

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

互換性についての考慮事項

すべて展開する

R2016a での動作変更

参照

[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] Bruisma, N.A. and M. Steinbuch, "A Fast Algorithm to Compute the H-Norm of a Transfer Function Matrix," System Control Letters, Vol. 14, No, 4 (1990), pp. 287–293.

拡張機能

R2016a で導入