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

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

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

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

Любое событие происходит и пробуждает диаграмму Stateflow. Переход по умолчанию к соединительному соединению действителен. Адресат перехода определяется [c1 > 0] и [c2 > 0]. Если [c1 > 0] true, переход к A1 является true. Если [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.

См. Пример исторических соединений для другого примера, использующего историческое соединение.

Смотрите Внутренний Переход к Историческому Соединению для получения дополнительной информации о семантике этого обозначения.