Реализация Штатов, чтобы представлять рабочие режимы

В фазе 2 этого рабочего процесса вы задаете состояния для моделирования каждого режима работы.

Создайте его сами или используйте предоставленную модель

Чтобы реализовать состояния самостоятельно, выполните упражнения в этом разделе. В противном случае откройте предоставленную модель путем ввода этой команды в подсказке MATLAB®:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))
Stage2States

Конструктивные соображения для определения Штатов

Следующие разделы описывают объяснение для иерархии и разложения состояний в графике.

Когда использовать состояния

Использовать ли состояния, зависит от управляющей логики, которую вы хотите реализовать. Можно смоделировать два типа управляющей логики: конечные автоматы и блок-схемы не сохраняющие состояние. Каждый тип оптимизирован для различных приложений, можно следующим образом:

Управляющая логика Оптимизированный для моделирования
Конечные автоматыФизические системы, что переход между конечным числом рабочих режимов. В графиках Stateflow® вы представляете каждый режим как состояние.
Блок-схемы не сохраняющие состояниеАбстрактные логические шаблоны — такие как if, if-else, и case операторы — и итерационные циклы — такие как forв то время как, и do циклы. Вы представляете эти логические построения соединительными соединениями и переходами в диаграммах Stateflow. Никакие состояния не требуются.

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

Определение Штатов, чтобы задать

Режимы работы модели States в физической системе. Определить номер и тип состояний потребовало для вашего Воздушного Контроллера графика, необходимо идентифицировать каждый режим, в котором может действовать система. Часто, таблица или сетка полезны для анализа каждого режима и определения зависимостей между режимами.

Анализ Рабочих режимов.  Для Воздушного Контроллера режимы работы

Рабочий режимОписаниеЗависимости
ВыключитьсяВыключает всю степень в системе управленияНикакой вентилятор не может действовать, когда степень выключена.
ВключитьсяВключает всю степень в системе управленияНуль, один, или два вентилятора может действовать, когда степень включена.
Вентилятор 1Активирует поклонника 1Фэн 1 может быть активным в то же время, что и Фэн 2. Когда активировано, Фэн 1 может включить или выключить.
Вентилятор 1 наЦиклы на вентиляторе 1Фэн 1 На может быть активным, если Фэн 1 активен, и степень включена.
Вентилятор 1 прочьЦиклы от вентилятора 1Фэн 1 Прочь может быть активным, если Фэн 1 активен, и степень включена.
Вентилятор 2Активирует поклонника 2Фэн 2 может быть активным в то же время, что и Фэн 1. Когда активировано, Фэн 2 может включить или выключить.
Вентилятор 2 наЦиклы на вентиляторе 2Фэн 2 На может быть активным, если Фэн 2 активен, и степень включена.
Вентилятор 2 прочьЦиклы от вентилятора 2Фэн 2 Прочь может быть активным, если Фэн 2 активен, и степень включена.
Вычислите поток воздухаВычисляет постоянное значение 0, 1, или 2, чтобы указать, как быстрый воздух течет. Выводит это значение к подсистеме Simulink® для выбора охлаждающегося фактора.Вычисляет постоянное значение, на основе того, на скольких циклически повторились вентиляторы на каждом временном шаге.

Количество состояний, чтобы Задать.  Количество состояний зависит от количества рабочих режимов, которые будут представлены. В Анализе Рабочих режимов вы узнали, что у Воздушного Контроллера график есть девять рабочих режимов. Поэтому необходимо задать девять состояний, чтобы смоделировать каждый режим. Вот имена, которые вы присвоите состояниям, которые представляют каждый рабочий режим в Implementing the States, чтобы Представлять Рабочие режимы:

Имя состоянияРабочий режим
PowerOffВыключиться
PowerOnВключиться
FAN1Вентилятор 1
FAN2Вентилятор 2
SpeedValueВычислите поток воздуха
FAN1.OnВентилятор 1 на
FAN1.OffВентилятор 1 прочь
FAN2.OnВентилятор 2 на
FAN2.OffВентилятор 2 прочь

Примечание

Заметьте, что использование записи через точку относится к На и состояния Off для FAN1 и FAN2. Вы используете запись через точку пространства имен, чтобы дать уникальные идентификаторы объектов, когда у них есть то же имя в различных частях иерархии графика.

Определение иерархии состояний

Объекты Stateflow могут существовать в иерархии. Например, состояния могут содержать другие состояния — называемый подсостояниями — и, в свою очередь, могут содержаться в других состояниях — называемый сверхсостояниями. Необходимо определить иерархическую структуру состояний, вы зададите для Воздушного Контроллера график. Часто, зависимости среди состояний подразумевают иерархическое отношение — такое как родительский элемент дочернему элементу — между состояниями.

На основе зависимостей, описанных в Анализе Рабочих режимов, вот является анализ иерархии состояния для Воздушного Контроллера графиком:

Зависимые состоянияПодразумеваемая иерархия
FAN1 и FAN2 зависьте от PowerOn. Никакой вентилятор не может действовать если PowerOn активно.FAN1 и FAN2 должны быть подсостояния PowerOn состояние.
FAN1.On и FAN1.Off зависьте от Fan1 и PowerOn. FAN1 должно быть активным, прежде чем это сможет быть циклически повторено на или прочь.FAN1 должен иметь два подсостояния, On и Off. В этом иерархическом отношении, On и Off наследуется FAN1 зависимость от PowerOn.
FAN2.On и FAN2.Off зависьте от FAN2 и PowerOn. FAN2 должно быть активным, прежде чем это сможет быть циклически повторено на или прочь.FAN2 должен иметь два подсостояния, On и Off. В этом иерархическом отношении, On и Off наследуется FAN2 зависимость от PowerOn.
Состояние, которое вычисляет поток воздуха, должно знать, сколько вентиляторов запускается на каждом временном шаге.Состояние, которое вычисляет поток воздуха, должно быть подсостоянием PowerOn таким образом, это может проверять состояние FAN1 и FAN2 на том же уровне иерархии.

Определение разложения состояний

Разложение состояния диктует, выполняются ли его подсостояния исключительно друг друга — как исключительные (OR) состояния — или могут быть активированы одновременно — как параллель (AND) состояния. Никакие два, исключительные (OR), состояния могут когда-либо быть активными одновременно, в то время как любое количество параллели (AND) состояния могут быть активированы одновременно.

Воздушный Контроллер график требует обоих типов состояний. Вот отказ исключительного (OR) и параллель (AND) состояния, требуемые для диаграммы Stateflow:

СостояниеРазложениеОбъяснение
PowerOff, PowerOnИсключительный (OR) состоянияСтепень никогда не может быть включена и прочь одновременно.
FAN1, FAN2Параллель (AND) состоянияНуль, один, или два вентилятора может действовать одновременно, в зависимости от того, сколько охлаждения требуется.
FAN1.On, FAN1.OffИсключительный (OR) состоянияВентилятор 1 никогда не может работать и прочь одновременно.
FAN2.On, FAN2.OffИсключительный (OR) состоянияВентилятор 2 никогда не может работать и прочь одновременно.
SpeedValueПараллель (AND) состояниеSpeedValue наблюдатель, утверждают, что контролирует состояние Фэна 1 и Фэна 2, обновляя его выход на основе того, сколько вентиляторов действует на каждом временном шаге. SpeedValue должен быть активирован в то же время, что и Фэн 1 и Фэн 2, но выполняются в последний раз, таким образом, это может получить актуальнейшее состояние вентиляторов.

Включение состояний Off степени и степени

Когда вы добавите состояния в Воздушный Контроллер график, вы будете работать от верхней части вниз в иерархии Stateflow. Когда вы учились в Определении Разложения состояний, PowerOff и PowerOn состояния исключительны (OR) состояния, которые выключают и включают степень в системе управления. Эти состояния никогда не активны одновременно. По умолчанию состояния исключительны (OR) состояния, представленные графически как прямоугольники со сплошными границами.

Добавить PowerOn и PowerOff к вашему графику выполните эти шаги:

  1. Откройте модель Stage1Interface — или тот вы создали в предыдущем осуществлении или предоставленной модели для этапа 1.

    Чтобы открыть предоставленную модель, введите следующую команду в подсказке MATLAB:

    addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))
    Stage1Interface

  2. Сохраните модель как Stage2States в вашей локальной папке работы.

  3. В Stage2States, дважды кликните блок Air Controller, чтобы открыть диаграмму Stateflow.

    Редактор Stateflow для Воздушного Контроллера открывается на вашем рабочем столе. Заметьте объектную палитру на левой стороне окна редактора. Эта палитра отображает набор инструментов для рисования графических объектов диаграммы, включая состояния:

  4. Щелкните левой кнопкой по значку инструмента состояния:

  5. Переместите указатель в область рисунка.

    Указатель превращается в прямоугольник, графическое представление состояния.

  6. Щелкните в верхнем левом углу области рисунка, чтобы поместить состояние.

    Новое состояние появляется с курсором мигающего текста в своем верхнем левом углу.

  7. В текстовом курсоре введите PowerOn назвать состояние.

    Совет

    Если вы щелкаете далеко от текстового курсора прежде, чем ввести новое имя, курсор превращается в вопросительный знак. Кликните по вопросительному знаку, чтобы восстановить текстовый курсор.

  8. Переместите указатель в нижний правый угол прямоугольника, таким образом, это превращается в этот символ:

  9. Перетащите нижний правый угол, чтобы увеличить состояние как показано:

  10. Кликните по значку инструмента состояния снова и чертите меньшее состояние под названием PowerOff в нижней части области рисунка, как это:

  11. Сохраните график путем нажатия на Save во вкладке Simulation, но оставьте график открытым для следующего осуществления.

Добавление и конфигурирование параллельных состояний

В Определении Штатов, чтобы Задать, вы изучили тот FAN1, FAN2, и SpeedValue будет представлен параллелью (AND) подсостояния PowerOn состояние. Параллельные состояния появляются графически как прямоугольники с пунктирными границами.

В этом наборе упражнений вы будете учиться как:

  • Присвойте параллельное разложение PowerOn таким образом, его подсостояния могут быть активированы одновременно.

    Вспомните, что разложение состояния определяет, будут ли его подсостояния исключительны или параллельны.

  • Добавьте, что параллель подутверждает к состоянию в графике.

  • Установите порядок выполнения для параллельных подсостояний.

    Даже при том, что параллельные состояния могут быть активированы одновременно, они выполняются в последовательном порядке.

Установка параллельного разложения

Выполните эти шаги:

  1. В Воздушном Контроллере график щелкните правой кнопкой в PowerOn.

    Подменю открывается, представляя задачи, которые можно выполнить и свойства, которые можно установить для выбранного состояния.

  2. В подменю выберите Decomposition> AND (Parallel).

  3. Сохраните модель Stage2States, но оставьте график открытым для следующего осуществления.

Добавление состояний вентилятора

Выполните эти шаги:

  1. Щелкните левой кнопкой по значку инструмента состояния в редакторе Stateflow и поместите два состояния в PowerOn состояние.

    Совет

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

  2. Заметьте внешний вид состояний, которые вы только добавили.

    Границы двух состояний появляются как пунктирные линии, указывая, что они - параллельные состояния. Обратите внимание также, что подсостояния отображают числа в своих верхних правых углах. Эти числа задают порядок выполнения. Несмотря на то, что несколько параллелей (AND), состояния в том же графике активируются одновременно, график, должны определить, когда выполнить каждого в процессе моделирования.

  3. Назовите новые подсостояния FAN1 и FAN2.

    Вы создали иерархию в Воздушном Контроллере график. PowerOn теперь сверхсостояние в то время как FAN1 и FAN2 подсостояния. Ваш график должен выглядеть примерно так:

    Примечание

    Ваш график не может показать тот же порядок выполнения для параллельных подсостояний FAN1 и FAN2. Причина состоит в том, что по умолчанию программное обеспечение Stateflow заказывает параллельные состояния на основе порядка создания. Если вы добавляете FAN2 перед FAN1 в вашем графике, FAN2 перемещения к верхней части порядка. Вы подстроите порядок активации в более позднем осуществлении, Устанавливая Явное Упорядоченное расположение Параллельных состояний.

    Совет

    Если вы хотите переместить состояние вместе с его подсостояниями — и какие-либо другие графические объекты, оно содержит — дважды кликают состояние. Это стало серым, указывая, что состояние сгруппировано с объектами в нем и что они могут быть перемещены как модуль. Чтобы разгруппировать объекты, дважды кликните состояние снова.

  4. Сохраните модель Stage2States, но оставьте график открытым для следующего осуществления.

Добавление SpeedValue Состояние

Вспомните тот SpeedValue действия как состояние наблюдателя, которое контролирует состояние FAN1 и FAN2 состояния. Добавить SpeedValue утвердите, выполните эти шаги:

  1. Добавьте другое подсостояние в PowerOn под FAN1 и FAN2, или при помощи значка инструмента состояния или при помощи копирования существующего состояния в графике.

    Вы можете должны быть изменить размер подсостояния, чтобы предотвратить перекрытие с другими подсостояниями, но остаться в пределах границ PowerOn.

  2. Назовите SpeedValue состояния.

    Как FAN1 и FAN2, SpeedValue появляется как параллельное подсостояние потому что его родительский элемент, сверхсостояние PowerOn, имеет параллельное разложение.

  3. Сохраните модель Stage2States, но оставьте график открытым для следующего осуществления, Установив Явное Упорядоченное расположение Параллельных состояний.

Установка явного упорядоченного расположения параллельных состояний

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

  1. В редакторе Stateflow, во вкладке Modeling, выбирают Chart Properties.

  2. В диалоговом окне Свойств диаграммы проверьте, что флажок User-specified state/transition execution order выбран, и нажмите OK.

    Примечание

    Эта опция также позволяет вам явным образом задать порядок, в котором выполняются переходы, когда существует выбор переходов взять от одного состояния до другого. Это поведение не применяется к Воздушному Контроллеру график, потому что это детерминировано: для каждого исключительного (OR) утверждают, существует один и только один переход к следующему исключительному (OR) состояние. Вы узнаете больше о переходах в Рисовании Переходов Между состояниями.

  3. Присвойте порядок выполнения для каждого параллельного состояния в Воздушном Контроллере график:

    1. Щелкните правой кнопкой в каждом параллельном состоянии, чтобы поднять его подменю государственной собственности.

    2. Из подменю выберите Execution Order и сделайте эти присвоения:

      Для состояния:Присвоение:
      FAN11
      FAN22
      SpeedValue3

      Вот объяснение для этого порядка выполнения:

      • FAN1 должен выполниться сначала, потому что это циклически повторяется на при более низкой температуре, чем FAN2.

      • SpeedValue должен выполниться в последний раз, таким образом, это может наблюдать актуальнейшее состояние FAN1 и FAN2.

  4. Сохраните модель Stage2States, но оставьте график открытым для следующего осуществления, Добавив На и состояния Off для Вентиляторов.

Добавление на и состояния Off для вентиляторов

В этом осуществлении вы войдете в и от подсостояний для каждого вентилятора. Поскольку вентиляторы не могут циклически повториться на и прочь одновременно, эти состояния должны быть исключительными, не параллельными. Даже при том, что FAN1 и FAN2 параллельные состояния, их разложение исключительно (OR) по умолчанию. В результате любое подсостояние, которое вы добавляете в FAN1 или FAN2 будет исключительное (OR) состояние.

Выполните эти шаги:

  1. Добавьте два подсостояния в FAN1 и FAN2.

  2. Измените размер подсостояний, чтобы соответствовать в пределах границ FAN1 и FAN2.

  3. В каждом состоянии вентилятора назовите один On подсостояния и назовите другой Off.

    Ваш Воздушный Контроллер график должен теперь выглядеть примерно так:

  4. Сохраните модель Stage2States.

Куда пойти затем.  Теперь вы готовы задать действия, которые выполняются, когда состояние активно.