Этот пример показывает поведение широковещательных действий события в параллельных состояниях. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).
Изначально график спит. Параллельные подсостояния A.A1.A1a
и A.A2.A2a
активны. Событийные E_one
происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:
Корень графика проверяет, есть ли допустимый переход на корневом уровне в результате E_one
. Допустимый переход не существует.
Конечные A
during
действия (durA()
) выполнить и завершить.
Дети состояния A
являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются слева направо и сверху вниз. Конечные A.A1
Сначала оценивается. Конечные A.A1
during
действия (durA1()
) выполнить и завершить. Конечные A.A1
выполняет и завершает on
E_one
действие и транслирует E_two событий
. The during
и on
event_name
действия обрабатываются на основании их порядка внешнего вида в метке состояния:
Трансляция событий E_two
пробуждает график второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two
. Допустимый переход не существует.
Состояние A during
действия (durA()
) выполнить и завершить.
Состояние A проверяет его дочерние элементы на наличие допустимых переходов. Допустимых переходов не существует.
Дочерние элементы состояния A оцениваются, начиная с A.A1
состояния. Конечные
A.A1
during
действия (durA1()
) выполнить и завершить. Конечные A.A1
оценивается для допустимых переходов. Нет допустимых переходов в результате E_two
в состоянии A1
.
Конечные A1a
<reservedrangesplaceholder0>
действия (durA1a()
) выполнить.
Конечные A.A2
оценивают. Конечные A.A2
during
действия (durA2()
) выполнить и завершить. Конечные A.A2
проверяет наличие допустимых переходов. Конечные A.A2
имеет допустимый переход в результате E_two
от состояния A.A2
. A2a
в состояние A.A2.A2b
.
Конечные A.A2.A2a
exit
действия (exitA2a()
) выполнить и завершить.
Конечные A.A2.A2a
помечен как неактивный.
Конечные A.A2.A2b
отмечен как активный.
Конечные A.A2.A2b
entry
действия (entA2b()
) выполнить и завершить.
Обработка E_one
продолжается после того, как on
трансляция события E_two
был обработан. Конечные A
. A1
проверяет наличие любых допустимых переходов в результате E_one
событий. Допустимый переход существует из состояния
A.A1.A1a
в состояние A.A1.A1b
.
Конечные A.A1.A1a
выполняет и завершает exit
действия (exitA1a
).
Конечные A.A1.A1a
помечен как неактивный.
Конечные A.A1.A1b
отмечен как активный.
Конечные A.A1.A1b
entry
действия (entA1b()
) выполнить и завершить.
Параллельное состояние A.A2
оценивается следующим. Конечные A.A2
during
действия (durA2()
) выполнить и завершить. Нет допустимых переходов в результате E_one
.
Конечные A.A2.A2b
during
действия (durA2b()
) выполнить и завершить.
Конечные A.A2.A2b
в настоящее время активно в результате обработки on
трансляция события E_two
.
График возвращается в сон.
Эта последовательность завершает выполнение этого Stateflow® график, связанная со E_one
событий и
on
передача события в параллельное состояние E_two
. Конечная активность графика заключается в том, что параллельные подсостояния A.A1.A1b
и A.A2.A2b
активны.
Совет
Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.
Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none
, warning
, или error
. Настройкой по умолчанию является warning
.
Этот пример показывает поведение действия широковещательного перехода события, которое включает в себя вложенное событие, широковещательное в параллельном состоянии. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).
Изначально график спит. Параллельные подсостояния A.A1.A1a
и A.A2.A2a
активны. Событийные E_one
происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:
Корень графика проверяет, есть ли допустимый переход в результате E_one
. Отсутствует допустимый переход.
Конечные A
during
действия (durA()
) выполнить и завершить.
Дети A состояния являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются слева направо и сверху вниз. Конечные A.A1
Сначала оценивается. Конечные A.A1
during
действия (durA1()
) выполнить и завершить.
Конечные A.A1
проверяет наличие любых допустимых переходов в результате E_one
событий. Существует допустимый переход от состояния
A.A1.A1a
в состояние A.A1.A1b
.
Конечные A.A1.A1a
выполняет и завершает exit
действия (exitA1a
).
Конечные A.A1.A1a
помечен как неактивный.
Переходное действие, которое транслирует E_two
события выполняет и завершает:
Трансляция событий E_two
теперь упреждает переход от состояния A1a
в состояние A1b
это событие E_one
триггеры.
Трансляция событий E_two
пробуждает график второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two
. Допустимый переход не существует.
Состояние A during
действия (durA()
) выполнить и завершить.
Дочерние элементы состояния A оцениваются, начиная с A.A1
состояния. Конечные
A.A1
during
действия (durA1()
) выполнить и завершить. Конечные A.A1
оценивается для допустимых переходов. Нет допустимых переходов в результате E_two
в состоянии A1
.
Конечные A.A2
оценивают. Конечные A
. A2
during
действия (durA2()
) выполнить и завершить. Конечные A
. A2
проверяет наличие допустимых переходов. Конечные A
. A2
имеет допустимый переход в результате E_two
от состояния A.A2.A2a
в состояние A.A2.A2b
.
Конечные A.A2.A2a
exit
действия (exitA2a()
) выполнить и завершить.
Конечные A.A2.A2a
помечен как неактивный.
Конечные A.A2.A2b
отмечен как активный.
Конечные A.A2.A2b
entry
действия (entA2b()
) выполнить и завершить.
Конечные A.A1.A1b
отмечен как активный.
Конечные A.A1.A1b
действия входа (entA1b()
) выполнить и завершить.
Параллельное состояние A.A2
оценивается следующим. Конечные A.A2
во время действий (durA2()
) выполнить и завершить. Нет допустимых переходов в результате E_one
.
Конечные A.A2.A2b
во время действий (durA2b()
) выполнить и завершить.
Конечные A.A2.A2b
в настоящее время активно в результате обработки широковещательных E_two
событий.
График возвращается в сон.
Эта последовательность завершает выполнение этой диаграммы Stateflow, связанной с событием E_one
и событие, транслируемое на переходном действии в параллельное состояние события E_two
. Конечная активность графика заключается в том, что параллельные подсостояния A.A1.A1b
и A.A2.A2b
активны.
Совет
Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.
Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none
, warning
, или error
. Настройкой по умолчанию является warning
.
Этот пример показывает поведение события действия условия, транслируемого в параллельном (И) состоянии. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).
Изначально график спит. Параллельные подсостояния A.A1.A1a
и A.A2.A2a
активны. Событийные E_one
происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:
Корень графика проверяет, есть ли допустимый переход в результате E_one
. Допустимый переход не существует.
Конечные A
during
действия (durA()
) выполнить и завершить.
Дети A состояния являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются сверху вниз и слева направо. Конечные A.A1
Сначала оценивается. Конечные A.A1
during
действия (durA1()
) выполнить и завершить.
Конечные A.A1
проверяет наличие любых допустимых переходов в результате E_one
событий. Допустимый переход от
A.A1.A1a состояния
в состояние A.A1.A1b
существует. Допустимое действие условия также существует. Трансляция события действия условия E_two
выполняет и завершает. Конечные A.A1.A1a
все еще активно:
Трансляция событий E_two
пробуждает диаграмму Stateflow во второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two
. Отсутствует допустимый переход.
Конечные A
during
действия (durA()
) выполнить и завершить.
Конечные A
Дети оцениваются, начиная с состояния A.A1
. Конечные A
. A1
during
действия (durA1()
) выполнить и завершить. Конечные A.A1
оценивается для допустимых переходов. Нет допустимых переходов в результате E_two
в состоянии A1
.
Конечные A1a
during
действия (durA1a()
) выполнить.
Конечные A.A2
оценивают. Конечные A.A2
during
действия (durA2()
) выполнить и завершить. Конечные A.A2
проверяет наличие допустимых переходов. Конечные A.A2
имеет допустимый переход в результате E_two
от состояния A.A2.A2a
в состояние A.A2.A2b
.
Конечные A.A2.A2a
exit
действия (exitA2a()
) выполнить и завершить.
Конечные A.A2.A2a
помечен как неактивный.
Конечные A.A2.A2b
отмечен как активный.
Конечные A.A2.A2b
entry
действия (entA2b()
) выполнить и завершить.
Конечные A.A1.A1a
выполняет и завершает exit
действия (exitA1a
).
Конечные A.A1.A1a
помечен как неактивный.
Конечные A.A1.A1b
отмечен как активный.
Конечные A.A1.A1b
entry
действия (entA1b()
) выполнить и завершить.
Параллельное состояние A.A2
оценивается следующим. Конечные A.A2
during
действия (durA2()
) выполнить и завершить. Нет допустимых переходов в результате E_one
.
Конечные A.A2.A2b
during
действия (durA2b()
) выполнить и завершить.
Конечные A.A2.A2b
в настоящее время активно в результате обработки события действия условия транслируется E_two
.
График возвращается в сон.
Эта последовательность завершает выполнение этой диаграммы Stateflow, связанной с событием E_one
и событие, транслируемое при действии условия в параллельное состояние события E_two
. Конечная активность графика заключается в том, что параллельные подсостояния A.A1.A1b
и A.A2.A2b
активны.
Совет
Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.
Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none
, warning
, или error
. Настройкой по умолчанию является warning
.