Управляйте преобразованиями шины к вектору

Этот пример показывает, как найти и управлять неявными преобразованиями шины к вектору.

Блоки, которые не принимают шины, могут неявно преобразовать шины в векторы. Когда шина обработана как вектор, элементы шины становятся недоступными.

Некоторые шины не могут преобразовать в векторы. Для получения дополнительной информации смотрите Шину к Вектору.

Идентифицируйте неявные преобразования шины к вектору

Откройте и моделируйте модель ex_bus_to_vector.

Чтобы принять шину, блоки Усиления неявно преобразовывают шину в вектор.

Чтобы идентифицировать шины, обработанные как векторы перед симуляцией, используйте функциональный 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, который не генерирует предупреждающего сообщения или сообщения об ошибке, когда блок неявно преобразовывает шину в вектор.

Явным образом задайте преобразования шины к вектору

Чтобы вставить Шину в Векторные блоки, где блоки неявно преобразовывают шины в векторы, используйте функциональный Simulink.BlockDiagram.addBusToVector с набором reportOnly к false. Когда вы используете функциональный Simulink.BlockDiagram.addBusToVector с набором reportOnly к false, функция сохраняет модель. Чтобы создать перезаписываемую копию модели 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);

Блоки Усиления больше неявно преобразовывают шину в вектор. Вставленная Шина к Векторным блокам выполняет преобразование явным образом.

Соедините шиной к Векторным блокам, являются виртуальными и не влияют на результаты симуляции, генерацию кода или производительность.

Функциональный 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

Путем определения приемлемых преобразований шины к вектору с Шиной к Векторным блокам можно более легко идентифицировать неожиданные преобразования. При обработке сигнала Шины параметра конфигурации, когда векторный набор к warning или error предупреждает вас, когда неожиданное преобразование шины к вектору происходит.