This example shows the behavior of a simple condition action in a transition path with multiple segments. The chart uses implicit ordering of outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State A
is active. Conditions
C_one
and C_two
are false. Event
E_one
occurs and awakens the chart, which processes the event
from the root down through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
. A valid transition
segment from state A
to a connective junction is
detected. The condition action A_one
is detected on the
valid transition segment and is immediately executed and completed. State
A
is still active.
Because the conditions on the transition segments to possible destinations are false, none of the complete transitions is valid.
State A
during actions
(durA()
) execute and complete.
State A
remains active.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow® chart associated with event E_one
when state
A
is initially active.
This example shows the behavior of a simple condition and transition action specified on a transition from one exclusive (OR) state to another.
Initially, the chart is asleep. State A
is active. Condition
C_one
is true. Event E_one
occurs and
awakens the chart, which processes the event from the root down through the
hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
. A valid transition from
state A
to state B
is detected. The
condition C_one
is true. The condition action
A_one
is detected on the valid transition and is
immediately executed and completed. State A
is still
active.
State A
exit actions
(ExitA()
) execute and complete.
State A
is marked inactive.
The transition action A_two
is
executed and completed.
State B
is marked active.
State B
entry actions
(entB()
) execute and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_one
when state
A
is initially active.
Condition actions and connective junctions are used to design a
for
loop construct. This example shows the use of a condition
action and connective junction to create a for
loop construct.
The chart uses implicit ordering of outgoing transitions (see Implicit Ordering).
See For-Loop Construct to see the behavior of this example.
This example shows how to use condition actions to broadcast events immediately to parallel (AND) states. The chart uses implicit ordering of parallel states (see Implicit Ordering of Parallel States).
See Broadcast Events in Condition Actions to see the behavior of this example.
Tip
Avoid using undirected local event broadcasts. Undirected local event broadcasts can cause unwanted recursive behavior in your chart. Instead, send local events by using directed broadcasts. For more information, see Broadcast Local Events to Synchronize Parallel States.
You can set the diagnostic level for detecting undirected local event broadcasts. In the
Configuration Parameters dialog box, open the Diagnostics > Stateflow pane and set the Undirected event broadcasts parameter to
none
, warning
, or
error
. The default setting is
warning
.
This example shows a notation to avoid when using event broadcasts as condition actions because the semantics results in cyclic behavior.
Initially, the chart is asleep. State On
is active. Event
E_one
occurs and awakens the chart, which processes the event
from the root down through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
.
A valid transition from state On
to state
Off
is detected.
The condition action on the transition broadcasts
event E_one
.
Event E_one
is detected on the
valid transition, which is immediately executed. State On
is still active.
The broadcast of event E_one
awakens the chart a second time.
Go to step 1.
Steps 1 through 5 continue to execute in a cyclical manner. The transition label
indicating a trigger on the same event as the condition action broadcast event
results in unrecoverable cyclic behavior. This sequence never completes when event
E_one
is broadcast and state On
is
active.
Tip
Avoid using undirected local event broadcasts. Undirected local event broadcasts can cause unwanted recursive behavior in your chart. Instead, send local events by using directed broadcasts. For more information, see Broadcast Local Events to Synchronize Parallel States.
You can set the diagnostic level for detecting undirected local event broadcasts. In the
Configuration Parameters dialog box, open the Diagnostics > Stateflow pane and set the Undirected event broadcasts parameter to
none
, warning
, or
error
. The default setting is
warning
.