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

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.

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

Похожие темы