В этом примере показано, как использовать варианты модели - ссылки. Блок Model используется, чтобы сослаться на одну модель Simulink® из другой модели Simulink. Различный блок Subsystem может содержать блоки Model как варианты. Вариант описывает один из возможных режимов N, в которых может действовать Различный блок Subsystem. Каждый различные ссылки определенная модель с ее связанными аргументами модели специфичными. Для данного Различного блока Subsystem только один вариант активен в процессе моделирования. Можно переключить активный вариант путем изменения значений переменных в базовом рабочем пространстве или вручную переопределяющим различным выбором с помощью Различного диалогового окна блока Subsystem.
sldemo_mdlref_variants
модель содержит Различный блок Subsystem под названием Контроллер, это ссылается на две модели.
open_system('sldemo_mdlref_variants')
Чтобы видеть варианты, щелкните правой кнопкой по Variant Subsystem block под названием Контроллер и выберите Block Parameters (Subsystem). Активный вариант определяется значением CTRL
переменная в базовом рабочем пространстве MATLAB®. Определение CTRL=1
активирует блок Model под названием Линейный, и определение CTRL=2
активирует блок Model под названием Нелинейный.
Открытие 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
объекты могут быть снова использованы в различных Различных блоках Subsystem.
Различные блоки 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
класс перечисления.
Variant
объекты имеют Condition
свойство, которое является выражением. Выражение оценивает к Boolean и определяет, какой вариант активен. Выражение может состоять из скалярных переменных, перечислений, равенства, неравенства, &&, ||, и ~. Круглая скобка () может использоваться для группировки приоритета. Переменными могут быть стандартные переменные MATLAB или Simulink.Parameter
объекты.
Открытие модели sldemo_mdlref_variants_enum
запускает коллбэк модели PreLoadFcn. Этот коллбэк настраивается, чтобы заполнить базовое рабочее пространство с переменными, требуемыми Различными блоками Subsystem.
open_system('sldemo_mdlref_variants_enum')
VE_PROTOTYPE
и VE_PRODUCTION
Variant
объекты снова используются через Различные блоки Subsystem по имени Filter1, Filter2 и Filter3.
Диалоговое окно Block Parameters Различных блоков Subsystem показывает свойство Condition связанного Variant
объекты.
Subsystem | Model | Variant Subsystem, Variant Model