Управление активным выбором подсистемы варианта заблокированной пользовательской библиотеки с помощью параметра Mask

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

Переключение между активными вариантами

  1. Чтобы симулировать модель, на вкладке 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 становится неактивной.

  2. Чтобы изменить активный выбор, выберите Turbo в диалоговом окне «Маска», затем снова моделируйте модель. Во время симуляции значение engine установлено в 1, который оценивает условие варианта engine == Engine.TURBO на true. Подсистема Turbo Engine становится активной, а Подсистема Non Turbo Engine становится неактивной.

Похожие темы