Использование событий для выполнения графиков

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

Как диаграммы Stateflow реагируют на события

Диаграммы Stateflow реагируют на события циклически.

  1. Событие пробуждает неактивный график.

  2. График реагирует на событие, выполняя переходы и состояния активности сверху вниз через иерархию диаграммы. Начиная с уровня графика:

    1. График проверяет допустимые переходы между состояниями.

    2. График выполняет during и on действия для активного состояния.

    3. График переходит на следующий уровень вниз по иерархии.

  3. График становится неактивным, пока не получит следующее событие.

Для получения дополнительной информации смотрите Выполнение диаграммы Stateflow.

События в моделях Simulink

В Simulink® модели, диаграммы Stateflow получают входные события от других блоков в модели.

При обработке события состояние или действие перехода могут генерировать явные или неявные события, которые запускают дополнительные шаги. Для примера:

  • Оператор send может транслировать локальные или выходные события.

  • Операторы enter и exit может генерировать неявные локальные события, когда выполнение графика входит или выходит из состояния.

  • Оператор change может сгенерировать неявное локальное событие, когда график задает значение переменной.

В каждом случае график прерывает свою текущую деятельность, чтобы обработать новое событие. Когда действие, вызванное новым событием, заканчивается, график возвращается к действию, которое происходило до прерывания.

Примечание

В модели Simulink выполнение выходных событий триггера края эквивалентно переключению значения выходного значения данных между 0 и 1. Этот тип события не прерывает текущую активность графика. Вместо этого принимающий блок обрабатывает событие в следующий раз, когда модель выполняет блок. Для получения дополнительной информации смотрите Активация блока Simulink путем отправки выходных событий.

Логика раннего возврата

Результаты обработки локального события могут конфликтовать с действием, которое происходило до создания события. В зависимости от типа действия графиков разрешают эти конфликты с помощью логики раннего возврата.

Тип действия

Логика раннего возврата

Конечные entry действиеЕсли состояние перестанет быть активным после обработки локального события, график останавливает процесс входа в состояние. График не выполняет оставшиеся операторы в entry действие.
Конечные during действиеЕсли состояние перестанет быть активным после обработки локального события, график перестанет выполнять состояние. График не выполняет оставшиеся операторы в during действие.
Конечные exit действиеЕсли состояние перестанет быть активным после обработки локального события, график останавливает процесс выхода из состояния. График не выполняет оставшиеся операторы в exit действие или какие-либо переходные действия и entry состояния действия, которые являются результатом выхода из состояния.
Действие условияЕсли исходное состояние внутреннего или внешнего переходного пути или родительского состояния переходного пути по умолчанию больше не является активным после обработки локального события, график останавливает процесс перехода. График не выполняет оставшиеся действия на пути перехода или любом состоянии exit и entry действия, которые являются результатом перехода.
Переходное действиеЕсли родительский элемент пути перехода не активен, или если у родительский элемент есть активное подсостояние, график останавливает процесс перехода. График не выполняет оставшиеся действия на пути перехода или любом состоянии entry действия, которые являются результатом перехода.

Для примера на этой диаграмме входа событие E и локальное событие F инициировать переходы между состояниями.

Предположим, что состояние A активно, когда график получает событие E. График реагирует на событие следующими шагами:

  1. График определяет, что переход от активного состояния A в состояние B действителен в результате события E.

  2. График выполняет действие условия допустимого перехода и транслирует событие F.

  3. График прерывает переход от состояния A в состояние B и начинает обрабатывать F событий.

  4. График определяет, что переход от активного состояния A в состояние C действителен в результате события F.

  5. Конечные A выполняет его exit действие.

  6. Конечные A становится неактивным.

  7. Конечные C становится активным.

  8. Конечные 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. График реагирует на событие следующими шагами:

  1. График определяет, что переход от активного состояния A в состояние B действителен в результате события E.

  2. График выполняет действие условия допустимого перехода и вызывает функцию SendF.

  3. SendF вызывает функцию входного события F. Поскольку график занят обработкой действия условия, он ставит событие в очередь F.

  4. График завершает выполнение действия условия.

  5. Конечные A выполняет его exit действие.

  6. Конечные A становится неактивным.

  7. Конечные B становится активным.

  8. Конечные B выполняет его entry действие.

  9. График начинает обрабатывать событие в очереди F.

  10. График определяет, что переход от активного состояния B в состояние D действителен в результате события F.

  11. Конечные B выполняет его exit действие.

  12. Конечные B становится неактивным.

  13. Конечные D становится активным.

  14. Конечные D выполняет его entry действие.

После того, как график обрабатывает событие F, состояние D является активным состоянием графика.

См. также

| | | | | | |

Похожие темы