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

Чтобы симулировать с использованием линейного контроллера, задайте CTRL=1 в базовом рабочем пространстве, затем моделируйте модель.
CTRL=1;
sim('sldemo_mdlref_variants');
Чтобы симулировать с использованием нелинейного контроллера, задайте CTRL=2 в базовом рабочем пространстве, затем моделируйте модель.
CTRL=2;
sim('sldemo_mdlref_variants');
The sldemo_mdlref_variants_enum модель демонстрирует Simulink.Variant возможности объекта:
Перечисления: классы перечисления MATLAB могут использоваться, чтобы улучшить читаемость условий Variant объект.
Повторное использование: Variant объекты могут быть повторно использованы в различных блоках Подсистемы Вариантов.
Блоки Variant Subsystem в этой модели требуют, чтобы в базовом рабочем пространстве 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 класс перечисления.
The Variant объекты имеют Condition свойство, являющееся выражением. Выражение вычисляется как логическое и определяет, какой вариант является активным. Выражение может состоять из скалярных переменных, перечислений, равенств, неравенств, &, || и ~. Круглые скобки () могут использоваться для группирования приоритетов. Переменные могут быть стандартными переменным MATLAB или Simulink.Parameter объекты.
Открытие модели sldemo_mdlref_variants_enum запускает коллбэк модели PreLoadFcn. Этот коллбэк настраивается для заполнения базового рабочего пространства переменными, требуемыми блоками Variant Subsystem.
open_system('sldemo_mdlref_variants_enum')
The VE_PROTOTYPE и VE_PRODUCTION Variant объекты используются повторно через блоки Variant Subsystem с именами Filter1, Filter2 и Filter3.
Диалоговое окно Параметров блоков блоков Variant Subsystem показывает свойство Условия связанного Variant объекты.
Model | Subsystem | Variant Subsystem, Variant Model