Состояния могут иметь различные типы действия, включая entry
, during
, exit
, bind
, и, действия on
. Вы задаете действия для состояния при помощи метки акта государственной власти с этим полным форматом:
name/ entry:entry actions during:during actions exit:exit actions bind:data_name, event_name on event_name:on event_name actions on message_name:on message_name actions
Начните действия различных типов на отдельных строках после имени состояния. Можно начать эти действия в любом порядке. Если вы не задаете тип действия явным образом для оператора, график обрабатывает тот оператор как объединенное действие entry,during
.
Например, этот график содержит различные типы акта государственной власти.
Эта таблица суммирует различные типы акта государственной власти.
Акт государственной власти | Сокращение | Описание |
---|---|---|
entry | en | Выполняется, когда состояние становится активным |
exit | ex | Выполняется, когда состояние активно, и переход из состояния происходит |
during | du | Выполняется, когда состояние активно, и определенное событие имеет место |
bind | 'none' | Связывает событие или объект данных так, чтобы только, что состояние и его дочерние элементы могут широковещательно передать событие или изменить значение данных |
| 'none' | Выполняется, когда состояние активно, и оно получает широковещательную передачу event_name |
| 'none' | Выполняется, когда сообщение message_name доступно |
| 'none' | Выполняется, когда состояние активно и после того, как оно получает широковещательные сообщения n event_name
|
| 'none' | Выполняется, когда состояние активно и прежде чем оно получит широковещательные сообщения n event_name |
| 'none' | Выполняется, когда состояние активно, и оно получает точно широковещательные сообщения n event_name |
| 'none' | Выполняется, когда состояние активно и по получении каждого n широковещательные сообщения event_name |
Для получения дополнительной информации о after
, before
, at
и every
временные логические операторы, видят Выполнение Диаграммы управления при помощи Временной Логики.
Можно вызвать временные логические операторы after
и before
при помощи абсолютно-разовых ключевых слов sec
, msec
и usec
. Для получения дополнительной информации смотрите Операторы для Абсолютно-разовой Временной Логики.
entry
Действия записи выполняются, когда состояние становится активным. Действия записи состоят из префиксного entry
(или сокращение en
) сопровождаемый двоеточием (:
) и одно или несколько действий. Чтобы разделить многократные действия, используйте точки с запятой или запятые. Можно также начать действия на отдельных строках.
В предыдущем примере действие записи выполняется id = x+y
, когда график берет переход по умолчанию, и состояние A становится активным. Смотрите Вводят График или состояние.
exit
Выйдите действия выполняются, когда состояние активно, и переход из состояния происходит. Выйдите действия состоят из префиксного exit
(или сокращение ex
) сопровождаемый двоеточием (:
) и одно или несколько действий. Чтобы разделить несколько выходных действий, используйте точки с запятой или запятые. Можно также начать действия на отдельных строках.
В предыдущем примере выходное действие выполняется time_out
, когда график берет один из переходов от состояния, чтобы утвердить B или C. Смотрите Выход состояние.
during
Во время действий выполняются, когда состояние активно, событие имеет место, и никакой допустимый переход к другому состоянию не доступен. Во время действий состоят из префиксного during
(или сокращение du
) сопровождаемый двоеточием (:
) и одно или несколько действий. Чтобы разделить несколько во время действий, используйте точки с запятой или запятые. Можно также начать действия на отдельных строках.
В предыдущем примере во время действия выполняется switch_on()
каждый раз, когда состояние C активно, потому что нет никаких допустимых переходов к другому состоянию. Смотрите Выполнение диаграммы Stateflow.
bind
Можно связать данные и события к состоянию при помощи действия bind
. Действие bind
состоит из префиксного bind
, сопровождаемого двоеточием (:
) и одно или несколько событий или данных. Чтобы разделить несколько событий и данных, используйте точки с запятой или запятые. Можно также ввести события и данные по отдельным строкам.
Только состояние и его дочерние элементы могут изменить данные или широковещательно передать события, связанные с тем состоянием. Другие состояния могут считать связанные данные или прислушаться к связанному событию, но они не могут изменить связанные данные или отправить связанные события.
Свяжите действия, применяются к графику, активно ли обязательное состояние или нет. В предыдущем примере связывать действие bind: id, time_out
для A
состояния обязывает данные id
и событие time_out
утверждать A
. Эта привязка предотвращает любое другое состояние (или его дочерние элементы) в графике от изменения id
или широковещательного события time_out
.
Если другое состояние включает действия, которые изменяют данные или широковещательно передают события, которые связывают с другим состоянием, ошибка анализа происходит. Этот график содержит действия с двумя состояниями, которые производят ошибки анализа.
Акт государственной власти | Причина ошибки анализа |
---|---|
bind: id в B состояния | Только одно состояние может изменить данные id , который обязан утвердить A |
entry: time_out в C состояния | Только одно состояние может широковещательно передать событие time_out , которое обязано утвердить A |
Привязка события вызова функции к состоянию также связывает подсистему вызова функций, которую она вызывает. Подсистема вызова функций включена, когда обязательное состояние введено и отключено, когда из обязательного состояния выходят. Для получения дополнительной информации об этом поведении, смотрите, что Подсистемы вызова функций Управления при помощи связывают Действия.
Свяжите действия, поддерживаются только в графиках Stateflow® в моделях Simulink®.
on
На действиях выполняются, когда состояние активно, и оно получает событие или сообщение. На действиях состоят из префиксного on
, сопровождаемого уникальным событием event_name
, или передают message_name
, двоеточие (:
) и одно или несколько действий. Чтобы разделить несколько на действиях, используйте точки с запятой или запятые. Можно также начать действия на отдельных строках.
Можно задать действия больше чем для одного события или сообщения. Например, если вы хотите, чтобы различные события инициировали различные действия, введите несколько операторов действия on
в метку акта государственной власти:
on ev1: action1(); on ev2: action2();
ev1
и ev2
происходят одновременно, то action1()
выполняется сначала и action2()
выполняется второй. Смотрите Выполнение диаграммы Stateflow.