このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
パラメーターが変化するモデルの単一の操作点でのバッチ線形化
この例では、モデルのパラメーターを変化させ、linearize
コマンドを使用してモデルをその定格操作条件で線形化します。
パラメーターが変化するモデルを単一の操作点でバッチ線形化して、以下を調査することができます。
成分許容誤差の変化に対するプラント ダイナミクス。
プラント パラメーターの変化に対するコントローラーのロバスト性。
コントローラー ゲインの変化に対する過渡応答。
scdcascade
モデルには 2 つのカスケード フィードバック制御ループが含まれています。それぞれのループには、PI コントローラーが含まれます。G1
および G2
のプラント モデルは LTI モデルです。
このモデルでは、モデルの操作点がシステムの定格操作条件を表しています。したがって、線形化の前にモデルを平衡化する必要はありません。アプリケーションにモデルの操作点に影響するパラメーター変化が含まれる場合、まずパラメーターを変化させてモデルをバッチ平衡化しなければなりません。その後、平衡化された操作点でモデルを線形化できます。詳細については、パラメーターの変化から派生した複数の操作点でのモデルのバッチ線形化を参照してください。
外側ループのコントローラー ゲインの変化の影響を調べるには、ゲイン値の各組み合わせについてモデルを定格操作点で線形化します。
モデルを開きます。
sys = 'scdcascade';
open_system(sys)
システムの閉ループ入出力応答を計算するため、線形化の入力ポイントと出力ポイントを定義します。
io(1) = linio('scdcascade/setpoint',1,'input'); io(2) = linio('scdcascade/Sum',1,'output');
io(1)
は、setpoint
ブロックの出力端子が発信元となる信号であり、基準入力です。io(2)
は、Sum
ブロックの出力端子が発信元となる信号であり、システム出力です。
同じモデルから開ループおよび閉ループ伝達関数を複数抽出するには、slLinearizer
インターフェイスを使用してシステムをバッチ線形化します。詳細については、パラメーター値を変化させて複数の伝達関数を取得を参照してください。
外側のループのコントローラー ゲイン Kp1
および Ki1
を、そのノミナル値の 20% 以内で変化させます。
Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6); Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4); [Kp1_grid,Ki1_grid] = ndgrid(Kp1_range,Ki1_range);
Name
と Value
のフィールドをもつパラメーター構造体を作成します。Name
は、モデル ワークスペース、MATLAB® ワークスペース、またはデータ ディクショナリで変化させる変数を示します。
params(1).Name = 'Kp1'; params(1).Value = Kp1_grid; params(2).Name = 'Ki1'; params(2).Value = Ki1_grid;
params
は、6 行 4 列のパラメーター値グリッドです。各グリッド点は、Kp1
および Ki1
の値の一意の組み合わせに対応します。
指定されたパラメーター値で、基準入力からプラント出力への閉ループ伝達関数を取得します。操作点を指定しない場合、linearize
は現在のモデルの操作点を使用します。
G = linearize(sys,io,params);
G
は線形化されたモデルの 6 行 4 列の配列です。配列の各エントリには、params
で対応するパラメーターの組み合わせの線形化が含まれます。たとえば、G(:,:,2,3)
は、Kp1
および Ki1
の各パラメーターの値をそれぞれ Kp1_grid(2,3)
および Ki1_grid(2,3)
に設定して取得された線形化に対応します。モデル配列 G
の各エントリに対応するパラメーター値のセットは、G
の SamplingGrid
プロパティに保存されます。たとえば、線形化 G(:,:,2,3)
の対応するパラメーター値を調べます。
G(:,:,2,3).SamplingGrid
ans = struct with fields: Kp1: 0.1386 Ki1: 0.0448
ゲイン値の変化による影響を調べるには、G
の線形化されたモデルを解析します。たとえば、Kp2
のすべての値と Ki1
の 3 番目の値でのステップ応答を調べます。
stepplot(G(:,:,:,3))