バス配列による非バーチャル バスの反復処理
次のような場合は、バス配列を使用するようにモデルを更新します。
モデルに同じ種類の処理を実行するサブシステムが多数含まれている。
モデルの複雑度が増した。
たとえば、次のモデル化パターンを比較します。
オリジナルのモデル化パターンの説明
3 つの非バーチャル バスで
BusObject
という名前のSimulink.Bus
オブジェクト データ型を指定しています。それらの非バーチャル バスのそれぞれが Subsystem ブロックに接続しています。
ScalarAlgorithm1
、ScalarAlgorithm2
、およびScalarAlgorithm3
という名前の Subsystem ブロックの内容は同じです。
オリジナルのモデル化パターンは非効率的です。それぞれの非バーチャル バスを処理するために、アルゴリズムをカプセル化するサブシステムのコピーがモデルに含まれています。同じ BusObject
データ型の別の非バーチャル バスを処理するのに、モデルで別のサブシステムのコピーが必要になります。
バス配列を使用するようにオリジナルのモデル化パターンを変換するには、次の手順に従います。
変換するバスと関連アルゴリズムを特定します。
バス配列で連結するバスは非バーチャルでなければなりません。バスがバーチャルで、そのすべての要素のサンプル時間が同じであるか、それらのサンプル時間を継承している場合、バーチャル バスを非バーチャル バスに変換します。
非バーチャル バスに可変次元やフレームベースの要素を含めることはできません。
Vector Concatenate ブロックを使用して、非バーチャル バスをバス配列にグループ化します。
サブシステムの同一コピーを、アルゴリズムをカプセル化する For Each Subsystem ですべて置き換えます。
バスの配列を For Each Subsystem に接続します。
入力バス配列を反復処理して出力を連結するように For Each Subsystem ブロックを構成します。
For Each Subsystem 内のスカラー アルゴリズムは、連続状態を保持できません。
バス配列により、複数の同一のサブシステムを、反復処理をサポートする 1 つのサブシステムで置き換えることができます。
バス配列の作成の詳細については、非バーチャル バスのバス配列へのグループ化を参照してください。