Чтобы добавить переходы самостоятельно, выполните упражнения в этом разделе. В противном случае откройте предоставленную модель, чтобы видеть, как переходы должны появиться в графике. Введите эту команду в подсказке 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. В зависимости от того, где, и как вы задаете события, они могут инициировать переход, чтобы произойти, действие, которое будет выполняться, и утвердить состояние, которое будет оценено. В этом осуществлении вы зададите событие, которое инициировало переходы.
Как вы узнали в Решении, Как охране Переходы, система управления должна включиться и прочь равномерно. Вы моделируете это поведение первым определением события, которое происходит при повышении или падающем ребре входного сигнала и затем соединении того события с переходами между состояниями PowerOff
и PowerOn
.
Выполните эти шаги, чтобы задать запускаемое фронтом событие и сопоставить его с переходами:
В редакторе Stateflow добавьте входное событие путем выбора Chart> Add Inputs & Outputs> Event Input From Simulink.
Диалоговое окно свойств 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
.
Куда пойти затем. Теперь вы готовы реализовать запускаемое фронтом событие, чтобы разбудить график равномерно. Смотрите Реализацию Триггеров.