Main Content

モデル参照を含むモデルの線形化

この例では、Model ブロックを使用して他のモデルを参照するモデルを線形化する方法を示します。

scdspeed_ctrlloop モデルは、scdspeedctrl モデルを変更したバージョンです。

topmdl = 'scdspeed_ctrlloop';
open_system(topmdl)

この例の scdspeed_plantref モデルには、エンジン回転数システムが実装されています。このモデルが Model ブロックを使用して scdspeed_ctrlloop で参照されています。

参照されているエンジン速度モデルを表示します。

open_system('scdspeed_plantref')

既定では、Engine Model ブロックは、Model ブロックの隅に黒い三角形で示されているように、アクセラレータ シミュレーション モードに設定されています。このブロックをもつモデルをアクセラレータ モードで線形化すると、Engine Model ブロック全体に数値的に摂動を与えます。この線形化の精度は、Engine モデル内のブロックの影響を受けます。特に、可変の伝達遅延ブロックに問題があります。

正確な線形化を実現するには、Model ブロックをノーマル シミュレーション モードに設定して、参照モデルのブロックごとの線形化を有効にします。

set_param('scdspeed_ctrlloop/Engine Model','SimulationMode','Normal')

Engine Model ブロックの隅が白い三角形になっています。これは、シミュレーションがノーマル モードに設定されていることを示します。

速度の基準信号と速度の出力間のモデルを線形化し、結果のステップ応答をプロットします。

io(1) = linio('scdspeed_ctrlloop/Speed Reference',1,'input');
io(2) = linio('scdspeed_ctrlloop/Speed Output',1,'output');
sys_normal = linearize(topmdl,io);
step(sys_normal)

モデル参照をノーマル モードのシミュレーションに切り替えると、正確な遅延表現を利用できるという利点もあります。遅延をもつモデルの線形化の詳細については、遅延をもつモデルの線形化を参照してください。

Simulink® モデルを閉じます。

bdclose('scdspeed_ctrlloop')

参考

関連するトピック