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

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

Можно широковещательно передать события непосредственно от одного состояния до другого, чтобы синхронизировать параллель (AND) состояния в том же графике. Локальные события поддерживаются только в графиках Stateflow® в моделях Simulink®. Следующие правила применяются:

  • Состояние получения должно быть активным во время широковещательной передачи события.

  • Действие в одном графике не может широковещательно передать события к состояниям в другом графике.

Используя направленное локальное событие широковещательная передача предоставляет следующие преимущества по неориентированной широковещательной передаче:

  • Предотвращает нежелательную рекурсию во время симуляции.

  • Повышает эффективность сгенерированного кода.

Для получения информации о предотвращении нежелательной рекурсии см. Инструкции для Предотвращения Нежелательной Рекурсии в Графике.

Направленная локальная широковещательная передача события Используя send

Формат направленной локальной широковещательной передачи события с send:

send(event_name,state_name)

где event_name широковещательно передается к state_name и любым потомкам того состояния в иерархии. Событие, которое вы отправляете, должно быть видимо и к передающему состоянию и к состоянию получения (state_name).

Аргумент state_name может включать весь путь к иерархии к состоянию. Например, если A состояния содержит A1 состояния, отправьте событие e, чтобы утвердить A1 со следующей широковещательной передачей:

send(e, A.A1)

Совет

Не включайте имя графика в весь путь к иерархии к состоянию.

Следующий пример направленного локального события широковещательно передал, использует синтаксис send(event_name,state_name).

В этом примере событие E_one принадлежит графику и видимо и к A и к B. Смотрите, что Направленная Широковещательная передача События Использовать Отправляет для получения дополнительной информации о семантике этого обозначения.

Направленная локальная широковещательная передача события Используя квалифицированные имена события

Формат направленной локальной широковещательной передачи события с помощью квалифицированных имен события:

send(state_name.event_name)

где event_name широковещательно передается к его состоянию владения (state_name) и любые потомки того состояния в иерархии. Событие, которое вы отправляете, видимо только к состоянию получения (state_name).

Аргумент state_name может также включать весь путь к иерархии к состоянию получения. Не используйте имя графика на имя полного пути состояния.

Следующий пример показывает использование квалифицированного имени события в направленной локальной широковещательной передаче события.

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

Диагностика для обнаружения неориентированных локальных широковещательных сообщений события

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

  • entry: send(E1), где E1 является локальным событием в графике

  • exit: E2, где E2 является локальным событием в графике

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

Смотрите также

Похожие темы