exponenta event banner

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

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

В этом примере показано поведение простого действия условия в пути перехода с несколькими сегментами. Диаграмма использует неявный порядок исходящих переходов (см. Неявный порядок).

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

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

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

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

    Государство A остается активным.

  4. Диаграмма возвращается в сон.

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

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

В этом примере показано поведение простого условия и действия перехода, указанного для перехода из одного исключающего состояния (ИЛИ) в другое.

Первоначально чарт спит. Государство 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 конструкция цикла. Диаграмма использует неявный порядок исходящих переходов (см. Неявный порядок).

См. раздел Конструкция цикла для просмотра поведения этого примера.

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

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

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

Совет

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

Можно задать уровень диагностики для обнаружения неориентированных трансляций локальных событий. В диалоговом окне Параметры конфигурации (Configuration Parameters) откройте панель Диагностика (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 активен.

Совет

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

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

Связанные темы