Simulink モデルに対する slTuner インターフェイスの作成と設定
この例では、Simulink® モデルに対する slTuner
インターフェイスを作成して設定する方法を説明します。slTuner
インターフェイスでは、調整可能として指定されたモデル内のブロックがパラメーター化され、systune
を使用してそれらを調整できるようになります。また、slTuner
インターフェイスでは Simulink モデルの線形化が生成されるため、線形化されたシステム応答を抽出して、調整された制御システムの解析と検証を行うこともできます。
この例では、回転翼航空機のマルチループ コントローラーである Simulink モデル rct_helico
を調整するための slTuner
インターフェイスを作成して設定します。モデルを開きます。
open_system('rct_helico');
制御システムは 2 つのフィードバック ループで構成されています。内側のループ (静的出力フィードバック) によって、安定増大とデカップリングを行います。外側のループ (PI コントローラー) によって、設定点の追従性能を達成します。
このモデルを調整し、次の制御目的を達成するとします。
設定点での
theta
、phi
、r
の変化を定常偏差ゼロ、指定した立ち上がり時間、最小限のオーバーシュート、最小限の相互干渉で追従。制御帯域幅を制限することで、考慮されていない高周波のローター ダイナミクスと測定ノイズに対処。
強力な多変数ゲイン余裕と位相余裕 (プラントの入出力におけるゲイン/位相の同時変化に対するロバスト性) を提供。
systune
コマンドを使うと、これらの設計要件を満たすようにコントローラー ブロック SOF
および PI コントローラーを同時に調整することができます。slTuner
インターフェイスがこの調整タスクを設定します。
slTuner
インターフェイスを作成します。
ST0 = slTuner('rct_helico',{'PI1','PI2','PI3','SOF'});
このコマンドによって slTuner
インターフェイスが初期化され、3 つの PI コントローラーおよび SOF
ブロックが調整可能に指定されます。調整可能な各ブロックは、そのタイプに応じて自動的にパラメーター化され、Simulink モデル内の値で初期化されます。
slTuner
インターフェイスを設定するには、設計要件に関連する任意の信号箇所を解析ポイントとして指定します。まず、追従要件に対して、出力と基準入力を追加します。
addPoint(ST0,{'theta-ref','theta','phi-ref','phi','r-ref','r'});
追従要件を取得する TuningGoal.Tracking
オブジェクトを作成する場合、このオブジェクトは同じ信号を参照します。
slTuner
インターフェイスを安定余裕要件用に設定します。安定余裕が測定されるプラントの入出力 (制御信号と測定信号) を解析ポイントとして指定します。
addPoint(ST0,{'u','y'});
slTuner
インターフェイス構成の概要をコマンド ウィンドウに表示します。
ST0
slTuner tuning interface for "rct_helico": 4 Tuned blocks: (Read-only TunedBlocks property) -------------------------- Block 1: rct_helico/PI1 Block 2: rct_helico/PI2 Block 3: rct_helico/PI3 Block 4: rct_helico/SOF 8 Analysis points: -------------------------- Point 1: 'Output Port 1' of rct_helico/theta-ref Point 2: Signal "theta", located at 'Output Port 1' of rct_helico/Demux1 Point 3: 'Output Port 1' of rct_helico/phi-ref Point 4: Signal "phi", located at 'Output Port 2' of rct_helico/Demux1 Point 5: 'Output Port 1' of rct_helico/r-ref Point 6: Signal "r", located at 'Output Port 3' of rct_helico/Demux1 Point 7: Signal "u", located at 'Output Port 1' of rct_helico/Mux3 Point 8: Signal "y", located at 'Output Port 1' of rct_helico/Helicopter No permanent openings. Use the addOpening command to add new permanent openings. Properties with dot notation get/set access: Parameters : [] OperatingPoints : [] (model initial condition will be used.) BlockSubstitutions : [] Options : [1x1 linearize.SlTunerOptions] Ts : 0
コマンド ウィンドウで、強調表示されている信号のいずれかをクリックすると、その信号の Simulink モデル内での位置が表示されます。
設計要件を指定する他に、解析ポイントを使用してシステム応答を抽出することもできます。たとえば、基準信号と 'theta'
、'phi'
、および 'r'
の間のステップ応答を抽出し、プロットします。
T0 = getIOTransfer(ST0,{'theta-ref','phi-ref','r-ref'},{'theta','phi','r'}); stepplot(T0,1)
このモデルはまだ調整されていないため、相互干渉を含むすべてのステップ応答が不安定です。
モデルの調整後も同様に、指定の解析ポイントを使用してシステム応答を抽出し、調整されたシステムを検証することができます。設計要件の指定には不要な位置でのシステム応答を調べる場合は、それらの位置も slTuner
インターフェイスに追加します。たとえば、ブロック roll-off 2
の出力で測定された感度関数をプロットします。
addPoint(ST0,'dc') dcS0 = getSensitivity(ST0,'dc'); bodeplot(dcS0)
slTuner
インターフェイスで、調整可能なブロックのパラメーター化を変更するとします。たとえば、モデルの調整後に、PI コントローラーから PID コントローラーへの変更によって結果が改善されるかどうかをテストするとします。3 つの PI コントローラーのパラメーター化を PID コントローラーに変更します。
PID0 = pid(0,0.001,0.001,.01); % initial value for PID controllers PID1 = tunablePID('C1',PID0); PID2 = tunablePID('C2',PID0); PID3 = tunablePID('C3',PID0); setBlockParam(ST0,'PI1',PID1,'PI2',PID2,'PI3',PID3);
Simulink モデルに対する slTuner
インターフェイスを設定したら、調整目標を作成し、systune
または looptune
を使用してモデルを調整することができます。
参考
slTuner
(Simulink Control Design) | addBlock
(Simulink Control Design) | addPoint
(Simulink Control Design) | setBlockParam
(Simulink Control Design) | getIOTransfer
(Simulink Control Design) | getSensitivity
(Simulink Control Design)