Модели-ссылки

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

См. также

| |

Похожие темы