Введите график или состояние

График и вход в состояние происходит, когда:

  • Впервые активируется график. Это называется инициализацией графика.

  • Допустимый переход в состояние существует. См. «Оценка переходов».

Рабочий процесс для ввода графика или состояния

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

Запись на графике

Первый раз, когда ваша диаграмма Stateflow становится активной, называется инициализацией. Когда происходит инициализация вашего графика, вводится график, и Stateflow выполняет любые переходы по умолчанию для исключительных состояний (OR). Если состояния на верхнем уровне графика параллельны (AND), они становятся активными на основе номера порядка.

Если вы хотите, чтобы ваш график принимал любые изменения по умолчанию перед временем t = 0в диалоговом окне Графика Свойств установите флажок Execute (enter) chart at initialization. Эта опция заставляет диаграмму Stateflow инициализировать одновременно с Simulink® инициализация. Пути перехода по умолчанию для графика затем выполняются во время фазы инициализации модели.

Вход в состояние

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

  • Входящий переход пересекает контуры состояний.

  • Входящий переход заканчивается на контуре состояния.

  • Состояние является дочерним элементом параллельного состояния активного состояния.

Действия входа

Действия входа предшествует префикс entry или en кратко, далее следует необходимая двоеточие (:), а затем одно или несколько действий. Вы разделяете несколько действий при помощи возврата каретки, точки с запятой (;), или запятая (,). Если вы явно не задаете тип состояния активности для оператора, график рассматривает этот оператор как entry, during действие.

Введите диаграмму Stateflow

В этом примере, когда первый раз график становится активным, происходит инициализация диаграммы.

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

  1. Действия перехода по умолчанию выполняются, и x = 0, y = 0, и z = 0.

  2. StateA отмечен для ввода.

  3. StateA не является подсостоянием неактивного родительского элемента. Выполните entry действия для StateA. Теперь x = 1.

  4. StateA - состояние, которое первоначально было помечено для входа.

  5. StateA не содержит никаких исторических соединений.

  6. Существует переход по умолчанию к подсостояние, StateA1. Перейдите к потоку «Оценить переходы» график.

  7. Следуя потоку Evaluate Transitions графика, отметьте StateA1 для entry. Перейдите к блоку Exit Actions графика.

  8. Текущее состояние, StateA, является суперштатом состояния назначения, StateA1. Вернитесь к Действиям входа графика потока.

  9. StateA1 не является подсостоянием неактивного родительского элемента. Выполните entry действия для StateA1. Теперь x = 3.

  10. StateA1 - состояние, которое первоначально было помечено для входа.

  11. StateA1 не содержит никаких исторических соединений.

  12. StateA1 не содержит никаких переходов по умолчанию.

  13. StateA1 не содержит ни одних подсостояний.

  14. График засыпает.

Этапы с 1 по 14 происходят на начальном временном шаге. На этом процесс инициализации графика завершается.

Вход в состояние при помощи исторических соединений

Если вы хотите, чтобы ваша диаграмма Stateflow запомнила и вернулась к подсостоянию, которое ранее было активным, независимо от перехода по умолчанию, используйте историческое соединение. Размещение исторического соединения в состоянии переопределяет переход по умолчанию, приводящий к исключительным (OR) подсостояниям. После размещения исторического соединения в состоянии, при входе ваша диаграмма Stateflow запоминает и входит в ранее активное подсостояние. Соединение истории применяется только к уровню иерархии, в которой оно появляется.

В этом примере свет может быть включен или отключен. Эти опции обозначаются состояниями Power_on и Power_off. Опции управляются входными событиями switch_on и switch_off. Когда свет горит, он может быть тусклым или ярким. Эти опции обозначаются состояниями Low и High и управляются входными событиями switch_low и switch_high.

Изначально график спит. Состояние Power_off активно. Когда состояние Power_on последний активный, High был ранее активным подсостоянием. Событийный switch_on происходит и состояние Power_on отмечен для ввода. В это время p = 0.

Следуя рабочему процессу для ввода графика или состояния до тех пор, пока график не перейдет в спящий режим, шаги выполнения для входа в состояние Power_on находятся в таком порядке:

  1. Power_on не является дочерним элементом неактивного родительского элемента.

  2. Нет действий входа для Power_on.

  3. Power_on - состояние, которое первоначально было помечено для входа.

  4. В Power_on есть исторические соединения.

  5. High был ранее активным подсостоянием. Теперь p = 2.

  6. High не содержит никаких исторических соединений.

  7. High не содержит никаких переходов по умолчанию.

  8. High не содержит ни одних подсостояний.

  9. График засыпает.

Это завершает entry действия для Power_on и High.

Вход в состояние при помощи суперпереходов

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

Когда состояние вводится через суперпереход, перед выполнением действий входа для конечного адресата его сверхсостояний должны быть помечены как активные и должны выполняться их действия входа. В этом примере StateB1 отмечен для входа из StateA2. На данной точке x = 5, y = 5, и z = 1.

Следуя рабочему процессу для ввода графика или состояния до тех пор, пока график не перейдет в спящий режим, шаги выполнения для входа в состояние StateB1 находятся в таком порядке:

  1. StateB1 - подсостояние неактивного родительского элемента (StateB).

  2. StateB помечен как активный.

  3. StateB не является подсостоянием неактивного родительского элемента.

  4. Выполните действия входа для StateB. Теперь x = 4.

  5. StateB не является состоянием, которое первоначально было помечено для входа.

  6. Выполните действия входа для StateB1. Теперь x = 3.

  7. StateB1 - состояние, которое первоначально было помечено для входа.

  8. StateB1 не имеет исторических соединений.

  9. StateB1 не содержит никаких переходов по умолчанию.

  10. StateB1 не содержит ни одних подсостояний.

  11. График засыпает.

Это завершает entry действия для StateB и StateB1.

Похожие темы