Main Content

パラメーターが変化するモデルの単一の操作点でのバッチ線形化

この例では、モデルのパラメーターを変化させ、linearizeコマンドを使用してモデルをその定格操作条件で線形化します。

パラメーターが変化するモデルを単一の操作点でバッチ線形化して、以下を調査することができます。

  • 成分許容誤差の変化に対するプラント ダイナミクス。

  • プラント パラメーターの変化に対するコントローラーのロバスト性。

  • コントローラー ゲインの変化に対する過渡応答。

scdcascadeモデルには 2 つのカスケード フィードバック制御ループが含まれています。それぞれのループには、PI コントローラーが含まれます。G1およびG2のプラント モデルは LTI モデルです。

このモデルでは、モデルの操作点がシステムの定格操作条件を表しています。したがって、線形化の前にモデルを平衡化する必要はありません。アプリケーションにモデルの操作点に影響するパラメーター変化が含まれる場合、まずパラメーターを変化させてモデルをバッチ平衡化しなければなりません。その後、平衡化された操作点でモデルを線形化できます。詳細については、パラメーターの変化から派生した複数の操作点でのモデルのバッチ線形化を参照してください。

外側ループのコントローラー ゲインの変化の影響を調べるには、ゲイン値の各組み合わせについてモデルを定格操作点で線形化します。

モデルを開きます。

sys ='scdcascade'; open_system(sys)

システムの閉ループ入出力応答を計算するため、線形化の入力ポイントと出力ポイントを定義します。

io(1) = linio('scdcascade/setpoint',1,“输入”); 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);

NameValueのフィールドをもつパラメーター構造体を作成します。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の各エントリに対応するパラメーター値のセットは、GSamplingGridプロパティに保存されます。たとえば、線形化G(:,:,2,3)の対応するパラメーター値を調べます。

G(:,:,2,3).SamplingGrid
ans = struct with fields: Kp1: 0.1386 Ki1: 0.0448

ゲイン値の変化による影響を調べるには、Gの線形化されたモデルを解析します。たとえば、Kp2のすべての値とKi1の 3 番目の値でのステップ応答を調べます。

stepplot(G(:,:,:,3))

参考

||

関連するトピック