В этом примере показано, как использовать варианты модели-ссылки. Блок 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