exponenta event banner

Внутренние переходы

Внутренний переход - это переход, который не выходит из исходного состояния. Внутренние переходы являются мощными, если они определены для сверхсостояний с исключительным разложением (ИЛИ). Использование внутренних переходов может значительно упростить диаграмму Stateflow ®, как показано на следующих примерах:

Перед использованием внутреннего перехода

Эта диаграмма является примером того, как можно упростить логику с помощью внутреннего перехода.

Любое событие происходит и пробуждает диаграмму Stateflow. Переход по умолчанию к соединительному соединению допустим. Назначение перехода определяется [c1 > 0] и [c2 > 0]. Если [c1 > 0] true, переход к A1 является правдой. Если [c2 > 0] true, переход к A2 является действительным. Если ни то ни другое [c1 > 0] ни [c2 > 0] true, переход к A3 является действительным. Переходы между A1, A2, и A3 определяются E, [c1 > 0], и [c2 > 0].

После использования внутреннего перехода к соединительному соединению

Этот пример упрощает предыдущий пример с использованием внутреннего перехода к соединительному соединению.

Событие происходит и пробуждает диаграмму. Переход по умолчанию к соединительному соединению допустим. Назначение переходов определяется [c1 > 0] и [c2 > 0].

Можно упростить диаграмму, используя внутренний переход вместо переходов между всеми состояниями в исходном примере. Если состояние A уже активен, внутренний переход используется для переоценки какого из подсостояний состояния A должен быть активным. Когда событие E возникает, внутренний переход потенциально допустим. Если [c1 > 0] true, переход к A1 является действительным. Если [c2 > 0] true, переход к A2 является действительным. Если ни то ни другое [c1 > 0] ни [c2 > 0] true, переход к A3 является действительным. Этот дизайн диаграммы проще предыдущего.

Примечание

При использовании внутреннего перехода к соединительному соединению активное подсостояние может выйти и повторно войти, когда условие перехода для этого подсостояния является действительным. Например, если подсостояние A1 активен и [c1 > 0] true, переход к A1 является действительным. В этом случае:

  1. Действия выхода для A1 выполнить и завершить.

  2. A1 становится неактивным.

  3. A1 становится активным.

  4. Действия ввода для A1 выполнить и завершить.

Дополнительные сведения о семантике этого обозначения см. в разделе Обработка первого события с внутренним переходом к соединительному соединению.

Использование внутреннего перехода к соединению истории

В этом примере показан внутренний переход к соединению истории.

Государство Power_on.High изначально активен. Когда событие Reset происходит, действителен внутренний переход к соединению истории. Поскольку внутренний переход допустим, текущее активное состояние, Power_on.High, выходит. При обработке внутреннего перехода в исторический переход последнее активное состояние, Power_on.High, становится активным (повторно вводится). Если Power_on.Low был активен при тех же обстоятельствах, Power_on.Low в результате этого будет осуществлен выход и повторный въезд. Внутренний переход в этом примере эквивалентен рисованию внешнего перехода с петлей на обоих Power_on.Low и Power_on.High.

Еще один пример использования соединения истории см. в разделе Пример соединений истории.

Дополнительные сведения о семантике этой нотации см. в разделе Внутренний переход к историческому соединению.