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

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

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

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

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

Откройте и симулируйте 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

Чтобы идентифицировать шины, обработанные как векторы во время симуляции, установите сигнал Bus, обработанный как параметр конфигурации вектора, равным warning или error. Настройка по умолчанию для сигнала шины, обрабатываемого как вектор none, который не генерирует никаких предупреждений или сообщений об ошибке, когда блок неявно преобразует шину в вектор.

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

Чтобы вставить блоки Bus to Vector, где блоки неявно преобразуют шины в векторы, используйте 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);

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