Состояния могут иметь различные типы действия, включая entry
, during
выход
, 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.