Simulink Control Design


最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

この例では、Model ブロックで他のモデルを参照するモデルの線形化に使用できる Simulink Control Design の機能を説明します。

線形解析

モデル scdspeed_ctrlloop は、モデル scdspeedctrl をカプセル化したものです。このモデルでは、エンジン スピード モデルは、モデル参照ブロックを使用して参照されるモデル scdspeed_plantref で表されるコンポーネントです。エンジン モデルを開くには、以下を実行します。

topmdl = 'scdspeed_ctrlloop';
open_system(topmdl);

最初に、参照は、シミュレーションをアクセラレータ モードで実行するよう設定されています。アクセラレータ モードのシミュレーションは、Model ブロック scdspeed_ctrlloop/Engine Model の隅に黒い三角形で示されます。

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

正確な線形化を実現するには、モデル参照ブロックをノーマル シミュレーション モードに設定し、以下のコマンドを実行して参照されたモデルをブロックごとに線形化できるようにします。

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

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');

モデル参照をノーマル モードのシミュレーションに切り替えると、正確な遅延表現を利用できるという利点もあります。

遅延をもつモデルの線形化の詳細は、「遅延をもつモデルの線形化」の例を参照してください。