Simulinkのバーチャルとアトミックサブシステムとは?
今回はバーチャルサブシステムの説明です。
先日の打合せで、「普通のサブシステムはバーチャルなんです!」と説明したのですが、
お客様が「???」という顔をされていたので、
意外と知られてないのかと思い、記事にしてみました。
以下の簡単な例で説明します
(もし仕様が変わっていたらすみません)
例えば、以下のようなモデル①があったとします。
これを以下のように左側と右側のGainでサブシステム化したとします
これをモデル②とします(↓)
上のモデル②だと左側と右側が分かれたように見えますが、
実際には視覚的にサブシステムに入っているだけです。
Simulink®からしたら、①と②は同じに見えます
つまり、モデル①と②は同じ実行順序で動作します。
例えば、モデル②では、
先に左側のサブシステムから計算されていると思いがちですが、
Simulinkはモデル①と同じように上段の計算を実行して、
その後下段の計算を実行しています。
もし左側のサブシステムから動作させたい場合、
サブシステムのプロパティにある「Atomicサブシステムとして扱う」にチェックを入れます
チェックを入れた後にサブシステムの枠が太枠になります。
この状態だと、サブシステム内の演算が一つに括られるので、
先に左側のサブシステム内が計算され、その後、右側のサブシステムが計算されます。
SimulinkでECUの制御ロジックを作っている人は、上記を理解しておく必要があります。
パソコンのSimulinkではモデル①のような動作になりますが
ソースコード化した際に、サブシステムを関数化するとモデル②に近い動作になります。
これにより、結果に微妙な差異がでるかもしれませんので
上記の点を意識しながら、気を付けて開発してください。
ーーーーーーーーーーーーー
※MATLAB, Simulinkは、MathWorks社の登録商標です。
※記事内のサンプル等の流用にて損害等が発生したとしても、保証は一切致しません。