Типы акта государственной власти

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

Например, этот график содержит различные типы акта государственной власти.

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

Акт государственной властиСокращениеОписание
entryenВыполняется, когда состояние становится активным
exitexВыполняется, когда состояние активно, и переход из состояния происходит
duringduВыполняется, когда состояние активно, и определенное событие имеет место
bind'none'Связывает событие или объект данных так, чтобы только, что состояние и его дочерние элементы могут широковещательно передать событие или изменить значение данных

on event_name

'none'Выполняется, когда состояние активно, и оно получает широковещательную передачу event_name

on message_name

'none'Выполняется, когда сообщение message_name доступно

on after (n, event_name)

'none'Выполняется, когда состояние активно и после того, как оно получает широковещательные сообщения n event_name

on before (n, event_name)

'none'Выполняется, когда состояние активно и прежде чем оно получит широковещательные сообщения n event_name

on at (n, event_name)

'none'Выполняется, когда состояние активно, и оно получает точно широковещательные сообщения n event_name

on every (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.

Похожие темы