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

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

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

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

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

on event_name

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

on message_name

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

on afterNEventName)

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

on beforeNEventName)

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

on atNEventName)

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

on everyNEventName)

'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.

Похожие темы