В этом примере показано, как использовать ссылочные варианты модели. Блок модели используется для ссылки на одну модель Simulink ® из другой модели Simulink. Блок подсистемы исполнений может содержать блоки модели в качестве исполнений. Вариант описывает один из N возможных режимов, в которых может работать блок подсистемы вариантов. Каждый вариант ссылается на конкретную модель со связанными с ней аргументами для конкретной модели. Для данного блока Variant Subsystem во время моделирования активен только один вариант. Активное исполнение можно переключить путем изменения значений переменных в базовой рабочей области или путем переопределения выбора исполнения вручную с помощью диалогового окна Блок подсистемы исполнения (Variant Subsystem block).
sldemo_mdlref_variants содержит блок Variant Subsystem с именем Controller, который ссылается на две модели.
open_system('sldemo_mdlref_variants')
Чтобы просмотреть варианты, щелкните правой кнопкой мыши блок «Подсистема вариантов» с именем «Контроллер» и выберите «Параметры блока» (Подсистема). Активный вариант определяется значением CTRL в базовой рабочей области MATLAB ®. ОпределениеCTRL=1 активирует блок модели с именем «Линейный» и определяет CTRL=2 активирует блок модели с именем «Нелинейный».
Открытие окна sldemo_mdlref_variants модель выполняет обратный вызов модели PreLoadFcn, который устанавливает CTRL кому 2.

Для моделирования с использованием линейного контроллера определите CTRL=1 в базовой рабочей области, затем смоделировать модель.
CTRL=1;
sim('sldemo_mdlref_variants');
Для моделирования с использованием нелинейного контроллера определите CTRL=2 в базовой рабочей области, затем смоделировать модель.
CTRL=2;
sim('sldemo_mdlref_variants');
sldemo_mdlref_variants_enum модель демонстрирует Simulink.Variant возможности объекта:
Перечисления: классы перечисления MATLAB могут использоваться для улучшения читаемости условий Variant объект.
Повторное использование: Variant объекты могут быть повторно использованы в различных блоках подсистемы вариантов.
Блоки подсистемы исполнения в этой модели требуют определения следующих переменных в базовой рабочей области MATLAB:
VE_LINEAR_CONTROLLER = Simulink.Variant('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.LINEAR')
VE_NONLINEAR_CONTROLLER = Simulink.Variant('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')
E_CTRL = sldemo_mrv_CONTROLLER_TYPE.LINEAR
VE_PROTOTYPE = Simulink.Variant('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')
VE_PRODUCTION = Simulink.Variant('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')
E_CURRENT_BUILD = sldemo_mrv_BUILD_TYPE.PRODUCTION
Каждый вариант связан с Simulink.Variant объект, который использует либо sldemo_mrv_BUILD_TYPE.m или sldemo_mrv_CONTROLLER_TYPE.m класс перечисления.
Variant объекты имеют Condition свойство, которое является выражением. Выражение получает логическое значение и определяет, какой вариант активен. Выражение может состоять из скалярных переменных, перечислений, равенства, неравенства, & &, | | и ~. Для группировки приоритетов можно использовать круглые скобки (). Переменные могут быть стандартными переменными MATLAB илиSimulink.Parameter объекты.
Открытие модели sldemo_mdlref_variants_enum выполняет обратный вызов модели PreLoadFcn. Этот обратный вызов настраивается для заполнения базовой рабочей области переменными, требуемыми блоками подсистемы исполнения.
open_system('sldemo_mdlref_variants_enum')
VE_PROTOTYPE и VE_PRODUCTION Variant повторно используются в блоках исполнительной подсистемы с именами Filter1, Filter2 и Filter3.
В диалоговом окне «Параметры блока» блоков «Подсистема исполнения» отображается свойство «Условие» связанных блоков. Variant объекты.
Модель | Подсистема | Подсистема исполнения, модель исполнения