Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

この例では、バスからベクトルへの暗黙的な変換を特定して管理する方法を示します。

バスを受け入れないブロックにおいて、バスがベクトルに暗黙的に変換されることがあります。バスがベクトルとして扱われている場合、バス要素にはアクセスできなくなります。

ベクトルに変換できないバスもあります。詳細については、Bus to Vectorを参照してください。

バスからベクトルへの暗黙的な変換の特定

モデル ex_bus_to_vector を開いてシミュレーションを実行します。

バスを受け入れるには、Gain ブロックでバスをベクトルに暗黙的に変換します。

ベクトルとして扱われるバスをシミュレーションの実行前に特定するには、関数 Simulink.BlockDiagram.addBusToVector を使用します。

[blocks] = Simulink.BlockDiagram.addBusToVector('ex_bus_to_vector')
### Processing block diagram 'ex_bus_to_vector'
### Number of blocks left that are connected to a bus being used as a vector: 2
### Done processing block diagram 'ex_bus_to_vector'

blocks = 

  1x2 struct array with fields:

    BlockPath
    InputPort
    LibPath

ベクトルとして扱われるバスをシミュレーションの実行中に特定するには、[ベクトルとして扱われるバス信号] コンフィギュレーション パラメーターを [warning] または [error] に設定します。[ベクトルとして扱われるバス信号] の既定の設定は [none] であり、ブロックでバスがベクトルに暗黙的に変換されたときに警告やエラーのメッセージは生成されません。

バスからベクトルへの変換の明示的な定義

バスをベクトルに暗黙的に変換する Bus to Vector ブロックを挿入するには、reportOnlyfalse に設定して関数 Simulink.BlockDiagram.addBusToVector を使用します。reportOnlyfalse に設定して関数 Simulink.BlockDiagram.addBusToVector を使用すると、モデルが保存されます。この例では、モデル ex_bus_to_vector の書き込み可能なコピーを作成するために関数 save_system を使用しています。

save_system('ex_bus_to_vector','ex_bus_to_vector_blocks');
[blocks,busToVectors] =
Simulink.BlockDiagram.addBusToVector('ex_bus_to_vector_blocks',true,false);

Gain ブロックでバスからベクトルへの暗黙的な変換が実行されなくなります。挿入した Bus to Vector ブロックで明示的に変換が実行されます。

Bus to Vector ブロックはバーチャルであり、シミュレーション結果、コード生成、パフォーマンスには影響しません。

関数 Simulink.BlockDiagram.addBusToVector を使用すると、それ以外のバスからベクトルへの暗黙的な変換は返されません。

[blocks] = Simulink.BlockDiagram.addBusToVector('ex_bus_to_vector_blocks')
###No buses used as vectors left to process

blocks = 

  1x0 empty struct array with fields:

    BlockPath
    InputPort
    MixedAttributes

バスからベクトルへの許容される変換を Bus to Vector ブロックで指定することで、予期しない変換を特定しやすくなります。コンフィギュレーション パラメーター [ベクトルとして扱われるバス信号] を [warning] または [error] に設定すると、バスからベクトルへの予期しない変換が行われたときに通知されます。