Main Content

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

looptune

slTuner インターフェイスを使用して Simulink の MIMO フィードバック ループを調整

説明

[st,gam,info] = looptune(st0,controls,measurements,wc) は、slTuner インターフェイス st0 に関連付けられている Simulink® モデルの制御システムの自由パラメーターを調整し、次の目標を達成します。

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

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

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

controlsmeasurements は、目標の適用対象となるコントローラーの出力信号と測定信号をそれぞれ指定します。st は更新された slTuner インターフェイスであり、gam は目標達成度を示し、info は各最適化実行の詳細を示します。

調整は、st0Ts プロパティで指定されるサンプル時間で実行されます。調整アルゴリズムの詳細については、アルゴリズムを参照してください。

[st,gam,info] = looptune(st0,controls,measurements,wc,req1,...,reqN) は、1 つ以上の調整目標オブジェクト req によって指定された追加の目標を満たすようフィードバック ループを調整します。wc に関連付けられている既定のループ整形目標を省略するには、wc を削除してください。安定余裕の目標は有効なまま維持される点に留意してください。

[st,gam,info] = looptune(___,opt) は、さらに、ターゲット ゲイン余裕、ターゲット位相余裕、実行回数、調整アルゴリズムの計算オプションなどのオプションを指定します。looptuneOptions を使用して opt を作成します。

optRandomStarts プロパティを使用して実行回数を複数回に指定している場合、looptune は、ターゲットの目的値 1 を達成するために必要な回数しか実行されません。すべての調整目標を正規化して、最大値が 1 のときにすべての設計目標が達成されたことを意味するようにしてください。

すべて折りたたむ

rct_engine_speed モデルの PID コントローラーを調整して、指定された帯域幅を達成します。

Simulink モデルを開きます。

mdl = 'rct_engine_speed';
open_system(mdl);

モデルの slTuner インターフェイスを作成します。

st0 = slTuner(mdl,'PID Controller');

PID コントローラーの出力 u を、解析ポイントとして st0 に追加します。

addPoint(st0,'u');

1 次の特性に基づくと、閉ループ応答が 5 秒未満で整定するためには交差周波数が 1 rad/s を超える必要があります。そのため、目標とする 0 dB 交差周波数として 1 rad/s を使用し、PID ループを調整します。

wc = 1;
st = looptune(st0,'u','Speed',wc);
Final: Peak gain = 0.979, Iterations = 4
Achieved target gain value TargetGain=1.

looptune の呼び出しでは、'u' が制御信号を指定し、'Speed' が測定信号を指定します。

調整後の応答と初期応答を比較します。

stepplot(getIOTransfer(st0,'Ref','Speed'),getIOTransfer(st,'Ref','Speed'));
legend('Initial','Speed');

調整ブロックの値を表示します。

showTunable(st)
Block 1: rct_engine_speed/PID Controller =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 0.00062, Ki = 0.00303, Kd = 0.000168, Tf = 0.01
 
Name: PID_Controller
Continuous-time PIDF controller in parallel form.

調整した値を Simulink モデルに書き戻すには、writeBlockValue を使用します。

入力引数

すべて折りたたむ

Simulink でモデル化された制御システムを調整するためのインターフェイス。slTuner インターフェイスとして指定します。

コントローラーの出力の名前。次のいずれかで指定します。

  • 文字ベクトル — st0 の解析ポイント 1 点の名前。

    名前全体もしくは st0 の他の解析ポイントから一意に該当ポイントを識別できる部分的な名前を指定できます。

    たとえば、'u' とします。

  • 文字ベクトルの cell 配列 — 複数の解析ポイント名。

    たとえば、{'u','y'} とします。

測定信号の名前。次のいずれかで指定します。

  • 文字ベクトル — st0 の解析ポイント 1 点の名前。

    名前全体もしくは st0 の他の解析ポイントから一意に該当ポイントを識別できる部分的な名前を指定できます。

    たとえば、'u' とします。

  • 文字ベクトルの cell 配列 — 複数の解析ポイント名。

    たとえば、{'u','y'} とします。

ターゲット交差領域。次のいずれかで指定します。

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

  • 正のスカラー — ターゲット交差領域を、[wc/10^0.1,wc*10^0.1] または wc +/- 0.1 decade で指定。

wc は、動作時間単位、つまりモデルの時間単位で指定します。

設計目標。1 つ以上の TuningGoal オブジェクトで指定します。

指定できる設計目標の完全なリストについては、調整目標を参照してください。

調整アルゴリズムのオプション。looptuneOptions を使用して作成されたオプション セットとして指定します。

使用できるオプションは、次のとおりです。

  • 自由パラメーターの乱数の初期値から始める、追加の最適化の実行回数

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

  • 並行処理使用のフラグ

  • ターゲット ゲイン余裕とターゲット位相余裕の指定

出力引数

すべて折りたたむ

調整インターフェイス。slTuner インターフェイスとして返されます。

調整のすべての制約条件に対する充足度を示すパラメーター。スカラーで返されます。

値が gam <= 1 の場合は、すべての目標が満たされていることを示しています。値が gam >> 1 の場合は、少なくとも 1 つの要件が満たされていないことを示します。loopview を使用して、調整結果を可視化し、達成されていない要件を特定します。

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

各最適化実行の詳細情報。次のフィールドをもつ構造体として返されます。

最適な入力スケーリングと出力スケーリング。状態空間モデルとして返されます。

スケーリングされたプラントは Do\G*Di によって指定されます。

調整に使用される設計目標。TuningGoal 要件オブジェクトのベクトルとして返されます。

各最適化実行の詳細情報。構造体として返されます。詳細については、アルゴリズムを参照してください。

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

詳細

すべて折りたたむ

調整ブロック

slTuner インターフェイスで使用される "調整ブロック" は、Simulink モデル内のブロックのうち、調整目標を満たすためにパラメーター調整を行うブロックを示します。ゲイン、伝達関数、状態空間モデルなどの線形要素を表現する Simulink ブロックは、ほとんどが調整可能です (調整がサポートされているブロックの完全なリストは、調整された Simulink ブロックをパラメーター化する方法を参照してください)。また、SubSystem ブロックや S-Function ブロックなど、より複雑なブロックも、等価の調整可能な線形モデルを指定することで調整可能です。

調整ブロックのパラメーターを調整するには、systune などの調整コマンドを使用します。

slTuner インターフェイスを作成する際に、調整ブロック (たとえば、C1C2) を指定しなければなりません。

st = slTuner('scdcascade',{'C1','C2'})

addBlock および removeBlock により、調整ブロックのリストを変更できます。

調整ブロックを対話的に操作するには、以下を使用します。

アルゴリズム

looptune は、ターゲット帯域幅、性能目標、追加の設計目標を H 最適化問題として表現する重み付け関数に自動変換します。変換後、looptunesystune を使用して、H ノルムが最小となるように調整可能なパラメーターを最適化します。

最適化アルゴリズムの詳細については、[1]を参照してください。

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

参照

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

[2] 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.

拡張機能

バージョン履歴

R2014a で導入