В этом примере показано, как управлять активным выбором Variant Subsystem, принадлежащего заблокированной пользовательской библиотеке, с помощью параметра mask как переменной Variant control. Параметры Mask ограничивают возможности переменной, что позволяет использовать те же имена для переменных управления в разных возможностях. Этот пример включает повышенные параметры и управляющие выражения с классами перечисления для упрощения интерфейса диалогового окна маски и управления выражениями с классами перечисления для улучшения читаемости выражений условий варианта. Для получения дополнительной информации о вариантных подсистемах смотрите Варианты Подсистемы.
Как открыть Simulink® модель, тип slexVariantSubsystemUsingMaskAndEnums
в MATLAB® Командное окно.
Рассмотрим блок Подсистем двигателей в заблокированной пользовательской библиотеке, slexVarEngineLibrary
.
Диалоговое окно маски подсистемы содержит следующие параметры:
Engine type: Когда вы выбираете значение для этого параметра, Simulink присваивает индекс этого значения параметру маски engine
. Во время симуляции значение engine
используется для вычисления выражений условий варианта для активации или деактивации базовых подсистем Turbo Engine и Non Turbo Engine.
Fidelity type for turbo engine: Этот параметр становится доступным только, если для параметра Engine type задано значение Turbo
. Этот параметр переносится в диалоговое окно маски подсистем двигателей с базового слоя подсистемы Turbo Engine. Когда вы выбираете значение для этого параметра, Simulink присваивает индекс этого значения параметру маски enginetype
подсистемы Turbo Engine. Во время симуляции значение enginetype
используется для вычисления выражения условия варианта для активации или деактивации базовых подсистем High, Medium и Low.
Fidelity type for non turbo engine: Этот параметр становится доступным только, если для параметра Engine type задано значение Non Turbo
. Этот параметр переносится в диалоговое окно маски подсистем двигателей с базового слоя подсистемы Non Turbo Engine. Когда вы выбираете значение для этого параметра, Simulink присваивает индекс этого значения параметру маски enginetype
подсистемы Non Turbo Engine. Во время симуляции значение enginetype
используется для вычисления выражения условия варианта для активации или деактивации базовых подсистем High, Medium и Low.
Область возможностей enginetype
в Подсистеме Turbo Engine отличается от возможностей enginetype
в Подсистеме Non Turbo Engine. enginetype
Turbo Engine виден только базовым слоям Подсистемы Turbo Engine. Точно так же enginetype
Non Turbo Engine виден только базовым слоям Подсистемы Non Turbo Engine. Ограничение возможностей при помощи параметров маски как переменных Variant control позволяет вам использовать то же имя для переменных с различными значениями в подсистемах Turbo Engine и Non Turbo Engine.
Чтобы симулировать модель, на вкладке Simulation, нажмите запуск. В масочном диалоге Подсистем двигателей параметр Engine type устанавливается в Non Turbo
, и значение Fidelity type for non turbo engine устанавливается равным Medium
. Поскольку эти параметры сопоставлены с индексом параметров маски engine
и engineType
, значение engine
установлено в 2
, и значение engineType
установлено в 1
. Здесь, 2
задает индекс Non Turbo
опция, и 1
задает индекс High
опция. Дополнительные сведения о том, как параметры в диалоговом окне маски сопоставлены с базовыми параметрами маски, см. в разделе «Создание простой маски».
Во время симуляции выражения условий engine == Engine.NONTURBO
и engineType == EngineFidelity.MEDIUM
рассчитать, чтобы true
. Здесь, Engine
и EngineFidelity
являются целочисленными классами перечисления, заданными в Engine.m
и EngineFidelity.m
файлы со значениями для Engine.TURBO
и Engine.NONTURBO
задается как 1
и 2
, и значения для EngineFidelity.HIGH
, EngineFidelity.MEDIUM
, и EngineFidelity.LOW
задается как 1
, 2
, и 3
.
Подсистема NonTurbo Engine становится активной, и подсистема Turbo Engine становится неактивной.
Чтобы изменить активный выбор, выберите Turbo
в диалоговом окне «Маска», затем снова моделируйте модель. Во время симуляции значение engine
установлено в 1
, который оценивает условие варианта engine == Engine.TURBO
на true
. Подсистема Turbo Engine становится активной, а Подсистема Non Turbo Engine становится неактивной.