A local event является событием, которое происходит в Stateflow® диаграмма и видна только на графике. Этот тип события позволяет параллельным (И) состояниям на одном графике синхронизироваться друг с другом, так что действия в одном состоянии запускают действия в другом состоянии. Действие в одном графике не может транслировать локальные события в состояния в другом графике. Чтобы определить локальное событие:
Добавьте событие к диаграмме Stateflow, как описано в разделе Задать события на графике.
Задайте для свойства Scope для события значение Local
.
Локальные события поддерживаются только в диаграммах Stateflow в Simulink® модели. Для получения дополнительной информации смотрите Синхронизация компонентов модели посредством широковещательных событий.
A directed event broadcast отправляет локальное событие непосредственно из одного состояния в другое с помощью оператора send
:
send(event_name,state_name)
event_name
является локальным событием и state_name
является состоянием приема. Локальное событие транслируется непосредственно в принимающее состояние и любое из его подсостояний. Локальное событие должно быть видимым как в состоянии отправки, так и в состоянии приема. Состояние приема должно быть активным во время широковещательной передачи события.Для примера этот график содержит два параллельных (И) состояния, A
и B
. Локальное событие E_one
принадлежит графику и видна обоим состояниям. В состоянии A
, переход от substate A1
для подсоединения A2
использует ориентированную трансляцию события формы send(E_one,B)
чтобы отправить локальное событие E_one
в состояние B
. В B
событие запускает переход от substate B1
для подсоединения B2
. Поэтому активные подсостояния в A
и B
синхронизируются. Для получения дополнительной информации о семантике этого примера, смотрите Направленное Вещание События Используя Отправку.
The state_name
аргумент может включать полный путь иерархии к состоянию. Для примера, если состояние A
содержит состояние A1
можно отправить событие E
в состояние A1
с этой трансляцией:
send(E,A.A1)
Совет
Не включать имя графика в полный путь иерархии к состоянию.
Чтобы транслировать локальное событие, которое не отображается в состоянии отправки, используйте оператор send
с квалифицированным именем события:
send(state_name.event_name)
event_name
является локальным событием, которое принадлежит принимающему состоянию state_name
. Локальное событие транслируется непосредственно в принимающее состояние и любое из его подсостояний. Локальное событие отображается в состоянии приема, но не в состоянии отправки. Состояние приема должно быть активным во время широковещательной передачи события.Для примера этот график содержит два параллельных (И) состояния, A
и B
. Локальное событие E_one
принадлежит состояние B
и видна только этому состоянию. В состоянии A
, переход от substate A1
для подсоединения A2
использует ориентированную трансляцию события формы send(B.E_one)
чтобы отправить локальное событие E_one
в состояние B
. В B
событие запускает переход от substate B1
для подсоединения B2
. Поэтому активные подсостояния в A
и B
синхронизируются. Для получения дополнительной информации о семантике этого примера, смотрите Направленное Вещание События Используя Квалифицированное Имя События.
The
аргумент может включать полный путь иерархии к принимающему состоянию. Не используйте имя графика в полном пути состояния. Например, предположим, что состояние state_name
A
содержит состояние A1
, и что A1
владеет локальным событием E
. Можно отправить E
события в состояние
A1
с этой трансляцией:
send(A.A1.E)
undirected event broadcast отправляет локальное событие во все состояния, в которых оно отображается, используя имя события в качестве действия условия:
event_name;
или вызовом оператора send
без указания состояния приема:
send(event_name)
event_name
является локальным событием, которое отображается в состоянии отправки.Когда это возможно, используйте ориентированные трансляции событий вместо неориентированных трансляций событий. Ориентированные трансляции событий предотвращают нежелательную рекурсию во время симуляции и улучшают эффективность сгенерированного кода. Для получения дополнительной информации см. раздел «Избегать нежелательной рекурсии на графике».
Во время симуляции диаграммы Stateflow могут обнаруживать неориентированные локальные трансляции событий. Чтобы контролировать уровень диагностического действия, откройте диалоговое окно Параметров конфигурации. На панели Diagnostics > Stateflow для диагностики Undirected event broadcasts можно выбрать none
, warning
, или error
. Настройкой по умолчанию является warning
. Для получения дополнительной информации смотрите Неориентированные трансляции событий (Simulink).