В фазе 4 этого рабочего процесса вы задаете переходы между состояниями.
Чтобы добавить переходы самостоятельно, выполните упражнения в этом разделе. В противном случае откройте предоставленную модель, чтобы видеть, как переходы должны появиться в графике. Введите эту команду в подсказке MATLAB®:
addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples')) Stage4Transitions
Следующие разделы описывают решения, которые вы принимаете для определения изменений состояния.
Переходы создают пути для логического потока системы от одного состояния до другого. Когда переход взят из состояния, чтобы утвердить B, утвердить, что A становится неактивным, и состояние B становится активным.
Переходы имеют направление и представлены в графике Stateflow® линиями с наконечниками стрелки. Переходы однонаправлены, не двунаправлены. Необходимо добавить переход для каждого направления потока между двумя состояниями.
Исключительный (OR) состояния требуют переходов. Вспомните, что никакие два исключительных состояния не могут быть активными одновременно. Поэтому необходимо добавить переходы, чтобы задать когда и где потоки управления от одного исключительного состояния до другого.
Как правило, параллель (AND), состояния не требуют переходов, потому что они выполняются одновременно.
Воздушный Контроллер график моделирует систему, в которой степень может циклически повториться на и прочь и, в то время как степень включена, вентиляторы, может циклически повториться на и прочь. Шесть исключительных (OR) состояния представляют эти рабочие режимы. Чтобы смоделировать это действие, необходимо добавить следующие переходы между исключительным (OR) состояния:
PowerOff
к PowerOn
PowerOn
к PowerOff
FAN1.Off
к FAN1.On
FAN1.On
к FAN1.Off
FAN2.Off
к FAN2.On
FAN2.On
к FAN2.Off
Хорошая практика проекта требует, чтобы вы задали переходы по умолчанию для исключительного (OR) состояния на каждом уровне иерархии. Переходы по умолчанию указывают, который исключительный (OR) состояние должно быть активным, когда существует неоднозначность между двумя или больше исключительными (OR) состояния на том же уровне в иерархии Stateflow. Существует три таких области неоднозначности в Воздушном Контроллере график:
Когда график просыпается, степень должна быть включена или прочь?
Когда FAN1
становится активным, это должно быть включено или прочь?
Когда FAN2
становится активным, это должно быть включено или прочь?
В каждом случае начальное состояние должно быть прочь, таким образом, вы добавите переходы по умолчанию к состояниям PowerOff
, FAN1.Off
, и FAN2.Off
.
Защита перехода означает задавать условие, действие или событие, которое позволяет переходу быть взятым от одного состояния до другого. На основе проекта Воздушного Контроллера график вот требования для защиты переходов от одного исключительного рабочего режима до другого:
Переход | Когда это должно произойти? | Как охране это |
---|---|---|
| В интервалах постоянного времени | Задайте запускаемое фронтом событие |
| ||
| Когда температура физического объекта повышается выше 120 градусов | Задайте условие на основе температурного значения |
| Когда температура физического объекта падает ниже 120 градусов | |
| Когда температура повышается выше 150 градусов, порог, указывающий, что первый вентилятор не обеспечивает необходимое количество охлаждения | |
| Когда температура падает ниже 150 градусов |
В Конструктивных соображениях для Определения Переходов Между состояниями вы узнали, что следующие переходы происходят в Воздушном Контроллере график:
Степень для системы управления может циклически повториться на и прочь.
Каждый вентилятор может циклически повториться на и прочь.
Вы смоделируете это действие путем рисования переходов между PowerOn
и PowerOff
состояния и между On
и Off
состояния для каждого вентилятора. Выполните эти шаги:
Откройте модель Stage3Actions
— или тот вы создали в предыдущих упражнениях или предоставленной модели для этапа 3.
Чтобы открыть предоставленную модель, введите следующую команду в посдказке MATLAB:
addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples')) Stage3Actions
Сохраните модель как Stage4Transitions
в вашей локальной папке работы.
В Stage4Transitions
, дважды кликните блок Air Controller, чтобы открыть диаграмму Stateflow.
График открывается на вашем рабочем столе.
Чертите переходы между PowerOff
к PowerOn
состояния:
Переместите указатель через верхний край PowerOff
пока форма указателя не превращается в крест нитей.
Удерживайте левую кнопку мыши, перетащите указатель к базовому краю PowerOn
, и выпустите мышь.
Необходимо видеть, что переход указывает от PowerOff
к PowerOn
:
Выполните ту же процедуру, чтобы чертить переход от PowerOn
к PowerOff
.
Ваш график должен теперь выглядеть так:
Выполните процедуру, описанную на шаге 3, чтобы чертить следующие переходы между Off
и On
состояния для каждого вентилятора:
Переход от Off
к On
в FAN1
Переход от On
к Off
в FAN1
Переход от Off
к On
в FAN2
Переход от On
к Off
в FAN2
Ваш график должен теперь выглядеть так:
Сохраните Stage4Transitions
, но оставьте график открытым для следующего осуществления.
В Решении, Где к Переходам Плэйс-Дефо, вы узнали, что необходимо добавить переходы по умолчанию к PowerOff
, FAN1.Off
, и FAN2.Off
. Выполните эти шаги:
В редакторе Stateflow щелкните левой кнопкой по значку перехода по умолчанию в объектной палитре:
Переместите указатель в область рисунка.
Указатель превращается в диагональную стрелу.
Поместите указатель на левом крае PowerOff
состояние.
Когда стрела станет ортогональной к ребру, отпустите кнопку мыши.
Переход по умолчанию присоединяет к PowerOff
состояние. Это появляется как направленная линия со стрелой в своей голове и закрытом хвосте:
Повторите ту же процедуру, чтобы добавить переходы по умолчанию в верхних краях FAN1.Off
и FAN2.Off
.
Ваш график должен теперь выглядеть так:
Местоположение хвоста перехода по умолчанию определяет состояние, которое это активирует. Поэтому убедитесь, что ваш переход по умолчанию соответствует полностью в родительском элементе состояния, которое это активирует. В Воздушном Контроллере график, изображенный выше, заметьте что переход по умолчанию для FAN1.Off
правильно находится в родительском состоянии, FAN1
. Теперь рассмотрите этот график:
В этом примере хвост перехода по умолчанию находится в PowerOn
, не в FAN1
. Поэтому это активирует FAN1
вместо FAN1.Off
.
Сохраните Stage4Transitions
, но оставьте график открытым для следующего осуществления.
Условиями являются выражения, заключенные в квадратные скобки, которые оценивают к TRUE или FALSE. Когда условие верно, переход взят к целевому состоянию; когда условие является ложным, переход не взят, и состояние источника остается активным.
Когда вы учились в Решении Как охране Переходы, цикл вентиляторов на и прочь в зависимости от температуры воздуха. В этом осуществлении вы добавите условия в переходы в FAN1
и FAN2
та модель это поведение.
Выполните эти шаги:
Кликните по переходу от FAN1.Off
к FAN1.On
.
Переход кажется подсвеченным и отображает вопросительный знак (?
).
Щелкните рядом с вопросительным знаком, чтобы отобразить курсор мигающего текста.
Введите следующее выражение:
[temp >= 120]
Вы, возможно, должны изменить местоположение условия для удобочитаемости. Щелкните вне условия, затем щелкните левой кнопкой и перетащите выражение условия к новому местоположению.
Повторите эти шаги, чтобы добавить следующие условия в другие переходы в FAN1
и FAN2
:
Переход | Условие |
---|---|
FAN1.On к FAN1.Off | [временный файл <120] |
FAN2.Off к FAN2.On | [временный файл> = 150] |
FAN2.On к FAN2.Off | [временный файл <150] |
Ваш график должен выглядеть так:
Сохраните Stage4Transitions
, но оставьте график открытым для следующего осуществления.
События являются неграфическими объектами, которые инициировали действия во время выполнения диаграммы Stateflow. В зависимости от того, где, и как вы задаете события, они могут инициировать переход, чтобы произойти, действие, которое будет выполняться, и утвердить состояние, которое будет оценено. В этом осуществлении вы зададите событие, которое инициировало переходы.
Как вы узнали в Решении, Как охране Переходы, система управления должна включиться и прочь равномерно. Вы моделируете это поведение первым определением события, которое происходит при повышении или падающем ребре входного сигнала и затем соединении того события с переходами между PowerOn
и PowerOff
состояния.
Выполните эти шаги, чтобы задать запускаемое фронтом событие и сопоставить его с переходами:
От редактора Stateflow, во вкладке Modeling, под Design Data, нажимают Event Input.
Диалоговое окно свойств Event открывается на вашем рабочем столе:
Обратите внимание на то, что событие присвоено инициировать порт 1.
Отредактируйте следующие свойства:
Свойство | Что задать |
---|---|
Имя | Поменяйте имя на SWITCH . |
Триггер | Выберите Either в выпадающем меню, таким образом, событие может быть инициировано или возрастающим ребром или падающим ребром сигнала. |
Нажмите OK, чтобы записать изменения и закрыть диалоговое окно.
Оглянитесь назад на модель и заметьте, что триггерный порт появляется наверху блока Stateflow:
Когда вы задаете одно или несколько входных событий для графика, программное обеспечение Stateflow добавляет один триггерный порт в блок. Внешние блоки Simulink® могут инициировать входные события через сигнал или вектор сигналов, соединенных с триггерным портом.
Назад в редакторе Stateflow, сопоставьте входное событие SWITCH
с переходами:
Выберите переход от PowerOff
к PowerOn
и кликните по вопросительному знаку, чтобы получить текстовый курсор.
Введите имя события, которое вы только задали, SWITCH
.
Вы можете должны быть изменить местоположение текста события для удобочитаемости. Если так, щелкните вне текста, щелкните левой кнопкой по тексту и перетащите его к желаемому местоположению.
Повторите эти шаги, чтобы добавить то же событие, SWITCH
, к переходу от PowerOn
к PowerOff
.
Ваш график должен теперь выглядеть примерно так:
Теперь, когда вы сопоставили эти переходы с событием SWITCH
, система управления будет поочередно включаться и от каждого раза SWITCH
происходит — то есть, каждый раз, когда график обнаруживает повышение или падающее ребро сигнала.
Обратите внимание на то, что sf_aircontrol
модель уже задала импульсный SWITCH
сигнала в блоке Signal Builder в верхнем уровне иерархии модели:
В следующей фазе рабочего процесса вы соедините свою диаграмму Stateflow с SWITCH
предупредите, чтобы инициировать переходы между, включаются и выключаются.
Сохраните Stage4Transitions
.
Куда пойти затем. Теперь вы готовы реализовать запускаемое фронтом событие, чтобы разбудить график равномерно. Смотрите Реализацию Триггеров.