Стройте диаграмму и утвердите, что запись происходит когда:
График активируется впервые. Это называется инициализацией графика.
Существует допустимый переход в состояние. Смотрите Оценивают Переходы.
Эта блок-схема показывает прогрессию событий, что Stateflow® берет для записи в график или состояние. В этой блок-схеме текущее состояние относится к состоянию, в котором происходят решение или процесс.
Первый раз, когда ваша диаграмма Stateflow становится активной, называется инициализацией. Когда инициализация вашего графика происходит, график вводится, и Stateflow выполняет любые переходы по умолчанию для исключительного (OR) состояния. Если состояния в верхнем уровне вашего графика параллельны (AND), они становятся активными на основе своего номера заказа.
Если вы хотите, чтобы ваш график взял какие-либо переходы по умолчанию перед временем t = 0
, в диалоговом окне Chart Properties установите флажок Execute (enter) chart at initialization. Эта опция заставляет диаграмму Stateflow инициализировать в то же время, что и инициализация Simulink®. Пути к переходу по умолчанию графика затем выполняются во время фазы инициализации модели.
Когда состояние отмечено для записи, действия записи для состояния выполняются. Если ваш график активен и прошел инициализацию, состояние верхнего уровня становится активным. Состояние отмечено для записи одним из этих способов:
Входящий переход пересекает государственные границы.
Входящий переход заканчивается в государственной границе.
Состояние является параллельным дочерним элементом состояния активного состояния.
Действиям записи предшествует префиксный entry
или en
для краткости сопровождаемый необходимым двоеточием (:
), и затем сопровождаемый одним или несколькими действиями. Вы разделяете несколько действий при помощи возврата каретки, точка с запятой (;
), или запятая (,
). Если вы не задаете тип состояния активности явным образом для оператора, график обрабатывает тот оператор как entry
, during
действие.
В этом примере, в первый раз, когда график становится активным, происходит инициализация графика.
Следующим Рабочий процесс для Ввода Графика или состояния до графика засыпает, шаги для инициализации графика находятся в этом порядке:
Действия перехода по умолчанию выполняются, и x = 0
, y = 0
, и z = 0
.
StateA
отмечен для записи.
StateA
не подсостояние неактивного родительского элемента. Выполните entry
действия для StateA
. Теперь x = 1
.
StateA
состояние, которое было первоначально отмечено для записи.
StateA
не содержит соединений истории.
Существует переход по умолчанию к подсостоянию, StateA1
. Перейдите к Оценивать блок-схеме Переходов.
Следующим Оценивать блок-схема Переходов отметьте StateA1
для entry
. Перейдите к Выходной блок-схеме Действий.
Текущее состояние, StateA
, сверхсостояние целевого состояния, StateA1
. Возвратитесь к блок-схеме Действий Записи.
StateA1
не подсостояние неактивного родительского элемента. Выполните entry
действия для StateA1
. Теперь x = 3
.
StateA1
состояние, которое было первоначально отмечено для записи.
StateA1
не содержит соединений истории.
StateA1
не содержит переходов по умолчанию.
StateA1
не содержит одного подсостояний.
График засыпает.
Шаги 1 - 14 происходят в начальном временном шаге. Это завершает процесс инициализации графика.
Если вы хотите, чтобы ваша диаграмма Stateflow помнила и возвратилась к подсостоянию, которое было ранее активно, независимо от перехода по умолчанию, используйте соединение истории. Размещение соединения истории в состоянии заменяет продвижение перехода по умолчанию к исключительному (OR) подсостояния. После размещения соединения истории в состоянии, после записи, ваша диаграмма Stateflow помнит и вводит ранее активное подсостояние. Соединение истории применяется только к уровню иерархии, в которой это появляется.
В этом примере свет может быть включен или прочь. Эти опции обозначаются состояниями Power_on
и Power_off
. Опциями управляют входные события switch_on
и switch_off
. Когда свет включен, это может быть dim или яркий. Эти опции обозначаются состояниями Low
и High
и управляются входными событиями switch_low
и switch_high
.
Первоначально, график спит. Power_off
состояния активно. Когда
Power_on
состояния было в последний раз активно,
High
было ранее активное подсостояние. Событие switch_on
происходит и Power_on
состояния отмечен для записи. В это время
p = 0
.
Следующим Рабочий процесс для Ввода Графика или состояния, пока график не засыпает, шаги выполнения для ввода Power_on
состояния находятся в этом порядке:
Power_on
не дочерний элемент неактивного родительского элемента.
Нет никаких действий записи для Power_on
.
Power_on
состояние, которое было первоначально отмечено для записи.
В Power_on
существуют соединения истории.
High
было ранее активное подсостояние. Теперь p = 2
.
High
не содержит соединений истории.
High
не содержит переходов по умолчанию.
High
не содержит одного подсостояний.
График засыпает.
Это завершает entry
действия для Power_on
и High
.
Суперпереход является переходом между разными уровнями в графике. Суперпереход может быть между состоянием в графике верхнего уровня и состоянием в одной из его субдиаграмм, или между состояниями, находящимися в различных субдиаграммах на тех же или разных уровнях в графике. Можно создать суперпереходы, которые охватывают любое количество уровней в графике.
Когда состояние вводится посредством суперперехода, прежде чем действия записи для конечного пункта назначения будут выполнены, его сверхсостояния должны быть отмечены активные, и их действия записи должны быть выполнены. В этом примере, StateB1
был отмечен для записи от StateA2
. На данном этапе x = 5
, y = 5
, и z = 1
.
Следующим Рабочий процесс для Ввода Графика или состояния, пока график не засыпает, шаги выполнения для ввода StateB1
состояния находятся в этом порядке:
StateB1
подсостояние неактивного родительского элемента (StateB
).
StateB
отмечен как активный.
StateB
не подсостояние неактивного родительского элемента.
Выполните действия записи для StateB
. Теперь x = 4
.
StateB
не состояние, которое было первоначально отмечено для записи.
Выполните действия записи для StateB1
. Теперь x = 3
.
StateB1
состояние, которое было первоначально отмечено для записи.
StateB1
не имеет никаких соединений истории.
StateB1
не содержит переходов по умолчанию.
StateB1
не содержит одного подсостояний.
График засыпает.
Это завершает entry
действия для StateB
и StateB1
.