Варианты модели - ссылки

В этом примере показано, как использовать варианты модели - ссылки. Блок Model используется, чтобы сослаться на одну модель Simulink® из другой модели Simulink. Различный блок Subsystem может содержать блоки Model как варианты. Вариант описывает один из возможных режимов N, в которых может действовать Различный блок Subsystem. Каждый различные ссылки определенная модель с ее связанными аргументами модели специфичными. Только один вариант активен для симуляции. Можно переключить активный вариант путем изменения значений переменных в базовом рабочем пространстве, или вручную переопределяющим различным выбором с помощью Различного диалогового окна блока Subsystem.

Для новых моделей используйте Различный блок Subsystem вместо блока Model, чтобы содержать варианты модели, если вы не должны использовать варианты, которые являются условно выполняемыми моделями (модели с портами управления). Поддержка использования блока Model, чтобы содержать варианты модели будет удалена в будущем релизе.

Требования в качестве примера

Во время этого примера Simulink и Simulink® Coder™ могут сгенерировать код в папке генерации кода в текущей рабочей папке. Если вы не хотите к (или не может) генерировать файлы в этой папке, необходимо изменить рабочую папку.

Обзор вариантов модели

Блок Model используется, чтобы сослаться на одну модель Simulink (дочерняя модель) из другой модели Simulink (родительская модель). Различный блок Subsystem может иметь блоки Model как варианты. Варианты включают набор моделей, которые имеют потенциал, на который сошлется Различный блок Subsystem. В этом примере существует две модели, на которые потенциально ссылается Различный блок Subsystem под названием Контроллер.

Каждый вариант сопоставлен с Simulink.Variant объект. Simulink.Variant объекты создаются в базовом рабочем пространстве MATLAB®. Например:

V_LINEAR_CONTROLLER=Simulink.Variant('CTRL==1');

где аргумент ('CTRL==1') конструктора задает условие, когда вариант активен. В этом случае, определение:

CTRL=1

в базовом рабочем пространстве активировал бы V_LINEAR_CONTROLLER вариант. Аргумент условия может быть простым выражением, состоящим из скалярных переменных, перечислений, равенства, неравенства, &&, и ~. Круглая скобка () может использоваться для группировки приоритета.

Для данного Различного блока Subsystem один вариант активен в процессе моделирования. Активный вариант определяется путем оценки различных объектных условий в базовом рабочем пространстве MATLAB. В качестве альтернативы можно дать Различному блоку Subsystem команду использовать определенный вариант путем выбора условий варианта Override и использования после различного флажка.

Определение вариантов

Модель, используемая в этом примере, требует, чтобы следующие переменные были заданы в базовом рабочем пространстве MATLAB:

V_LINEAR_CONTROLLER=Simulink.Variant('CTRL==1');

V_NONLINEAR_CONTROLLER=Simulink.Variant('CTRL==2');

CTRL=2;

Открытие модели sldemo_mdlref_variants запускает PreLoadFcn, заданный в File -> ModelProperties -> Callbacks. Этот коллбэк заполняет базовое рабочее пространство с переменными для Различного блока Subsystem под названием Контроллер:

Рисунок 1: топ-модель, sldemo_mdlref_variants

Щелкните правой кнопкой по Variant Subsystem block Controller и выберите пункт меню Block Parameters (Подсистема), чтобы открыть диалоговое окно блока.

Диалоговое окно задает два потенциальных варианта. Эти два варианта в свою очередь сопоставлены с двумя Simulink.Variant объекты V_LINEAR_CONTROLLER и V_NONLINEAR_CONTROLLER, которые существуют в базовом рабочем пространстве. Эти объекты имеют свойство под названием Условие, выражение, которое оценивает к булевской переменной и это определяет, какой вариант активен. Условие также показывают в Различном диалоговом окне блока Subsystem. В этом примере, условии V_LINEAR_CONTROLLER и V_NONLINEAR_CONTROLLER CTRL == 1 и CTRL == 2, соответственно. Переменная CTRL находится в базовом рабочем пространстве и может быть стандартная переменная MATLAB или Simulink.Parameter.

Переключение активных вариантов

Симулировать использование sldemo_mrv_linear_controllerDefine :

CTRL=1

в базовом рабочем пространстве и затем симулируют модель.

Рисунок 2: Симуляция с помощью sldemo_mrv_linear_controller вариант

Симулировать использование sldemo_nonlinear_controllerDefine

CTRL=2

в базовом рабочем пространстве и затем симулируют модель.

Рисунок 3: Симуляция с помощью sldemo_mrv_nonlinear_controller вариант

Перечисления и повторное использование

sldemo_mdlref_variants_enum модель иллюстрирует Simulink.Variant возможности:

1. Перечисления: классы перечисления MATLAB могут использоваться, чтобы улучшить удобочитаемость в условиях различного объекта.

2. Повторное использование: Simulink.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. Вариант возражает, что мы используем классы перечисления sldemo_mrv_BUILD_TYPE.m и sldemo_mrv_CONTROLLER_TYPE.m в Simulink.Variant Свойства условия улучшить удобочитаемость.

VE_PROTOTYPE и VE_PRODUCTION Simulink.Variant объекты снова используются через три блока Subsystem Варианта фильтра, Filter1, Filter2 и Filter3.

Открытие модели sldemo_mdlref_variants_enum запускает PreLoadFcn, заданный в File -> ModelProperties -> Callbacks. Этот коллбэк заполняет базовое рабочее пространство с переменными для Различных блоков Subsystem, которые отображены в командном окне MATLAB: