Добавление переходов

В фазе 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.

Решение, как охране переходы

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

ПереходКогда это должно произойти?Как охране это

PowerOff к PowerOn

В интервалах постоянного времени

Задайте запускаемое фронтом событие

PowerOn к PowerOff

FAN1.Off к FAN1.On

Когда температура физического объекта повышается выше 120 градусов

Задайте условие на основе температурного значения

FAN1.On к FAN1.Off

Когда температура физического объекта падает ниже 120 градусов

FAN2.Off к FAN2.On

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

FAN2.On к FAN2.Off

Когда температура падает ниже 150 градусов

Рисование переходов между состояниями

В Конструктивных соображениях для Определения Переходов Между состояниями вы узнали, что следующие переходы происходят в Воздушном Контроллере график:

  • Степень для системы управления может циклически повториться на и прочь.

  • Каждый вентилятор может циклически повториться на и прочь.

Вы смоделируете это действие путем рисования переходов между PowerOn и PowerOff состояния и между On и Off состояния для каждого вентилятора. Выполните эти шаги:

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

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

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

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

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

    График открывается на вашем рабочем столе.

  4. Чертите переходы между PowerOff к PowerOn состояния:

    1. Переместите указатель через верхний край PowerOff пока форма указателя не превращается в крест нитей.

    2. Удерживайте левую кнопку мыши, перетащите указатель к базовому краю PowerOn, и выпустите мышь.

      Необходимо видеть, что переход указывает от PowerOff к PowerOn:

    3. Выполните ту же процедуру, чтобы чертить переход от PowerOn к PowerOff.

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

  5. Выполните процедуру, описанную на шаге 3, чтобы чертить следующие переходы между Off и On состояния для каждого вентилятора:

    • Переход от Off к On в FAN1

    • Переход от On к Off в FAN1

    • Переход от Off к On в FAN2

    • Переход от On к Off в FAN2

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

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

Добавление переходов по умолчанию

В Решении, Где к Переходам Плэйс-Дефо, вы узнали, что необходимо добавить переходы по умолчанию к PowerOff, FAN1.Off, и FAN2.Off. Выполните эти шаги:

  1. В редакторе Stateflow щелкните левой кнопкой по значку перехода по умолчанию в объектной палитре:

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

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

  3. Поместите указатель на левом крае PowerOff состояние.

  4. Когда стрела станет ортогональной к ребру, отпустите кнопку мыши.

    Переход по умолчанию присоединяет к PowerOff состояние. Это появляется как направленная линия со стрелой в своей голове и закрытом хвосте:

  5. Повторите ту же процедуру, чтобы добавить переходы по умолчанию в верхних краях FAN1.Off и FAN2.Off.

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

    Совет

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

    В этом примере хвост перехода по умолчанию находится в PowerOn, не в FAN1. Поэтому это активирует FAN1 вместо FAN1.Off.

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

Добавление условий к переходам охраны

Условиями являются выражения, заключенные в квадратные скобки, которые оценивают к TRUE или FALSE. Когда условие верно, переход взят к целевому состоянию; когда условие является ложным, переход не взят, и состояние источника остается активным.

Когда вы учились в Решении Как охране Переходы, цикл вентиляторов на и прочь в зависимости от температуры воздуха. В этом осуществлении вы добавите условия в переходы в FAN1 и FAN2 та модель это поведение.

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

  1. Кликните по переходу от FAN1.Off к FAN1.On.

    Переход кажется подсвеченным и отображает вопросительный знак (?).

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

  3. Введите следующее выражение:

    [temp >= 120]

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

  4. Повторите эти шаги, чтобы добавить следующие условия в другие переходы в FAN1 и FAN2:

    ПереходУсловие
    FAN1.On к FAN1.Off[временный файл <120]
    FAN2.Off к FAN2.On[временный файл> = 150]
    FAN2.On к FAN2.Off[временный файл <150]

    Ваш график должен выглядеть так:

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

Добавление Событий к переходам охраны

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

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

Выполните эти шаги, чтобы задать запускаемое фронтом событие и сопоставить его с переходами:

  1. От редактора Stateflow, во вкладке Modeling, под Design Data, нажимают Event Input.

    Диалоговое окно свойств Event открывается на вашем рабочем столе:

    Обратите внимание на то, что событие присвоено инициировать порт 1.

  2. Отредактируйте следующие свойства:

    СвойствоЧто задать
    ИмяПоменяйте имя на SWITCH.
    ТриггерВыберите Either в выпадающем меню, таким образом, событие может быть инициировано или возрастающим ребром или падающим ребром сигнала.
  3. Нажмите OK, чтобы записать изменения и закрыть диалоговое окно.

  4. Оглянитесь назад на модель и заметьте, что триггерный порт появляется наверху блока Stateflow:

    Когда вы задаете одно или несколько входных событий для графика, программное обеспечение Stateflow добавляет один триггерный порт в блок. Внешние блоки Simulink® могут инициировать входные события через сигнал или вектор из сигналов, соединенных с триггерным портом.

  5. Назад в редакторе Stateflow, сопоставьте входное событие SWITCH с переходами:

    1. Выберите переход от PowerOff к PowerOn и кликните по вопросительному знаку, чтобы получить текстовый курсор.

    2. Введите имя события, которое вы только задали, SWITCH.

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

    3. Повторите эти шаги, чтобы добавить то же событие, SWITCH, к переходу от PowerOn к PowerOff.

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

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

    Обратите внимание на то, что sf_aircontrol модель уже задала импульсный SWITCH сигнала в блоке Signal Builder в верхнем уровне иерархии модели:

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

  6. Сохраните Stage4Transitions.

Куда пойти затем.  Теперь вы готовы реализовать запускаемое фронтом событие, чтобы разбудить график равномерно. Смотрите Реализацию Триггеров.