このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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)
が同じ結果を生成するように引数のセットを生成します。これに加え、このコマンドを使用すると systune
が looptune
に関して提供する柔軟性を利用できるようになります。たとえば、looptune
では MIMO フィードバック ループのすべてのチャネルを同じターゲットの帯域幅に調整する必要があります。systune
に変換すると、制御システムで各ループに別の交差周波数およびループ整形を指定できます。また、looptune
はすべての調整要件を柔軟な要件として処理し、それらを最適化しますが、あらゆる制約を厳密に満たす必要はありません。systune
に変換すると、一部の調整要件は厳密な制約として強制的に適用し、それ以外は柔軟な要件として処理できます。
また、このコマンドを使用して、looptune
で適用された調整要件を調査することもできます。
例
looptune 問題の systune 問題への変換
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
の同等の調整の問題を作成できます。
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
内のループ帯域幅に調整する代わりに、ループごとに異なる交差周波数を指定できます。また、req1
と req2
の調整要件を厳密な制約として適用し、他の要件を柔軟な要件として追加することもできます。
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
は、ターゲット交差周波数の範囲 wc
を TuningGoal.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
ではなく、入力ベクトル HardReqs
で systune
にそれらを渡します。
入力引数
出力引数
st0
— Simulink でモデル化された制御システムを調整するためのインターフェイス
slTuner
インターフェイス
Simulink でモデル化されている制御システムの調整のためのインターフェイス。slTuner
インターフェイスとして返されます。st0
は、looptuneSetup
への入力として用いる slTuner
インターフェイスと同一です。
SoftReqs
— 柔軟な調整要件
TuningGoal
要件オブジェクトのベクトル
systune
による調整時の柔軟な調整要件。TuningGoal
要件オブジェクトのベクトルとして返されます。
looptune
は、その暗黙的な調整要件のほとんどを柔軟な調整要件で表します。たとえば、指定されたターゲット ループの帯域幅を、ターゲット周波数での積分ゲイン プロファイルおよび交差を指定した TuningGoal.LoopShape
要件で表します。また、looptune
は指定したすべての明示的な要件 (Req1,...ReqN
) を柔軟な要件として処理します。SoftReqs
には、これらすべての調整要件が含まれます。
HardReqs
— 厳密な調整要件
TuningGoal
要件オブジェクトのベクトル
systune
による調整時の厳密な調整要件 (制約)。TuningGoal
要件オブジェクトのベクトルとして返されます。
looptune
は、ほとんどの調整要件を柔軟な要件として処理するため、通常、HardReqs
は空です。ただし、looptuneOptions
セット loopopt
の既定の MaxFrequency
オプションを変更する場合、この要件は厳密な TuningGoal.Poles
制約として示されます。
バージョン履歴
R2014a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)