В этом примере показано, как найти и управлять неявными преобразованиями шина в вектор.
Блоки, которые не принимают шины, могут неявно преобразовывать шины в векторы. Когда шина рассматривается как вектор, элементы шины становятся недоступными.
Некоторые шины не могут преобразовывать в векторы. Для получения дополнительной информации см. Раздел «Шина к вектору».
Откройте и симулируйте 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
предупреждает вас, когда происходит неожиданное преобразование шины в вектор.