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

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

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

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

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

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

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

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

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

Примечание

Заметьте, что использование записи через точку относится к На и От состояний для 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, но выполняются в последний раз, таким образом, он может получить актуальнейшее состояние вентиляторов.

Включение степени и выключает состояния

Когда вы добавите состояния в Воздушный Контроллер график, вы будете работать от верхней части вниз в иерархии 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. Сохраните график путем выбора File> Save в редакторе Stateflow, но оставьте график открытым для следующего осуществления.

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

В Определении Штатов, чтобы Задать, вы узнали, что 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 действует как состояние наблюдателя, которое контролирует состояние состояний FAN2 и FAN1. Чтобы добавить состояние SpeedValue, выполните эти шаги:

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

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

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

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

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

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

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

  1. В редакторе Stateflow выберите File> Model Properties> 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, но оставьте график открытым для следующего осуществления, Добавив На и От состояний для Вентиляторов.

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

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

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

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

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

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

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

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

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

Для просмотра документации необходимо авторизоваться на сайте