Неориентированные широковещательные события в параллельных состояниях

Широковещательные события в состояниях активности

Этот пример показывает поведение широковещательных действий события в параллельных состояниях. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).

Изначально график спит. Параллельные подсостояния A.A1.A1a и A.A2.A2a активны. Событийные E_one происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:

  1. Корень графика проверяет, есть ли допустимый переход на корневом уровне в результате E_one. Допустимый переход не существует.

  2. Конечные A during действия (durA()) выполнить и завершить.

  3. Дети состояния A являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются слева направо и сверху вниз. Конечные A.A1 Сначала оценивается. Конечные A.A1 during действия (durA1()) выполнить и завершить. Конечные A.A1 выполняет и завершает on E_one действие и транслирует E_two событий. The during и on event_name действия обрабатываются на основании их порядка внешнего вида в метке состояния:

    1. Трансляция событий E_two пробуждает график второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two. Допустимый переход не существует.

    2. Состояние A during действия (durA()) выполнить и завершить.

    3. Состояние A проверяет его дочерние элементы на наличие допустимых переходов. Допустимых переходов не существует.

    4. Дочерние элементы состояния A оцениваются, начиная с A.A1 состояния. Конечные A.A1 during действия (durA1()) выполнить и завершить. Конечные A.A1 оценивается для допустимых переходов. Нет допустимых переходов в результате E_two в состоянии A1.

    5. Конечные A1a<reservedrangesplaceholder0> действия (durA1a()) выполнить.

    6. Конечные A.A2 оценивают. Конечные A.A2 during действия (durA2()) выполнить и завершить. Конечные A.A2 проверяет наличие допустимых переходов. Конечные A.A2 имеет допустимый переход в результате E_two от состояния A.A2. A2a в состояние A.A2.A2b.

    7. Конечные A.A2.A2a exit действия (exitA2a()) выполнить и завершить.

    8. Конечные A.A2.A2a помечен как неактивный.

    9. Конечные A.A2.A2b отмечен как активный.

    10. Конечные A.A2.A2b entry действия (entA2b()) выполнить и завершить.

  4. Обработка E_one продолжается после того, как on трансляция события E_two был обработан. Конечные A. A1 проверяет наличие любых допустимых переходов в результате E_one событий. Допустимый переход существует из состояния A.A1.A1a в состояние A.A1.A1b.

  5. Конечные A.A1.A1a выполняет и завершает exit действия (exitA1a).

  6. Конечные A.A1.A1a помечен как неактивный.

  7. Конечные A.A1.A1b отмечен как активный.

  8. Конечные A.A1.A1b entry действия (entA1b()) выполнить и завершить.

  9. Параллельное состояние A.A2 оценивается следующим. Конечные A.A2 during действия (durA2()) выполнить и завершить. Нет допустимых переходов в результате E_one.

  10. Конечные A.A2.A2b during действия (durA2b()) выполнить и завершить.

    Конечные A.A2.A2b в настоящее время активно в результате обработки on трансляция события E_two.

  11. График возвращается в сон.

Эта последовательность завершает выполнение этого Stateflow® график, связанная со E_one событий и on передача события в параллельное состояние E_two. Конечная активность графика заключается в том, что параллельные подсостояния A.A1.A1b и A.A2.A2b активны.

Совет

Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.

Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none, warning, или error. Настройкой по умолчанию является warning.

Широковещательные события в переходных действиях

Этот пример показывает поведение действия широковещательного перехода события, которое включает в себя вложенное событие, широковещательное в параллельном состоянии. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).

Начало обработки E_one события

Изначально график спит. Параллельные подсостояния A.A1.A1a и A.A2.A2a активны. Событийные E_one происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:

  1. Корень графика проверяет, есть ли допустимый переход в результате E_one. Отсутствует допустимый переход.

  2. Конечные A during действия (durA()) выполнить и завершить.

  3. Дети A состояния являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются слева направо и сверху вниз. Конечные A.A1 Сначала оценивается. Конечные A.A1during действия (durA1()) выполнить и завершить.

  4. Конечные A.A1 проверяет наличие любых допустимых переходов в результате E_one событий. Существует допустимый переход от состояния A.A1.A1a в состояние A.A1.A1b.

  5. Конечные A.A1.A1a выполняет и завершает exit действия (exitA1a).

  6. Конечные A.A1.A1a помечен как неактивный.

События E_two упреждающие E_one

  1. Переходное действие, которое транслирует E_two события выполняет и завершает:

    1. Трансляция событий E_two теперь упреждает переход от состояния A1a в состояние A1b это событие E_one триггеры.

    2. Трансляция событий E_two пробуждает график второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two. Допустимый переход не существует.

    3. Состояние A during действия (durA()) выполнить и завершить.

    4. Дочерние элементы состояния A оцениваются, начиная с A.A1 состояния. Конечные A.A1during действия (durA1()) выполнить и завершить. Конечные A.A1 оценивается для допустимых переходов. Нет допустимых переходов в результате E_two в состоянии A1.

    5. Конечные A.A2 оценивают. Конечные A. A2 during действия (durA2()) выполнить и завершить. Конечные A. A2 проверяет наличие допустимых переходов. Конечные A. A2 имеет допустимый переход в результате E_two от состояния A.A2.A2a в состояние A.A2.A2b.

    6. Конечные A.A2.A2a exit действия (exitA2a()) выполнить и завершить.

    7. Конечные A.A2.A2a помечен как неактивный.

    8. Конечные A.A2.A2b отмечен как активный.

    9. Конечные A.A2.A2b entry действия (entA2b()) выполнить и завершить.

Возобновления E_one обработки событий

  1. Конечные A.A1.A1b отмечен как активный.

  2. Конечные A.A1.A1b действия входа (entA1b()) выполнить и завершить.

  3. Параллельное состояние A.A2 оценивается следующим. Конечные A.A2 во время действий (durA2()) выполнить и завершить. Нет допустимых переходов в результате E_one.

  4. Конечные A.A2.A2b во время действий (durA2b()) выполнить и завершить.

    Конечные A.A2.A2b в настоящее время активно в результате обработки широковещательных E_two событий.

  5. График возвращается в сон.

Эта последовательность завершает выполнение этой диаграммы 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 происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:

  1. Корень графика проверяет, есть ли допустимый переход в результате E_one. Допустимый переход не существует.

  2. Конечные A during действия (durA()) выполнить и завершить.

  3. Дети A состояния являются параллельными состояниями (AND). Поскольку применяется неявное упорядоченное расположение, состояния оцениваются и выполняются сверху вниз и слева направо. Конечные A.A1 Сначала оценивается. Конечные A.A1 during действия (durA1()) выполнить и завершить.

  4. Конечные A.A1 проверяет наличие любых допустимых переходов в результате E_one событий. Допустимый переход от A.A1.A1a состояния в состояние A.A1.A1b существует. Допустимое действие условия также существует. Трансляция события действия условия E_two выполняет и завершает. Конечные A.A1.A1a все еще активно:

    1. Трансляция событий E_two пробуждает диаграмму Stateflow во второй раз. Корень графика проверяет, есть ли допустимый переход в результате E_two. Отсутствует допустимый переход.

    2. Конечные A during действия (durA()) выполнить и завершить.

    3. Конечные AДети оцениваются, начиная с состояния A.A1. Конечные A. A1 during действия (durA1()) выполнить и завершить. Конечные A.A1 оценивается для допустимых переходов. Нет допустимых переходов в результате E_two в состоянии A1.

    4. Конечные A1a during действия (durA1a()) выполнить.

    5. Конечные A.A2 оценивают. Конечные A.A2 during действия (durA2()) выполнить и завершить. Конечные A.A2 проверяет наличие допустимых переходов. Конечные A.A2 имеет допустимый переход в результате E_two от состояния A.A2.A2a в состояние A.A2.A2b.

    6. Конечные A.A2.A2a exit действия (exitA2a()) выполнить и завершить.

    7. Конечные A.A2.A2a помечен как неактивный.

    8. Конечные A.A2.A2b отмечен как активный.

    9. Конечные A.A2.A2b entry действия (entA2b()) выполнить и завершить.

  5. Конечные A.A1.A1a выполняет и завершает exit действия (exitA1a).

  6. Конечные A.A1.A1a помечен как неактивный.

  7. Конечные A.A1.A1b отмечен как активный.

  8. Конечные A.A1.A1b entry действия (entA1b()) выполнить и завершить.

  9. Параллельное состояние A.A2 оценивается следующим. Конечные A.A2 during действия (durA2()) выполнить и завершить. Нет допустимых переходов в результате E_one.

  10. Конечные A.A2.A2b during действия (durA2b()) выполнить и завершить.

    Конечные A.A2.A2b в настоящее время активно в результате обработки события действия условия транслируется E_two.

  11. График возвращается в сон.

Эта последовательность завершает выполнение этой диаграммы Stateflow, связанной с событием E_one и событие, транслируемое при действии условия в параллельное состояние события E_two. Конечная активность графика заключается в том, что параллельные подсостояния A.A1.A1b и A.A2.A2b активны.

Совет

Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.

Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none, warning, или error. Настройкой по умолчанию является warning.