Main Content

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

looptuneSetup

slTuner インターフェイスを使用して looptune の調整設定を systune の調整設定として構築

説明

[st0,SoftReqs,HardReqs,sysopt] = looptuneSetup(looptuneInputs) は、looptune の調整設定を、systune の同等の調整設定に変換します。引数 looptuneInputs は、調整設定を指定する looptune の一連の入力引数です。以下に例を示します。

[st0,SoftReqs,HardReqs,sysopt] = looptuneSetup(st0,wc,Req1,Req2,loopopt)
これは、looptune(st0,wc,Req1,Req2,loopopt)systune(st0,SoftReqs,HardReqs,sysopt) が同じ結果を生成するように引数のセットを生成します。

これに加え、このコマンドを使用すると systunelooptune に関して提供する柔軟性を利用できるようになります。たとえば、looptune では MIMO フィードバック ループのすべてのチャネルを同じターゲットの帯域幅に調整する必要があります。systune に変換すると、制御システムで各ループに別の交差周波数およびループ整形を指定できます。また、looptune はすべての調整要件を柔軟な要件として処理し、それらを最適化しますが、あらゆる制約を厳密に満たす必要はありません。systune に変換すると、一部の調整要件は厳密な制約として強制的に適用し、それ以外は柔軟な要件として処理できます。

また、このコマンドを使用して、looptune で適用された調整要件を調査することもできます。

すべて折りたたむ

Simulink® モデルを調整するための looptune の入力のセットを、systune の同等の入力のセットに変換します。

looptune での調整用に、slTuner インターフェイス st0 を作成し、設定しているとします。また、looptune を使用して st0 で定義されたフィードバック ループを wc = [wmin,wmax] の帯域幅内に調整しているとします。これらの変数を、systune を使用して詳細な調整ができる形式に変換します。

[st0,SoftReqs,HardReqs,sysopt] = looptuneSetup(st0,wc,controls,measurements);

このコマンドは、同等の systune コマンド systune(st0,SoftReqs,HardReqs,sysopt) の閉ループ システムおよび調整要件を返します。配列 SoftReqs および HardReqs には、looptune で暗黙的に課せられた調整要件が含まれます。これらの要件により、looptune のターゲットの帯域幅および既定の安定余裕が適用されます。

looptune でシステムを調整する際に追加の調整要件を使用している場合、それらを looptuneSetup の入力リストに追加します。たとえば、TuningGoal.Tracking 要件 Req1 および TuningGoal.Rejection 要件 Req2 を使用したとします。また、looptuneOptions を使用して looptune のアルゴリズム オプションを設定したとします。これらの要件およびオプションを同等の systune コマンドに組み込みます。

[st0,SoftReqs,HardReqs,sysopt] = looptuneSetup(st0,wc,Req1,Req2,loopopt);

その結果の引数により、systune の同等の調整の問題を作成できます。

Simulink® モデル rct_distillation の制御システムを looptune での調整用に設定します。その後、その設定を systune 問題に変換し、結果の引数を調べます。結果には、looptune での調整時に暗黙的に適用された調整要件が反映されます。

Simulink モデルに対する slTuner インターフェイスを作成し、調整対象とするブロックを指定します。プラントとコントローラーの区分を定義する解析ポイントを追加することで、looptune で調整するインターフェイスを設定します。また、調整要件を課すために必要な解析ポイントを追加します。

open_system('rct_distillation')

tuned_blocks = {'PI_L','PI_V','DM'};
st0 = slTuner('rct_distillation',tuned_blocks);

addPoint(st0,{'L','V','y','r','dL','dV'});

これでこのシステムは、指定した調整目標を使用して looptune で調整できるようになりました。たとえば、ターゲットの帯域幅の範囲を指定します。システムの両方のチャネルおよび外乱の抑制の要件で設定値追従を課す調整要件を作成します。

wc = [0.1,0.5];
req1 = TuningGoal.Tracking('r','y',15,0.001,1);
max_disturbance_gain = frd([0.05 5 5],[0.001 0.1 10],'TimeUnit','min');
req2 = TuningGoal.Gain({'dL','dV'},'y',max_disturbance_gain);

controls = {'L','V'};
measurement = 'y';

[st,gam,info] = looptune(st0,controls,measurement,wc,req1,req2);
Final: Peak gain = 1.03, Iterations = 70

looptune により、システムはこれらの要件に正常に調整されます。ただし、systune に切り替えると、さらに柔軟な方法で問題を構成することができます。たとえば、両方のチャネルを wc 内のループ帯域幅に調整する代わりに、ループごとに異なる交差周波数を指定できます。また、req1req2 の調整要件を厳密な制約として適用し、他の要件を柔軟な要件として追加することもできます。

looptune 入力引数を systune の一連の入力引数に変換します。

[st0,SoftReqs,HardReqs,sysopt] = looptuneSetup(st0,controls,measurement,wc,req1,req2);

このコマンドは引数のセットを返しますが、それらを systune に渡すと looptune での調整と同等の結果になります。つまり、次のコマンドは looptune コマンドと等価です。

[st,fsoft,ghard,info] = systune(st0,SoftReqs,HardReqs,sysopt);
Final: Peak gain = 1.03, Iterations = 70

looptuneSetup によって返された調整要件を調べます。looptune でこの制御システムを調整する場合、すべての要件は柔軟な要件として処理されます。そのため、HardReqs は空になります。SoftReqs は、TuningGoal 要件の配列です。これらの要件は、全体として looptune コマンドの帯域幅および余裕を適用し、さらに指定した追加の要件も適用します。

SoftReqs
SoftReqs = 

  5x1 heterogeneous SystemLevel (LoopShape, Tracking, Gain, ...) array with properties:

    Models
    Openings
    Name

たとえば、SoftReqs の最初のエントリを調べます。

SoftReqs(1)
ans = 

  LoopShape with properties:

       LoopGain: [1x1 zpk]
       CrossTol: 0.3495
          Focus: [0 Inf]
      Stabilize: 1
    LoopScaling: 'on'
       Location: {'y'}
         Models: NaN
       Openings: {0x1 cell}
           Name: 'Open loop GC'

looptuneSetup は、ターゲット交差周波数の範囲 wcTuningGoal.LoopShape 要件として表します。この要件により、開ループ ゲインのプロファイルは、wc で決定される交差周波数および交差に対する許容誤差 (CrossTol) をもつ、LoopGain プロパティに保存されたループ整形に制限されます。このループ整形を調べます。

bodemag(SoftReqs(1).LoopGain,logspace(-2,0)),grid

ターゲット交差は、wc で指定された 0.1 ~ 0.5 rad/s の交差をもつ積分ゲイン プロファイルとして表されます。別のループ整形を指定する場合は、この TuningGoal.LoopShape 要件を変更してから systune に渡すことができます。

looptune でも、looptuneOptions を使用して変更できる既定の安定余裕に調整を行います。systune では、安定余裕は TuningGoal.Margins 要件を使用して指定します。ここでは、looptuneSetup は柔軟な TuningGoal.Margins 要件として既定の安全余裕を表しています。たとえば、SoftReqs の 4 番目のエントリを調べます。

SoftReqs(4)
ans = 

  Margins with properties:

      GainMargin: 7.6000
     PhaseMargin: 45
    ScalingOrder: 0
           Focus: [0 Inf]
        Location: {2x1 cell}
          Models: NaN
        Openings: {0x1 cell}
            Name: 'Margins at plant inputs'

SoftReqs の最後のエントリは、プラント出力で余裕を制約している TuningGoal.Margins 要件と似ています。looptune は、これらの余裕を柔軟な要件として適用します。これらを厳密な制約に変換する場合は、入力ベクトル SoftReqs ではなく、入力ベクトル HardReqssystune にそれらを渡します。

入力引数

すべて折りたたむ

looptune での調整用に設定された制御システムと要件。有効な looptune 入力シーケンスとして指定します。有効な looptune の入力引数列の詳細については、looptune のリファレンス ページを参照してください。

出力引数

すべて折りたたむ

Simulink でモデル化されている制御システムの調整のためのインターフェイス。slTuner インターフェイスとして返されます。st0 は、looptuneSetup への入力として用いる slTuner インターフェイスと同一です。

systune による調整時の柔軟な調整要件。TuningGoal 要件オブジェクトのベクトルとして返されます。

looptune は、その暗黙的な調整要件のほとんどを柔軟な調整要件で表します。たとえば、指定されたターゲット ループの帯域幅を、ターゲット周波数での積分ゲイン プロファイルおよび交差を指定した TuningGoal.LoopShape 要件で表します。また、looptune は指定したすべての明示的な要件 (Req1,...ReqN) を柔軟な要件として処理します。SoftReqs には、これらすべての調整要件が含まれます。

systune による調整時の厳密な調整要件 (制約)。TuningGoal 要件オブジェクトのベクトルとして返されます。

looptune は、ほとんどの調整要件を柔軟な要件として処理するため、通常、HardReqs は空です。ただし、looptuneOptions セット loopopt の既定の MaxFrequency オプションを変更する場合、この要件は厳密な TuningGoal.Poles 制約として示されます。

systune 調整用のアルゴリズム オプション。systuneOptions オプション セットとして返されます。

looptuneOptions セット loopopt のオプションの一部は、HardReqs または SoftReqs で返される厳密な要件または柔軟な要件に変換されます。その他のオプションは、systuneOptions セットのオプションに対応します。

バージョン履歴

R2014a で導入