event является неграфическим объектом, который может проснуться и инициировать действия в графике Stateflow®. Для получения дополнительной информации смотрите, Синхронизируют Компоненты модели Широковещательными Событиями.
Диаграммы Stateflow отвечают на события циклическим способом.
Событие будит неактивный график.
График отвечает на событие путем выполнения переходов и состояний активности от верхней части вниз через иерархию графика. Запуск на уровне графика:
График проверяет на допустимые переходы между состояниями.
График выполняет during
и on
действия для активного состояния.
Доходы графика к следующему уравнивают иерархию.
График становится неактивным, пока он не получает следующее событие.
Для получения дополнительной информации смотрите Выполнение диаграммы Stateflow.
В моделях Simulink® диаграммы Stateflow получают входные события от других блоков в модели.
При обработке события состояние или действие перехода могут сгенерировать явные или неявные события, которые инициировали дополнительные шаги. Например:
Оператор send
может широковещательно передать локальный или выходные события.
Операторы enter
и exit
может сгенерировать неявные локальные события, когда выполнение графика вводит или выходит из состояния.
Оператор change
может сгенерировать неявное локальное событие, когда график устанавливает значение переменной.
В каждом случае график прерывает свое текущее действие, чтобы обработать новое событие. Когда действие, вызванное новым событием, закончило выполняться, график возвращается к действию, которое происходило перед прерыванием.
Примечание
В модели Simulink выполнение выхода инициирует события фронтом сигнала, эквивалентно переключению значения значения выходных данных между 0 и 1. Этот тип события не прерывает текущее действие графика. Вместо этого блок получения обрабатывает событие в следующий раз, когда модель выполняет блок. Для получения дополнительной информации смотрите, Активируют блок Simulink путем Отправки Выходных Событий.
Результаты обработки локального события могут конфликтовать с действием, которое происходило, прежде чем событие было сгенерировано. В зависимости от типа действия графики разрешают эти конфликты при помощи ранней логики возврата.
Тип действия | Рано возвратите логику |
---|---|
entry состояния действие | Если состояние более не активно после того, как локальное событие обрабатывается, график останавливает процесс входа в состояние. График не выполняет остающиеся операторы в entry действие. |
during состояния действие | Если состояние более не активно после того, как локальное событие обрабатывается, график прекращает выполнять состояние. График не выполняет остающиеся операторы в during действие. |
exit состояния действие | Если состояние более не активно после того, как локальное событие обрабатывается, график останавливает процесс выхода из состояния. График не выполняет остающиеся операторы в exit действие, ни любые действия перехода и entry состояния действия, которые следуют из выхода из состояния. |
Действие условия | Если исходное состояние внутреннего или внешнего пути к переходу или родительское состояние пути к переходу по умолчанию, более не активно после того, как локальное событие обрабатывается, график останавливает процесс перехода. График не выполняет остающиеся действия с путем к переходу или любым exit состояния и entry действия, которые следуют из взятия перехода. |
Действие перехода | Если родительский элемент пути к переходу не активен, или если родительский элемент имеет активное подсостояние, график останавливает процесс перехода. График не выполняет остающиеся действия с путем к переходу или любым entry состояния действия, которые следуют из взятия перехода. |
Например, в этом графике, входном событии E
и локальное событие F
инициируйте переходы между состояниями.
Предположим тот A
состояния активно, когда график получает событие
E
. График отвечает на событие с этими шагами:
График решает что переход от активного A
состояния утверждать
B
допустимо в результате события E
.
График выполняет действие условия допустимого перехода и широковещательного события F
.
График прерывает переход от A
состояния утверждать
B
и начинает обрабатывать событие F
.
График решает что переход от активного A
состояния утверждать
C
допустимо в результате события F
.
A
состояния выполняет его
exit
действие.
A
состояния становится неактивным.
C
состояния становится активным.
C
состояния выполняет его
entry
действие.
После события F
процессов графика,
C
состояния активное состояние графика. Поскольку
A
состояния более не активно, график использует, рано возвращают логику, и мешает переходу
A
состояния утверждать
B
.
Совет
Избегайте использования неориентированных локальных широковещательных сообщений события. Неориентированные локальные широковещательные сообщения события могут вызвать нежелательное рекурсивное поведение в вашем графике. Вместо этого отправьте локальные события при помощи направленных широковещательных сообщений. Для получения дополнительной информации смотрите Широковещательную передачу Локальные События, чтобы Синхронизировать Параллельные состояния.
Можно установить диагностический уровень для обнаружения неориентированных локальных широковещательных сообщений события. В диалоговом окне Configuration Parameters откройте Diagnostics> панель Stateflow и установите параметр Undirected event broadcasts на none
Предупреждение
, или error
. Настройкой по умолчанию является warning
.
Автономные диаграммы Stateflow получают входное событие, когда вы вызываете step
функционируйте или входная функция события в MATLAB®.
Автономные диаграммы также получают неявные события от MATLAB timer
объекты сопоставлены с абсолютно-разовыми временными логическими операторами after
, at
, и every
. Эти операторы задают временную логику в терминах тактового стенкой времени. Если состояние, сопоставленное с временным логическим оператором, становится неактивным, прежде чем график обработает неявное событие, событие не будит график.
Если график обрабатывает другую операцию, когда это получает событие, график ставит событие в очередь для выполнения, когда текущий шаг завершается. Можно задать размер очереди событий путем установки параметра конфигурации -eventQueueSize
когда вы создаете объект диаграммы. Для получения дополнительной информации смотрите Параметры конфигурации Объекта диаграммы.
Например, в этом графике, входных событиях E
и F
инициируйте переходы между состояниями. Примите тот SendF
функция в пути MATLAB, который вызывает входную функцию события F
.
Предположим тот A
состояния активно, когда график получает событие
E
. График отвечает на событие с этими шагами:
График решает что переход от активного A
состояния утверждать
B
допустимо в результате события E
.
График выполняет действие условия допустимого перехода и вызывает функциональный SendF
.
SendF
вызывает входную функцию события F
. Поскольку график занят, обрабатывая действие условия, он ставит событие F в очередь
.
График завершает выполнение действия условия.
A
состояния выполняет его
exit
действие.
A
состояния становится неактивным.
B
состояния становится активным.
B
состояния выполняет его
entry
действие.
График начинает обрабатывать событие F
с очередями.
График решает что переход от активного B
состояния утверждать
D
допустимо в результате события F
.
B
состояния выполняет его
exit
действие.
B
состояния становится неактивным.
D
состояния становится активным.
D
состояния выполняет его
entry
действие.
После события F
процессов графика,
D
состояния активное состояние графика.
after | at | change | enter | every | exit | send | timer