exponenta event banner

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

В этом примере показано, как управлять активным выбором подсистемы исполнения, принадлежащей заблокированной пользовательской библиотеке, с помощью параметра маски в качестве переменной управления исполнения. Параметры маски ограничивают область действия переменной, что позволяет использовать одни и те же имена для управляющих переменных в разных областях. Этот пример включает повышенные параметры и управляющие выражения с классами перечисления для упрощения интерфейса диалогового окна маски и управляющие выражения с классами перечисления для улучшения читаемости выражений условий исполнения. Дополнительные сведения о исполнительных подсистемах см. в разделе Исполнительные подсистемы.

Модель

Чтобы открыть модель Simulink ®, введитеslexVariantSubsystemUsingMaskAndEnums в окне команд MATLAB ®.

Рассмотрим блок подсистемы Engine в заблокированной пользовательской библиотеке. slexVarEngineLibrary.

Диалоговое окно маски подсистемы содержит следующие параметры:

  • Тип механизма: при выборе значения для этого параметра Simulink присваивает индекс этого значения параметру маски engine. Во время моделирования значение engine используется для вычисления выражений условия исполнения для активации или деактивации базовых подсистем Turbo Engine и Non Turbo Engine.

  • Тип точности для турбомотора: этот параметр становится доступным, только если для параметра Тип двигателя установлено значение Turbo. Этот параметр передается в окно маски подсистемы Engine из базового уровня подсистемы Turbo Engine. При выборе значения для этого параметра Simulink присваивает индекс этого значения параметру маски enginetype подсистемы турбомотора. Во время моделирования значение enginetype используется для вычисления выражения условия исполнения для активации или деактивации базовых подсистем High, Medium и Low.

  • Тип точности для нетурбо-двигателя: этот параметр становится доступным, только если для параметра Тип двигателя установлено значение Non Turbo. Этот параметр передается в окно маски подсистемы Engine из базового уровня подсистемы 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 позволяет использовать одно и то же имя для переменных с различными значениями в подсистемах Turbo Engine и Non Turbo Engine.

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

  1. Для моделирования модели на вкладке Моделирование (Simulation) щелкните Выполнить (Run). В диалоговом окне маски подсистемы Engine для параметра Engine type установлено значение Non Turboи тип Fidelity для нетурбо двигателя установлен в 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 - неактивной.

Связанные темы