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

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

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

Изначально график спит. Конечные 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 является true. Событийные E_one происходит и пробуждает график, который обрабатывает событие из корня вниз через иерархию:

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

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

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

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

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

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

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

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

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

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

Смотрите Конструкция, чтобы увидеть поведение этого примера.

Трансляция событий в параллельные (И) состояния с использованием действий условия

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

Смотрите Broadcast Events in Condition Actions, чтобы увидеть поведение этого примера.

Совет

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

Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none, warning, или 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 активно.

Совет

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

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

Похожие темы