exponenta event banner

Введите диаграмму или состояние

Ввод диаграммы и состояния происходит в следующих случаях:

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

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

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

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

Запись диаграммы

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

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

Запись состояния

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

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

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

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

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

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

Ввод диаграммы потока состояний

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

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

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

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

  3. StateA не является подсостоянием неактивного родительского объекта. Выполните команду entry действия для StateA. Сейчас x = 1.

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

  5. StateA не содержит каких-либо стыков истории.

  6. Имеется переход по умолчанию к подсостоянию, StateA1. Перейдите к блок-схеме Вычислить переходы (Evaluate Transitions).

  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 запомнила и вернулась к подсостоянию, которое ранее было активным, независимо от перехода по умолчанию, используйте соединение истории. Помещение соединения истории в состояние переопределяет переход по умолчанию, ведущий к исключительным подстанциям (ИЛИ). После размещения соединения истории в пределах состояния, после ввода, ваша диаграмма 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.

Связанные темы