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

looptune

固定構造フィードバック ループの調整

構文

[G,C,gam] = looptune(G0,C0,wc)
[G,C,gam] = looptune(G0,C0,wc,Req1,...,ReqN)
[G,C,gam] = looptune(...,options)
[G,C,gam,info] = looptune(...)

説明

[G,C,gam] = looptune(G0,C0,wc) は次のフィードバック ループを調整します。

次の既定の要件を満たすように調整します。

  • 帯域幅 — 各ループが周波数範囲 wc に収まるゲイン交差周波数

  • 性能 — WC より低い周波数における積分動作

  • ロバスト性 — wc を超える周波数における適切な安定余裕とゲインのロールオフ

調整可能な genss モデル C0 は、コントローラーの構造体、パラメーターおよび初期値を指定します。モデル G0 はプラントを指定します。G0数値 LTI モデルにするか、調整可能な genss モデル (プラントとコントローラーを同時調整する場合) にすることができます。センサー信号 y (測定) とアクチュエータ信号 u (制御) は、プラントとコントローラーの境界を定義します。

メモ

looptune で Simulink® モデルを調整する場合は、slTuner を使用して Simulink モデルに対するインターフェイスを作成します。その後、slTunerlooptune を使って制御システムを調整できるようになります (Simulink Control Design™ が必要)。

[G,C,gam] = looptune(G0,C0,wc,Req1,...,ReqN) は、1 つ以上の調整目標オブジェクト Req1,...,ReqN によって指定された追加の設計要件を満たすようフィードバック ループを調整します。明示的なターゲット交差周波数および既定の性能とロバスト性の要件ではなく、Req1,...,ReqN によって指定されたこの要件を使用する場合は、wc を省略します。

[G,C,gam] = looptune(...,options) は、さらに、ターゲット ゲイン余裕、ターゲット位相余裕、調整アルゴリズムの計算オプションなどのオプションを指定します。

[G,C,gam,info] = looptune(...) は、調整結果に関する追加情報を含む構造体 info を返します。loopview コマンドで info を使用して調整制約を可視化し、調整された設計を検証します。

入力引数

G0

調整する制御システム内のプラントを表す数値 LTI モデルまたは調整可能な genss モデル。

プラントは、出力がセンサー信号 (測定) であり、入力がアクチュエータ信号 (制御) である制御システムの一部です。個々の数値コンポーネントまたは調整可能なコンポーネントから G0 を作成するには、connect を使用します。

C0

コントローラーを表す一般化 LTI モデルC0 は、コントローラーの構造体、パラメーターおよび初期値を指定します。

コントローラーは、センサー信号 (測定) を入力として受け取り、アクチュエータ信号 (制御) を出力として生成する制御システムの一部です。制御設計ブロックと一般化 LTI モデルを使用して、コントローラーの調整可能なコンポーネントを表現します。個々の数値コンポーネントまたは調整可能なコンポーネントから C0 を作成するには、connect を使用します。

wc

ターゲット交差領域 [wcmin,wcmax] を指定するベクトル。looptune コマンドは、開ループ ゲインがターゲット交差領域内で 0 dB に交差するよう、制御システム内のすべてのループを調整しようと試みます。

スカラー wc はターゲット交差領域 [wc/2,2*wc] を指定します。

Req1,...,ReqN

設計要件を指定する TuningGoal.TrackingTuningGoal.GainTuningGoal.LoopShape などの 1 つ以上の TuningGoal オブジェクト。

options

looptuneOptions を使用して指定された looptune アルゴリズムのオプション セット。ターゲット ゲイン余裕やターゲット位相余裕などの使用可能なオプションの詳細については、looptuneOptions を参照してください。

出力引数

G

調整プラント。

G0 が数値 LTI モデルの場合、GG0 と同じです。

G0 が調整可能な genss モデルの場合、GG0 と同じ数およびタイプの制御設計ブロックをもつ genss モデルです。G の現在の値が調整プラントです。

C

調整コントローラー。CC0 と同じ数およびタイプの制御設計ブロックをもつ genss モデルです。C の現在の値が調整コントローラーです。

gam

調整のすべての制約条件に対する充足度を示すパラメーター。値が gam <= 1 の場合は、すべての要件が満たされていることを示します。gam >> 1 の場合は、少なくとも 1 つの要件について満たしていないことを示します。loopview を使用して、調整結果を可視化し、満たしていない要件を特定します。

最良の結果を得るには、looptuneOptionsRandomStart オプションを使用して、最小化が複数回実行されるようにします。RandomStart に整数値 N > 0 を設定すると、looptune は、ランダムに選択したパラメーター値から始めて、最適化を N 回余分に実行します。それぞれの実行ごとに gam を検証すれば、設計要件を満たす最適化結果を特定するのに役立ちます。

info

調整結果を検証するためのデータ。構造体として返されます。info 内のデータを使用するには、コマンド loopview(G,C,info) を使用して調整制約を可視化し、調整された設計を検証します。

info には次の調整データが含まれます。

Di,Do

最適な入力スケーリングと出力スケーリング。状態空間モデルとして返されます。スケーリングされたプラントは Do\G*Di によって指定されます。

Specs

looptunesystune を呼び出して調整を行うために作成した設計要件 (アルゴリズムを参照)。TuningGoal 要件オブジェクトのベクトルとして返されます。

Runs

調整のために looptune によって呼び出されたときに systune で実行された各最適化実行の詳細情報 (アルゴリズムを参照)。データ構造体として返されます。

Runs の内容は、systune への呼び出しの info 出力です。Runs のフィールドの詳細については、systune のリファレンス ページにある info 出力引数の説明を参照してください。

次の図の制御システムを調整して、0.1 ~ 1 rad/min の交差を実現します。

2 行 2 列プラント G は次のように表されます。

G(s)=175s+1[87.886.4108.2109.6].

固定構造コントローラー C には 3 つの成分が含まれています。それは、2 行 2 列分離行列 D と 2 つの PI コントローラー PI_L および PI_V です。信号 ry および e は次元 2 のベクトル値の信号です。

プラントを表す数値モデルとコントローラーを表す調整可能なモデルを作成します。図のようにすべての入力と出力に名前を付けて、プラントとコントローラーを制御信号と測定信号によって相互接続する方法が looptune で認識されるようにします。

s = tf('s');
G = 1/(75*s+1)*[87.8 -86.4; 108.2 -109.6];
G.InputName = {'qL','qV'};
G.OutputName = 'y';

D = tunableGain('Decoupler',eye(2));
D.InputName = 'e';
D.OutputName = {'pL','pV'};
PI_L = tunablePID('PI_L','pi');
PI_L.InputName = 'pL';
PI_L.OutputName = 'qL';
PI_V = tunablePID('PI_V','pi'); 
PI_V.InputName = 'pV';
PI_V.OutputName = 'qV'; 
sum1 = sumblk('e = r - y',2);
C0 = connect(PI_L,PI_V,D,sum1,{'r','y'},{'qL','qV'});

wc = [0.1,1];
[G,C,gam,info] = looptune(G,C0,wc);

C は調整コントローラーで、この場合は C0 と同じタイプのブロックをもつ genss モデルです。

loopview を使用して調整結果を調べることができます。

アルゴリズム

looptune は、ターゲット帯域幅、性能要件、追加の設計要件を H 最適化問題として表現する重み関数に自動変換します。変換後、looptunesystune を使用して、H ノルムが最小となるように調整可能なパラメーターを最適化します。最適化アルゴリズムの詳細については、[1]を参照してください。

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

代替方法

looptune で Simulink モデルを調整する場合は、slTunerlooptune を参照してください (Simulink Control Design が必要)。

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

すべて展開する

R2016a での動作変更

参考文献

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

[2] Bruisma, N.A. and M. Steinbuch, "A Fast Algorithm to Compute the H-Norm of a Transfer Function Matrix," System Control Letters, 14 (1990), pp. 287-293.

拡張機能

R2016a で導入