Correct Buses Used as Vectors

When a block that requires a vector input receives a bus input, the bus is implicitly treated as a vector. Configuring a model to avoid using buses as vectors:

  • Improves loop handling

  • Contributes to consistent edit and compile-time behavior

Correct Buses Using the Model Advisor

When correcting buses used as vectors, the Model Advisor generally provides the most efficient approach.

  1. On the Modeling tab, click Model Advisor.

  2. Select the top model, then click OK.

  3. Select By Task > Modeling Signals and Parameters using Buses > Check bus signals treated as vectors.

  4. Click the Run This Check button.

    The Model Advisor reports any cases of buses treated as vectors.

  5. Follow the Model Advisor suggestions for correcting errors reported by the check.

For additional information about using the Model Advisor, see Check Your Model Using the Model Advisor.

Add Bus to Vector Blocks

To explicitly convert a bus to a vector, add Bus to Vector blocks using one of these approaches:

  • Insert the Bus to Vector block into buses treated as vectors.

  • Use the Simulink.BlockDiagram.addBusToVector function, which automatically inserts Bus to Vector blocks where buses are treated as vectors.

For example, model ex_bus_to_vector treats buses as vectors by using the buses as inputs to Gain blocks.

This figure shows the same model with Bus to Vector blocks after the Bus Creator block.

The Scope block shows the simulation results.

The simulation results are the same in either case. The Bus to Vector block is virtual, and does not affect simulation results, code generation, or performance.

Reorganize the Model

To avoid feeding a bus into a block that requires a vector input, you can manually replace the source for a block that requires vector inputs.

For example, in model ex_bus_to_vector, the Gain block requires a vector signal. However, the input signal is a bus created by a Bus Creator block.

To provide the required vector signal for the Gain block, replace the Bus Creator block with a Mux block.

Reorganizing the model manually poses these challenges:

  • Identifying all occurrences in a model can be difficult.

  • Dealing with many occurrences in a model is time-consuming and error-prone.

  • Reorganizing the model to address this issue can interfere with other aspects of the model.

Identify Implicit Bus-to-Vector Conversions

To identify buses treated as vectors:

  • Use the Model Advisor Check bus signals treated as vectors check.

  • Use the Simulink.BlockDiagram.addBusToVector function.

  • Set configuration parameter Bus signal treated as vector to warning or error. The default setting for Bus signal treated as vector is none, which generates no warning or error message when a block implicitly converts a bus to a vector during simulation.

See Also


Related Topics