このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Simulink モデルの平衡化と線形化
この例では、watertank Simulink モデルフィードバック制御システムをプログラムで線形化する方法を説明します。この例では、貯水槽システムの開ループ線形化モデルを、水位が定常状態である操作点において取得します。
モデルの線形化の入力点と出力点をプログラムで指定する方法の詳細については、モデルの一部を線形化するよう指定およびコマンド ラインを使用したモデルの一部の線形化の指定を参照してください。
線形化に用いる操作点の検出の詳細については、仕様からの定常状態の操作点の計算およびコマンド ラインでの仕様からの操作点の計算を参照してください。
モデルを開きます。
mdl = 'watertank';
open_system(mdl)
このモデルでは、水位 H
が 10
の場合に定常状態の操作条件と想定されます。
操作点の計算
モデルを線形化するには、まず、モデルを線形化する条件の操作点を取得する必要があります。このための方法として、最初にモデルのシミュレーションを実行し、シミュレーションが望ましい値に近くなったら操作点を抽出するというものがあります。その後、この操作点を、定常状態の操作点を求める最適化ベースの探索 (平衡化) の開始点として使用できます。
関数 findop
を使用してモデルをシミュレートし、10
秒後のモデル条件を使用して操作点を取得します。
opsim = findop(mdl,10)
opsim = Operating point for the Model watertank. (Time-Varying Components Evaluated at time t=10) States: ---------- <strong>x</strong> <strong>______</strong> (1.) watertank/PID Controller/Integrator/Continuous/Integrator 1.6949 (2.) watertank/Water-Tank System/H 10.08 Inputs: None ----------
この操作点では、H
の値は望ましい値 10
ではありません。ただし、この操作点を使用して H
= 10
となるような操作点を見つけるための探索を初期化できます。
操作点探索を設定するには、最初に操作点の仕様オブジェクトを作成します。
opspec = operspec(mdl);
操作点 opsim
の状態の値を用いて操作点仕様の状態の値を初期化します。
opspec = initopspec(opspec,opsim);
操作点の仕様を使用して、モデルを平衡化します。
opss = findop(mdl,opspec);
Operating point search report: --------------------------------- opreport = Operating point search report for the Model watertank. (Time-Varying Components Evaluated at time t=10) Operating point specifications were successfully met. States: ---------- <strong>Min</strong> <strong>x</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dx</strong> <strong>dxMax</strong> <strong>____</strong> <strong>______</strong> <strong>___</strong> <strong>_____</strong> <strong>___________</strong> <strong>_____</strong> (1.) watertank/PID Controller/Integrator/Continuous/Integrator -Inf 1.2649 Inf 0 0 0 (2.) watertank/Water-Tank System/H 0 10 Inf 0 -1.0991e-14 0 Inputs: None ---------- Outputs: None ----------
この操作点では、H
は想定された 10
になります。モデルの状態の dx
値がゼロに近いため、操作点は定常状態にあります。
線形解析ポイントの設定
モデルを線形化するには、モデルの線形化対象部分を指定する必要があります。線形解析ポイントは、線形化モデルの入出力を指定します。貯水槽プラントの開ループ線形化モデルを抽出するには、Controller ブロックの出力において入力ポイントを追加し、Water-Tank System ブロックの出力において出力ポイントをループ開始点と共に追加します。
入力ポイントを指定します。
watertank_io(1) = linio('watertank/PID Controller',1,'input');
出力ポイントをループ開始点と共に指定します。
watertank_io(2) = linio('watertank/Water-Tank System',1,'openoutput');
モデルの線形化と解析
これで、指定された操作点と線形解析ポイントを使用してモデルを線形化できます。
sys = linearize(mdl,opss,watertank_io);
結果として得られるモデルは、Control System Toolbox™ ソフトウェアの任意のツールを使用して解析できる状態空間オブジェクトです。たとえば、線形モデルの周波数応答を表示します。
bode(sys)
Simulink® モデルを閉じます。
bdclose(mdl)