exponenta event banner

Simulink. BlockDiagram.addBusToVector

Преобразование сигналов виртуальной шины в векторные сигналы путем добавления блоков Bus to Vector

Описание

пример

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model) ищет в модели, исключая любые библиотечные блоки, сигналы шины, неявно используемые в качестве векторов, и возвращает результаты поиска.

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs) ищет модель, и если includeLibs является trueвключает в себя блоки библиотеки поиска сигналов шины, неявно используемых в качестве векторов.

пример

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs,reportOnly) ищет модель, и если reportOnly имеет значение falseзатем функция вставляет блок Bus to Vector в каждую шину, которая используется в качестве вектора в любом искомом блоке. Вставка заменяет неявное использование шины в качестве вектора явным преобразованием шины в вектор. Блоки источника и назначения сигнала не изменяются.

Если Simulink.BlockDiagram.addBusToVector добавляет блоки Bus to Vector в модель или любую библиотеку, функция изменяет сохраненную копию диаграммы.

Если Simulink.BlockDiagram.addBusToVector изменяет блок библиотеки, изменение влияет на каждый экземпляр этого блока в каждой модели, использующей библиотеку.

[destBlocks,busToVectorBlocks,ignoredBlocks] = Simulink.BlockDiagram.addBusToVector(model,includeLibs,reportOnly,strictOnly) ищет модель, и если strictOnly является trueфункция проверяет входные сигналы шины, используемые неявно в качестве векторов, которые подаются в один из этих блоков. Эти блоки не могут принимать сигналы виртуальной шины, но они могут принимать сигналы невиртуальной шины:

  • Задержка

  • Отборщик

  • Назначение

  • Конкатенат вектора

  • Измениться

  • Перестановочные размеры

Примеры

свернуть все

Модель ex_bus_to_vector моделируется правильно, но вход в блок усиления является шиной, а выход - вектором. Блок усиления неявно преобразует шину в вектор.

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

open_system(fullfile(matlabroot,'examples','simulink','main',...
'ex_bus_to_vector'))

Идентификация шин, обрабатываемых как векторы.

[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 = 

  1×2 struct array with fields:

    BlockPath
    InputPort
    LibPath

Чтобы понять взаимосвязь между Simulink.BlockDiagram.addBusToVector и сигнал шины, обрабатываемый как параметр конфигурации вектора, см. раздел Управление преобразованиями шины в вектор.

Модель ex_bus_to_vector моделируется правильно, но вход в блок усиления является шиной, а выход - вектором. Блок усиления неявно преобразует шину в вектор.

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

open_system(fullfile(matlabroot,'examples','simulink','main',...
'ex_bus_to_vector'))

Вставка блоков «Шина в вектор».

При использовании функции 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);

Блок усиления больше неявно не преобразует шину в вектор. Вставленный блок Bus to Vector выполняет преобразование явно. Блок Bus to Vector является виртуальным и не влияет на результаты моделирования, создание кода или производительность.

Чтобы понять взаимосвязь между Simulink.BlockDiagram.addBusToVector и сигнал шины, обрабатываемый как параметр конфигурации вектора, см. раздел Управление преобразованиями шины в вектор.

Входные аргументы

свернуть все

Имя модели или дескриптор, заданный как символьный вектор, строковый скаляр или числовой скаляр.

Типы данных: double | char | string

Поиск блоков библиотеки, указанных как false или true.

  • false - поиск только по блокам в модели.

  • true - Поиск библиотечных блоков для сигналов шины, неявно используемых в качестве векторов.

Укажите в качестве второго аргумента.

Типы данных: logical

Выбор отчета о результатах без изменения модели, указанной как false или true.

  • false - Обновление модели путем вставки блоков Bus to Vector для сигналов шины, неявно используемых в качестве векторов.

  • true - сообщать результаты поиска, но не изменять модель.

Укажите в качестве третьего аргумента. Также укажите model и includeLibs аргументы.

Типы данных: logical

Проверьте входные сигналы шины, которые неявно используются в качестве векторов, которые подают блоки, которые могут принимать невиртуальные, но не виртуальные сигналы шины, указанные как false или true. Если strictOnly является trueфункция проверяет входные сигналы шины, используемые неявно в качестве векторов, которые подаются в один из этих блоков. Эти блоки не могут принимать сигналы виртуальной шины, но они могут принимать сигналы невиртуальной шины.

  • Задержка

  • Отборщик

  • Назначение

  • Конкатенат вектора

  • Измениться

  • Перестановочные размеры

Укажите в качестве четвертого аргумента. Необходимо также указать model, includeLibs, и reportOnly аргументы.

Типы данных: logical

Выходные аргументы

свернуть все

Блоки, соединенные с шинами, которые рассматривают шины как векторы, возвращаются как массив структур. Каждая структура в массиве содержит следующие поля:

  • BlockPath - символьный вектор, указывающий путь к блоку, к которому подключается шина.

  • InputPort - целое число, указывающее входной порт, к которому подключается шина.

  • LibPath - если блок является экземпляром блока библиотеки, и если includeLibs является true, значение поля - это путь к исходному блоку библиотеки. В противном случае LibPath пуст ([]).

Блоки Bus to Vector, добавленные функцией, указаны как массив ячеек. Если reportOnly имеет значение false, массив ячеек содержит пути к каждому блоку Bus to Vector, который функция добавила для замены шин, используемых в качестве векторов. В противном случае busToVectorBlocks пуст ([]).

Случаи, когда функция не может вставить блок Bus to Vector, указанный как массив структур. Каждая структура в массиве содержит следующие поля:

  • BlockPath - символьный вектор, указывающий путь к блоку, к которому подключается шина.

  • InputPort - целое число, указывающее входной порт, к которому подключается шина.

Эти случаи возникают, когда невозможно вставить Bus to Vector, поскольку входной сигнал виртуальной шины состоит из элементов со смешанными атрибутами.

Совет

  • Перед выполнением этой функции:

    1. Убедитесь, что модель компилируется без ошибок.

    2. Сохраните модель.

  • Создайте резервную копию модели и любых библиотек перед вызовом функции с помощью reportOnly установить в значение false.

  • Для предварительного просмотра влияния изменений на блоки во всех моделях вызовите Simulink.BlockDiagram.addBusToVector с includeLibs установить в значение true и reportOnly установить в значение true. Затем проверьте информацию, возвращенную в destBlocks выходной аргумент.

Представлен в R2007a