Main Content

自動バス変換の特定

合成信号の要件や制限に準拠するために、ソフトウェアは非表示の Bus to Vector ブロックと Signal Conversion ブロックをモデルに追加する場合があります。これらの追加により、時間がかかり、エラーが発生しやすいモデルの手動による変換やリファクタリングの回避に役立ちます。

バスからベクトルへの変換

ブロックがベクトルを要求しているにもかかわらずバーチャル バスを受け取る場合、非表示の Bus to Vector ブロックはバスをベクトルに変換する場合があります。Bus to Vector ブロックはバーチャルであり、シミュレーション結果、コード生成またはパフォーマンスには影響しません。ただし、バスがベクトルとして扱われると、バスの要素にアクセスできなくなります。

バスがベクトルとして扱われるときに警告またはエラーを受け取るには、[ベクトルとして扱われるバス信号] コンフィギュレーション パラメーターをそれぞれ [警告] または [エラー] に設定します。これらの設定により、潜在的な問題は、バスを必要とする下流ブロックではなく、ソースで特定できるようになります。

ベクトルとして使用されるバスを修正するには、次の手順を実行します。

  • 最上位モデルのモデル アドバイザーで、チェックとして [ベクトルとして扱われるバス信号のチェック] を実行し、推奨される操作を実行します。

  • 関数 Simulink.BlockDiagram.addBusToVector を使用して、Bus To Vector ブロックを追加します。その際、ソフトウェアはバスをベクトルに暗黙的に変換します。

  • 関連する Bus Creator ブロックを Mux ブロックで置き換えることで、ベクトルが作成されます。

バーチャルおよび非バーチャル バスの変換

シミュレーションまたはコード生成の前にブロック線図を更新する場合、ソフトウェアはバーチャル バスを非バーチャル バスに、または非バーチャル バスをバーチャル バスに自動的に変換することがあります。たとえば、ソフトウェアは、次の場合にバスを暗黙的に変換します。

  • S-Function ブロックなどのブロックまたは Stateflow® チャートはバーチャル バスを受け取りますが、必要とするのは非バーチャル バスです。

  • 参照モデルは非バーチャル バスを受け取りますが、対応する Inport ブロックではバーチャル バスを指定します。

  • ルートレベルの Outport ブロックは非バーチャル バスを受け取りますが、バーチャル バスを指定します。

ソフトウェアは、非表示の Signal Conversion ブロックをモデルの必要な箇所に挿入します。Simulink.Bus オブジェクトがバーチャル バスに対して指定されていない場合、非バーチャル バスへの変換は失敗し、エラーが発生します。

Bus to Vector ブロックとは異なり、Signal Conversion ブロックは出力バスの構造体に影響しません。

既定では、In Bus Element ブロックと Out Bus Element ブロックが、バスからバスの仮想性を継承します。バーチャル バスまたは非バーチャル バスのいずれかを指定すると、バスの仮想性が自動的に変換されずにエラーが発生します。

参考

ブロック

関連するトピック