Управление выполнением диаграммы при помощи действий условия

Поведение действия условия

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

Первоначально, график спит. A состояния активно. Условия C_one и C_two являются ложными. Событие E_one происходит и пробуждает график, который обрабатывает событие от корня вниз через иерархию:

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

  2. Поскольку условия на сегментах перехода возможным местам назначения являются ложными, ни один из полных переходов не допустим.

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

    A состояния остается активным.

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

Эта последовательность завершает выполнение этого графика Stateflow®, сопоставленного с событием E_one когда A состояния первоначально активно.

Условие и поведение действия перехода

Этот пример показывает поведение простого условия и действия перехода, заданного на переходе от одного исключительного (OR) состояние другому.

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

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. Допустимый переход от A состояния утверждать B обнаруживается. Условие C_one верно. Действие условия A_one обнаруживается на допустимом переходе и сразу выполняется и завершается. A состояния все еще активно.

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

  3. A состояния отмечен неактивный.

  4. Действие перехода A_two выполняется и завершается.

  5. B состояния отмечен активный.

  6. B состояния действия входа (entB()) выполнитесь и завершитесь.

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

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_one когда A состояния первоначально активно.

Создайте действия условия Используя цикл for

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

Смотрите Построение Цикла for, чтобы видеть поведение этого примера.

Широковещательно передайте События, чтобы быть параллельными (AND) состояниям Используя действия условия

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

Смотрите Широковещательные События в Действиях Условия, чтобы видеть поведение этого примера.

Совет

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

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

Избегайте циклического поведения

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

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

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

    Допустимый переход от On состояния утверждать Off обнаруживается.

  2. Действие условия с широковещательным событием E_one перехода.

  3. Событие E_one обнаруживается на допустимом переходе, который сразу выполняется. On состояния все еще активно.

  4. Широковещательная передача события E_one пробуждает график во второй раз.

  5. Перейдите к шагу 1.

Шаги 1 - 5 продолжают выполняться циклическим способом. Метка перехода, указывающая на триггер на том же событии как действие условия, широковещательно передала результаты события в неисправимом циклическом поведении. Эта последовательность никогда не завершается когда событие E_one широковещательно передается и On состояния активно.

Совет

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

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

Похожие темы