Simulink.BlockDiagram.addBusToVector

Преобразуйте сигналы виртуальной шины в сигналы вектора путем добавления Bus к блокам 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функция проверяет сигналы входа шины, используемые неявно в качестве векторов, которые подаются в один из этих блоков. Эти блоки не могут принимать сигналы виртуальной шины, но они могут принимать невиртуальные сигналы шины:

  • Delay

  • Selector

  • Assignment

  • Vector Concatenate

  • Reshape

  • Permute Dimensions

Примеры

свернуть все

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

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

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 и Bus signal treated as vector параметра конфигурации, см. «Управление преобразованиями шины в вектор».

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

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

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

Вставьте 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);

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

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

Входные параметры

свернуть все

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

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

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

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

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

Задайте как второй аргумент.

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

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

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

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

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

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

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

  • Delay

  • Selector

  • Assignment

  • Vector Concatenate

  • Reshape

  • Permute Dimensions

Задайте как четвертый аргумент. Вы также должны задать 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