В фазе 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 прочь |
Заметьте, что использование записи через точку относится к На и От состояний для 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
к вашему графику выполните эти шаги:
Откройте модель Stage1Interface
— или тот вы создали в предыдущем осуществлении или предоставленной модели для этапа 1.
Чтобы открыть предоставленную модель, введите следующую команду в посдказке MATLAB:
addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples')) Stage1Interface
Сохраните модель как Stage2States
в вашей локальной папке работы.
В Stage2States
, дважды кликните блок Air Controller, чтобы открыть диаграмму Stateflow.
Редактор Stateflow для Воздушного Контроллера открывается на вашем рабочем столе. Заметьте объектную палитру на левой стороне окна редактора. Эта палитра отображает набор инструментов для рисования графических объектов диаграммы, включая состояния:
Щелкните левой кнопкой по значку инструмента состояния:
Переместите указатель в область рисунка.
Указатель превращается в прямоугольник, графическое представление состояния.
Щелкните в верхнем левом углу области рисунка, чтобы поместить состояние.
Новое состояние появляется с курсором мигающего текста в своем верхнем левом углу.
В текстовом курсоре введите PowerOn
назвать состояние.
Если вы щелкаете далеко от текстового курсора прежде, чем ввести новое имя, курсор превращается в вопросительный знак. Кликните по вопросительному знаку, чтобы восстановить текстовый курсор.
Переместите указатель в нижний правый угол прямоугольника, таким образом, это превращается в этот символ:
Перетащите нижний правый угол, чтобы увеличить состояние как показано:
Кликните по значку инструмента состояния снова и чертите меньшее состояние под названием PowerOff
в нижней части области рисунка, как это:
Сохраните график путем нажатия на Save во вкладке Simulation, но оставьте график открытым для следующего осуществления.
В Определении Штатов, чтобы Задать, вы изучили тот FAN1
, FAN2
, и SpeedValue
будет представлен параллелью (AND) подсостояния PowerOn
состояние. Параллельные состояния появляются графически как прямоугольники с пунктирными границами.
В этом наборе упражнений вы будете учиться как:
Присвойте параллельное разложение PowerOn
таким образом, его подсостояния могут быть активированы одновременно.
Вспомните, что разложение состояния определяет, будут ли его подсостояния исключительны или параллельны.
Добавьте, что параллель подутверждает к состоянию в графике.
Установите порядок выполнения для параллельных подсостояний.
Даже при том, что параллельные состояния могут быть активированы одновременно, они выполняются в последовательном порядке.
Выполните эти шаги:
В Воздушном Контроллере график щелкните правой кнопкой в PowerOn
.
Подменю открывается, представляя задачи, которые можно выполнить и свойства, которые можно установить для выбранного состояния.
В подменю выберите Decomposition> AND (Parallel).
Сохраните модель Stage2States
, но оставьте график открытым для следующего осуществления.
Выполните эти шаги:
Щелкните левой кнопкой по значку инструмента состояния в редакторе Stateflow и поместите два состояния в PowerOn
состояние.
Вместо того, чтобы использовать значок инструмента состояния, чтобы добавить несколько состояний, можно щелкнуть правой кнопкой в существующем состоянии и перетащить копию к новой позиции в графике. Этот ярлык удобен, когда необходимо создать состояния, одного размера и форма, такие как состояния вентилятора.
Заметьте внешний вид состояний, которые вы только добавили.
Границы двух состояний появляются как пунктирные линии, указывая, что они - параллельные состояния. Обратите внимание также, что подсостояния отображают числа в своих верхних правых углах. Эти числа задают порядок выполнения. Несмотря на то, что несколько параллелей (AND), состояния в том же графике активируются одновременно, график, должны определить, когда выполнить каждого в процессе моделирования.
Назовите новые подсостояния FAN1
и FAN2
.
Вы создали иерархию в Воздушном Контроллере график. PowerOn
теперь сверхсостояние в то время как FAN1
и FAN2
подсостояния. Ваш график должен выглядеть примерно так:
Ваш график не может показать тот же порядок выполнения для параллельных подсостояний FAN1
и FAN2
. Причина состоит в том, что по умолчанию программное обеспечение Stateflow заказывает параллельные состояния на основе порядка создания. Если вы добавляете FAN2
перед FAN1
в вашем графике, FAN2
перемещения к верхней части порядка. Вы подстроите порядок активации в более позднем осуществлении, Устанавливая Явное Упорядоченное расположение Параллельных состояний.
Если вы хотите переместить состояние вместе с его подсостояниями — и какие-либо другие графические объекты, оно содержит — дважды кликают состояние. Это стало серым, указывая, что состояние сгруппировано с объектами в нем и что они могут быть перемещены как модуль. Чтобы разгруппировать объекты, дважды кликните состояние снова.
Сохраните модель Stage2States
, но оставьте график открытым для следующего осуществления.
Вспомните тот SpeedValue
действия как состояние наблюдателя, которое контролирует состояние FAN1
и FAN2
состояния. Добавить SpeedValue
утвердите, выполните эти шаги:
Добавьте другое подсостояние в PowerOn
под FAN1
и FAN2
, или при помощи значка инструмента состояния или при помощи копирования существующего состояния в графике.
Вы можете должны быть изменить размер подсостояния, чтобы предотвратить перекрытие с другими подсостояниями, но остаться в пределах границ PowerOn
.
Назовите SpeedValue
состояния.
Как FAN1
и FAN2
, SpeedValue
появляется как параллельное подсостояние потому что его родительский элемент, сверхсостояние PowerOn
, имеет параллельное разложение.
Сохраните модель Stage2States
, но оставьте график открытым для следующего осуществления, Установив Явное Упорядоченное расположение Параллельных состояний.
Вспомните, что по умолчанию программное обеспечение Stateflow присваивает порядок выполнения параллельных состояний на основе порядка создания в графике. Это поведение называется явным упорядоченным расположением. В этом осуществлении вы установите порядок выполнения явным образом для каждого параллельного состояния в вашем графике.
В редакторе Stateflow, во вкладке Modeling, выбирают Chart Properties.
В диалоговом окне Свойств диаграммы проверьте, что флажок User-specified state/transition execution order выбран, и нажмите OK.
Эта опция также позволяет вам явным образом задать порядок, в котором выполняются переходы, когда существует выбор переходов взять от одного состояния до другого. Это поведение не применяется к Воздушному Контроллеру график, потому что это детерминировано: для каждого исключительного (OR) утверждают, существует один и только один переход к следующему исключительному (OR) состояние. Вы узнаете больше о переходах в Рисовании Переходов Между состояниями.
Присвойте порядок выполнения для каждого параллельного состояния в Воздушном Контроллере график:
Щелкните правой кнопкой в каждом параллельном состоянии, чтобы поднять его подменю государственной собственности.
Из подменю выберите Execution Order и сделайте эти присвоения:
Для состояния: | Присвоение: |
---|---|
FAN1 | 1 |
FAN2 | 2 |
SpeedValue | 3 |
Вот объяснение для этого порядка выполнения:
FAN1
должен выполниться сначала, потому что это циклически повторяется на при более низкой температуре, чем FAN2
.
SpeedValue
должен выполниться в последний раз, таким образом, это может наблюдать актуальнейшее состояние FAN1
и FAN2
.
Сохраните модель Stage2States
, но оставьте график открытым для следующего осуществления, Добавив На и От состояний для Вентиляторов.
В этом осуществлении вы войдете в и от подсостояний для каждого вентилятора. Поскольку вентиляторы не могут циклически повториться на и прочь одновременно, эти состояния должны быть исключительными, не параллельными. Даже при том, что FAN1
и FAN2
параллельные состояния, их разложение исключительно (OR) по умолчанию. В результате любое подсостояние, которое вы добавляете в FAN1
или FAN2
будет исключительное (OR) состояние.
Выполните эти шаги:
Добавьте два подсостояния в FAN1
и FAN2
.
Измените размер подсостояний, чтобы соответствовать в пределах границ FAN1
и FAN2
.
В каждом состоянии вентилятора назовите один On
подсостояния и назовите другой
Off
.
Ваш Воздушный Контроллер график должен теперь выглядеть примерно так:
Сохраните модель Stage2States
.
Куда пойти затем. Теперь вы готовы задать действия, которые выполняются, когда состояние активно.