Варианты выбора - эти два или более строений компонента в вашей модели. В этом примере показано, как представлять варианты выбора внутри блока Variant Subsystem в вашей модели. Для других способов представления вариантов проекта смотрите Опции для представления вариантов в Simulink.
Добавьте блок Variant Subsystem к модели и назовите его.
Этот блок служит контейнером для вариантов выбора.
Дважды кликните Variant Subsystem блок. Добавьте Inport и Outport блоки так, чтобы они совпадали с входами в и выходами из этого блока.
Примечание
Внутри блока Inport можно добавлять только Outport, Subsystem, Model и Variant Subsystem блоки. Можно передавать сигналы управления через порты данных.
Щелкните правой кнопкой мыши значок на блоке Variant Subsystem и выберите Block Parameters (Subsystem).
В диалоговом окне параметров блоков нажмите кнопку для каждого варианта подсистемы, который вы хотите добавить.
Simulink® создает пустые блоки Subsystem внутри блока Variant Subsystem. Новые блоки имеют то же количество входа и выходных портов, что и блок Variant Subsystem.
Совет
(Если варианты выбора имеют разное количество входных и выходных портов, см. «Отображение входных и выходных портов вариантов».)
Откройте каждый Subsystem блок и создайте модель, которая представляет вариант выбора.
Когда вы являетесь вариантами прототипирования, можно создать пустые блоки Subsystem без входов или выходов внутри блока Variant Subsystem. Пустая подсистема воссоздает ситуацию, в которой подсистема неактивна без необходимости полного моделирования варианта. Для выбора пустого варианта либо укажите условие активации варианта, либо закомментируйте условие варианта путем размещения %
символ перед условием.
Если во время компиляции активен пустой вариант, Simulink игнорирует его.
Можно включать модель Simulink в качестве варианта выбора внутри блока Variant Subsystem.
Создайте модель, которую вы хотите включить в качестве варианта выбора. Убедитесь, что оно имеет то же количество входа и выхода портов, что и блок Variant Subsystem.
Примечание
Если ваша модель имеет разное количество входа и выхода портов, см. Отображение входных и выходных портов Вариантов.
В модели щелкните правой кнопкой мыши блок Variant Subsystem, который содержит варианты выбора и выберите Block Parameters (Subsystem).
В диалоговом окне параметров блоков нажмите кнопку, чтобы добавить блок Model в качестве варианта выбора.
Simulink создает неразрешенный Model блок в блоке Variant Subsystem.
Дважды кликните неразрешенный Model блок. В Model name окне введите имя модели, которую вы хотите использовать в качестве варианта модели, и нажмите OK.
Можно задать условия для активации варианта с помощью элементов управления вариантом. Можно также задать по умолчанию не более одного варианта выбора.
В MATLAB® в командной строке задайте управляющие переменные, которые создают условие активации при объединении.
mode = 3; version = 2;
Щелкните правой кнопкой мыши блок Variant Subsystem, который является контейнером для вариантов выбора в вашей модели, и выберите Block Parameters (Subsystem).
В диалоговом окне параметров блоков, в столбце Variant control, выберите (default)
рядом с одним из вариантов.
Simulink проверяет, что для симуляции активен только один вариант. Если Allow zero active variant controls выбран, у вас может быть нулевой вариант выбора. Когда условие управления не активирует вариант, Simulink использует вариант по умолчанию для симуляции и генерации кода.
Задайте условие варианта каждый из других вариантов. Если используется пустой вариант, задайте условие варианта для выбора. Вы также можете прокомментировать существующее условие активации, префиксировав его с помощью %
символ.
Нажмите Apply; в противном случае изменения не сохраняются.
В Редактор можно преобразовать эти блоки в Variant Subsystem блок:
Subsystem блок
Model блок
Variant Model блок (для моделей, созданных в версиях ранее R2017b)
Условно выполняемые подсистемы
Для этого щелкните правой кнопкой мыши блок, затем в контекстном меню щелкните Subsystem & Model Reference > Convert to > Variant Subsystem.
Можно также преобразовать эти блоки в Variant Subsystem программно. Для этого используйте любой из следующих синтаксисов:
Для примера,
open_system('sldemo_variant_subsystems'); Simulink.VariantManager.convertToVariant('sldemo_variant_subsystems/Controller');
Если вы преобразовываете модели вариантов в подсистему вариантов, обратите внимание, что поведение Model параметра блока Generate preprocessor conditionals отличается от Variant Subsystem параметра блока Variant activation time. Для исполнительных моделей включение параметра приводит к симуляции и обновлению схемы, чтобы скомпилировать только активный вариант. Для подсистемы вариантов, включение параметра компилирует все варианты, что может сделать симуляцию и обновления медленнее.
Преобразование моделей вариантов в подсистемы вариантов может потребовать, чтобы вы обновляли скрипты, которые используют Variants
параметр командной строки.