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