event является неграфическим объектом, который может просыпаться и запускать действия в Stateflow® график. Для получения дополнительной информации смотрите Синхронизация компонентов модели посредством широковещательных событий.
Диаграммы Stateflow реагируют на события циклически.
Событие пробуждает неактивный график.
График реагирует на событие, выполняя переходы и состояния активности сверху вниз через иерархию диаграммы. Начиная с уровня графика:
График проверяет допустимые переходы между состояниями.
График выполняет during
и on
действия для активного состояния.
График переходит на следующий уровень вниз по иерархии.
График становится неактивным, пока не получит следующее событие.
Для получения дополнительной информации смотрите Выполнение диаграммы Stateflow.
В Simulink® модели, диаграммы Stateflow получают входные события от других блоков в модели.
При обработке события состояние или действие перехода могут генерировать явные или неявные события, которые запускают дополнительные шаги. Для примера:
В каждом случае график прерывает свою текущую деятельность, чтобы обработать новое событие. Когда действие, вызванное новым событием, заканчивается, график возвращается к действию, которое происходило до прерывания.
Примечание
В модели 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
.
Совет
Избегайте использования неориентированных локальных трансляций событий. Неориентированные локальные трансляции событий могут вызвать нежелательное рекурсивное поведение на графике. Вместо этого отправляйте локальные события с помощью ориентированных трансляций. Для получения дополнительной информации смотрите Широковещание локальных событий для синхронизации параллельных состояний.
Можно задать уровень диагностики для обнаружения неориентированных локальных трансляций событий. В диалоговом окне Параметров конфигурации откройте панель Diagnostics > Stateflow и установите параметр Undirected event broadcasts на none
, warning
, или 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