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

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.

Совет

Избегайте использования неориентированных локальных широковещательных сообщений события. Неориентированные локальные широковещательные сообщения события могут вызвать нежелательное рекурсивное поведение в вашем графике. Вместо этого отправьте локальные события при помощи направленных широковещательных сообщений. Для получения дополнительной информации смотрите Широковещательную передачу Локальные События, чтобы Синхронизировать Параллельные состояния.

Можно установить диагностический уровень для обнаружения неориентированных локальных широковещательных сообщений события. В диалоговом окне 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. График отвечает на событие с этими шагами:

  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 состояния активное состояние графика.

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

| | | | | | |

Похожие темы