Main Content

Control Chart Execution by Using Inner Transitions

An inner transition is a transition that does not exit the source state. Inner transitions are powerful when defined for superstates with exclusive (OR) decomposition. Use of inner transitions can greatly simplify a Stateflow® chart, as shown by the following examples:

Before Using an Inner Transition

This chart is an example of how you can simplify logic using an inner transition.

Chart with complex transitions between three substates.

Any event occurs and awakens the Stateflow chart. The default transition to the connective junction is valid. The destination of the transition is determined by [c1 > 0] and [c2 > 0]. If [c1 > 0] is true, the transition to A1 is true. If [c2 > 0] is true, the transition to A2 is valid. If neither [c1 > 0] nor [c2 > 0] is true, the transition to A3 is valid. The transitions among A1, A2, and A3 are determined by E, [c1 > 0], and [c2 > 0].

After Using an Inner Transition to a Connective Junction

This example simplifies the preceding example using an inner transition to a connective junction.

Chart with an inner transition path to three substates.

An event occurs and awakens the chart. The default transition to the connective junction is valid. The destination of the transitions is determined by [c1 > 0] and [c2 > 0].

You can simplify the chart by using an inner transition in place of the transitions among all the states in the original example. If state A is already active, the inner transition is used to reevaluate which of the substates of state A is to be active. When event E occurs, the inner transition is potentially valid. If [c1 > 0] is true, the transition to A1 is valid. If [c2 > 0] is true, the transition to A2 is valid. If neither [c1 > 0] nor [c2 > 0] is true, the transition to A3 is valid. This chart design is simpler than the previous one.

Note

When you use an inner transition to a connective junction, an active substate can exit and reenter when the transition condition for that substate is valid. For example, if substate A1 is active and [c1 > 0] is true, the transition to A1 is valid. In this case:

  1. Exit actions for A1 execute and complete.

  2. A1 becomes inactive.

  3. A1 becomes active.

  4. Entry actions for A1 execute and complete.

See Process the First Event with an Inner Transition to a Connective Junction for more information on the semantics of this notation.

Using an Inner Transition to a History Junction

This example shows an inner transition to a history junction.

Chart that contains an inner transition to a history junction.

State Power_on.High is initially active. When event Reset occurs, the inner transition to the history junction is valid. Because the inner transition is valid, the currently active state, Power_on.High, is exited. When the inner transition to the history junction is processed, the last active state, Power_on.High, becomes active (is reentered). If Power_on.Low was active under the same circumstances, Power_on.Low would be exited and reentered as a result. The inner transition in this example is equivalent to drawing an outer self-loop transition on both Power_on.Low and Power_on.High.

See Inner Transition to a History Junction for more information on the semantics of this notation.