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
является допустимым. В этом случае:
Завершите действия для A1
Выполните и завершите.
A1
становится неактивным.
A1
становится активным.
Действия входа для A1
Выполните и завершите.
Смотрите Обработку Первого События с Внутренним Переходом к Соединительному Соединению для получения дополнительной информации о семантике этого обозначения.
Этот пример показывает внутренний переход к историческому соединению.
Конечные Power_on.High
первоначально активно. Когда событие Reset
происходит, внутренний переход к историческому соединению действителен. Поскольку внутренний переход действителен, текущее активное состояние, Power_on.High
, выходит. Когда внутренний переход к историческому соединению обрабатывается, последнее активное состояние, Power_on.High
, становится активным (возвращается). Если Power_on.Low
был активен при тех же обстоятельствах, Power_on.Low
в результате этого будет осуществлен выход и повторный ввод. Внутренний переход в этом примере эквивалентен проведению внешнего самоцикла перехода на обоих Power_on.Low
и Power_on.High
.
См. Пример исторических соединений для другого примера, использующего историческое соединение.
Смотрите Внутренний Переход к Историческому Соединению для получения дополнительной информации о семантике этого обозначения.