Рано возвратите логику для широковещательных сообщений события

Инструкции для соответствующего поведения графика

Эти инструкции гарантируют соответствующее поведение графика в событийно-управляемых системах:

  • Когда состояние активно, его родительский элемент должен также быть активным.

  • Состояние (или график) с исключительным (OR) разложение никогда не должно иметь больше чем одного активного подсостояния.

  • Если параллельное состояние активно, одноуровневые элементы с более высоким приоритетом должны также быть активными.

Как рано возвращают логические работы

Графики Stateflow® работают на одном потоке. Поэтому графики должны прервать текущее действие, чтобы обработать события. Действие на основе широковещательной передачи события от состояния или действия перехода может конфликтовать с текущим действием. Графики разрешают эти конфликты при помощи ранней логики возврата для широковещательных сообщений события можно следующим образом:

Тип действия

Рано возвратите логику

Запись

Если состояние более не активно в конце широковещательной передачи события, график не выполняет остающиеся шаги для ввода состояния.

Выход

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

Во время

Если состояние более не активно в конце широковещательной передачи события, график не выполняет остающиеся шаги для выполнения активного состояния.

Условие

Если состояние источника внутренней или внешней блок-схемы — или метрополия блок-схемы по умолчанию — более не активно в конце широковещательной передачи события, график не выполняет остающиеся шаги для выполнения блок-схемы.

Переход

Если родительский элемент пути к переходу не активен — или если тот родительский элемент имеет активное подсостояние — график не выполняет остающиеся действия перехода и утверждает entry действия.

Пример ранней логики возврата

В этом примере примите тот A состояния первоначально активно. Событие E происходит, вызывая следующее поведение:

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

  2. Допустимый переход, чтобы утвердить B \exists.

  3. Действие условия допустимого перехода выполняется и широковещательное событие F.

    Событие F прерывает переход от A к B.

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

  5. Допустимый переход, чтобы утвердить C \exists.

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

  7. A состояния становится неактивным.

  8. C состояния становится активным.

  9. C состояния выполняет и завершает его entry действие.

C состояния теперь единственное активное подсостояние его графика. Диаграмма Stateflow не может возвратиться к переходу от A состояния утверждать B и продолжите после действия условия, которые широковещательно передают событие F Шаг 3. Во-первых, его источник, утвердите A, более не активно. Во-вторых, если график позволил переход, B состояния стал бы вторым активным подсостоянием графика. Это поведение нарушает инструкцию, что состояние (или график) с исключительным (OR) разложение никогда не может иметь больше чем одного активного подсостояния. Поэтому график использует, рано возвращают логику, и останавливает переход от A состояния утверждать B.

Совет

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

Можно установить диагностический уровень для обнаружения неориентированных локальных широковещательных сообщений события. В диалоговом окне Model Configuration Parameters перейдите к Diagnostics> панель Stateflow и установите диагностику Undirected event broadcasts на noneПредупреждение, или error. Настройкой по умолчанию является warning.