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

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

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

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

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

Совет

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

Можно установить диагностический уровень для обнаружения неориентированных локальных широковещательных сообщений события. В диалоговом окне Model 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 состояния активен.

Совет

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

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

Похожие темы