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

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

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

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

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

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

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

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

    5. A1a состоянияduring действия (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 активны.

Совет

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

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

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

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

Запустите события обработку E_one

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

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

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

  3. Дочерние элементы А состояния параллельны (AND) состояния. Поскольку неявное упорядоченное расположение применяется, состояния оценены и выполнены слева направо и от начала до конца. A.A1 состояния оценен сначала. A.A1 состоянияduring действия (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. Состояние during действия (durA()) выполнитесь и завершитесь.

    4. Дочерние элементы А состояния оценены начиная с A.A1 состояния. A.A1 состоянияduring действия (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 активны.

Совет

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

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

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

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

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

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

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

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

  4. A.A1 состояния проверки на любые допустимые переходы в результате события E_one. Допустимый переход от A.A1.A1a состояния утверждать A.A1.A1b \exists. Также существует допустимое действие условия. Широковещательная передача события действия условия 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 активны.

Совет

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

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