ドキュメンテーション

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

looptune

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

構文

  • [st,gam,info] = looptune(st0,controls,measurements,wc)
  • [st,gam,info] = looptune(st0,controls,measurements,wc,req1,...,reqN)
  • [st,gam,info] = looptune(___,opt)

説明

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

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

  • 性能 — WC より低い周波数における積分アクション

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

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

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

このコマンドには Robust Control Toolbox™ のライセンスが必要です。

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

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

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

すべて折りたたむ

指定の帯域幅を達成するためのコントローラーの調整

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

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

open_system('rct_engine_speed');
st0 = slTuner('rct_engine_speed','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.961, Iterations = 10
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.000653, Ki = 0.00282, Kd = 0.0021, Tf = 46.7
 
Name: PID_Controller
Continuous-time PIDF controller in parallel form.

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

関連する例

入力引数

すべて折りたたむ

st0 — Simulink でモデル化された制御システムを調整するためのインターフェイスslTuner インターフェイス

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

controls — コントローラーの出力文字列 | 文字列のセル配列

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

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

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

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

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

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

measurements — 測定文字列 | 文字列のセル配列

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

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

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

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

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

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

wc — ターゲット交差領域[wcmin,wcmax] | 正のスカラー

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

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

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

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

req1,...,reqN — 設計目標TuningGoal オブジェクト

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

指定できる設計目標の完全なリストは、「Tuning Goals」を参照してください。

opt — 調整アルゴリズムのオプションlooptuneOptions を使用して作成されたオプション セット

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

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

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

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

  • 並行処理使用のフラグ

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

出力引数

すべて折りたたむ

st — 調整インターフェイスslTuner インターフェイス

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

gam — 調整のすべての制約条件に対する充足度を示すパラメーター。スカラー

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

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

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

info — 各最適化実行の詳細情報構造体

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

Di,Do — 最適な入力スケーリングと出力スケーリング状態空間モデル

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

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

Specs — 調整に使用される設計目標TuningGoal 要件オブジェクトのベクトル

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

Runs — 各最適化実行の詳細情報構造体

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

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

詳細

すべて折りたたむ

調整ブロック

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

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

slTuner インターフェイスの作成時に、調整ブロックを指定しなければなりません (例: C1、C2)。

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

addBlock および removeBlock により、調整ブロックのリストを変更できます。setBlockParamgetBlockValuewriteBlockValue などのコマンドを使用して、調整ブロックを操作します。

アルゴリズム

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

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

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

参照

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

この情報は役に立ちましたか?