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

local event является событием, которое происходит в графике Stateflow® и отображается только в графике. Этот тип события позволяет параллели (AND) состояния в том же графике синхронизироваться друг с другом, так, чтобы действия в триггерных действиях состояния в другом состоянии. Действие в одном графике не может широковещательно передать локальные события к состояниям в другом графике. Задавать локальное событие:

  1. Добавьте событие к диаграмме Stateflow, как описано в Задают События в Графике.

  2. Установите свойство Scope для события к Local.

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

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

directed event broadcast отправляет локальное событие непосредственно от одного состояния до другого при помощи оператора send:

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

Например, этот график содержит две параллели (AND) состояния, A и B. Локальное событие E_one принадлежит графику и отображается к обоим состояниям. В A состояния, переход от A1 подсостояния подутверждать A2 использует направленную широковещательную передачу события формы send(E_one,B) отправить локальное событие E_one утверждать B. В B, событие инициировало переход от B1 подсостояния подутверждать B2. Поэтому активные подсостояния в A и B синхронизируются. Для получения дополнительной информации о семантике этого примера смотрите, что Направленная Широковещательная передача События Использовать Отправляет.

Stateflow chart that uses a directed event broadcast to synchronize the substates of two parallel (AND) states.

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

send(E,A.A1)

Совет

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

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

Чтобы широковещательно передать локальное событие, которое не отображается к передающему состоянию, используйте оператор send с квалифицированным именем события:

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

Например, этот график содержит две параллели (AND) состояния, A и B. Локальное событие E_one принадлежит B состояния и отображается только к тому состоянию. В A состояния, переход от A1 подсостояния подутверждать A2 использует направленную широковещательную передачу события формы send(B.E_one) отправить локальное событие E_one утверждать B. В B, событие инициировало переход от B1 подсостояния подутверждать B2. Поэтому активные подсостояния в A и B синхронизируются. Для получения дополнительной информации о семантике этого примера смотрите, что Направленная Широковещательная передача События Использует Квалифицированное Имя События.

Stateflow chart that uses a directed event broadcast to synchronize the substates of two parallel (AND) states. The broadcast uses the qualified event name B.E_one.

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

send(A.A1.E)

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

undirected event broadcast отправляет локальное событие во все состояния, в которых он отображается при помощи имени события как действие условия:

event_name;

или путем вызова оператора send не задавая состояние получения:

send(event_name)
event_name локальное событие, которое отображается к передающему состоянию.

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

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

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

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

Похожие темы