バス配列を使用するためのモデルの変換
バス配列を使用するようにモデルを変換する理由は複数あります。以下に例を示します。
モデルは Simulink® でサポートされるバス配列 (R2010b で導入) 以前に開発されており、同じ種類の処理を実行する多くのサブシステムを含んでいる。
モデルの複雑度が増した。
一般的な変換方法
ここでは、バスを含むモデルをバス配列を使用するモデルに変換するための一般的な方法を紹介します。使用する方法は、モデルによって異なります。詳細は、非バーチャル バスのバス配列へのグループ化を参照してください。
このワークフローは、設定済みのサンプル モデルを参照しています。この例では、オリジナルのモデル化パターンと、バス配列を使用する新しいモデリング パターンを示しています。
オリジナルのモデル化パターンの説明
変換するターゲット バスは
MainBus
という名前で、それぞれBusObject
タイプの 3 つの要素をもっています。ScalarAlgorithm1
、ScalarAlgorithm2
、ScalarAlgorithm3
サブシステムは、各バス要素で実行されるアルゴリズムをカプセル化しています。サブシステムはすべて同じ内容です。Bus Selector ブロックは、
MainBus
の各要素を選択してサブシステムを駆動します。
オリジナルのモデル化パターンの構成は、以下の 2 つの理由で非効率です。
処理するバスの各要素に対して、アルゴリズムをカプセル化するサブシステムのコピーが作成されます。
別の要素を
MainBus
に追加するには、Bus
オブジェクト定義および Bus Selector ブロックの変更、およびサブシステムの追加が必要です。これらの変更はそれぞれエラーの原因となる可能性があります。
バス配列を使用するようにオリジナルのモデル化パターンを変換するには、次の手順に従います。
変換の対象となるターゲット バスおよび関連のアルゴリズムを指定します。通常、ターゲット バスはバスのバスで、各要素バスが同じタイプです。
変換するバスは、非バーチャル バスでなければなりません。ターゲット バスのすべての要素が同じサンプル時間をもつ場合 (またはサンプル時間が継承された場合) は、バーチャル バスを非バーチャル バスに変換できます。
ターゲット バスには変数次元およびフレームベースの要素を含めることはできません。
Concatenate ブロックを使用してバスのオリジナル バスをバスの配列に変換します。
例では、新しいモデル化パターンは Vector Concatenate ブロックを使用して、
MainBus
信号を作成する Bus Creator ブロックを置き換えます。Vector Concatenate ブロックの出力は、バス配列で、バスのタイプはBusObject
です。新しいモデルは、ラッパー バス (MainBus
) を排除します。アルゴリズム サブシステムの同一コピーを、スカラー アルゴリズムをカプセル化する 1 つの For Each Subsystem ですべて置き換えます。バスの配列を For Each Subsystem に接続します。
新しいモデルは、オリジナル モデルで
MainBus
信号の要素を分離する Bus Selector ブロックを排除します。入力バスの配列で反復し、出力バスを連結するように For Each Subsystem ブロックを設定します。
For Each Subsystem 内のスカラー アルゴリズムは、連続状態を保持できません。付加的な制限事項の詳細は、For Each Subsystem ブロックのドキュメンテーションを参照してください。