transitions
Define transitions between modes in mode charts
Parent Section: modecharts
Syntax
transitionsfrom_mode
->to_mode
:predicate_condition
end
Description
transitions
begins a transitions declaration block in a mode chart.
The transitions
block, terminated by an end
keyword, can contain one or more transition constructs.
Transition constructs use the syntax
from_mode -> to_mode : predicate_condition
where:
from_mode
is the mode active before the transition.to_mode
is the mode active after the transition.predicate_condition
is the expression that needs to be true for the transition to happen.
For example, if a mode chart declares two modes, m1
and
m2
, this syntax specifies that the system transitions from mode
m1
to mode m2
when the p1
predicate is true:
transitions
m1 -> m2 : p1
end
To implement a state reset, mode charts can contain instantaneous modes and compound transitions. Compound transitions use the syntax
from_mode -> instantaneous_mode -> to_mode : predicate_condition
where:
from_mode
is the mode active before the transition.instantaneous_mode
is the mode active for one event iteration during the transition. Only one instantaneous mode is allowed per transition, therefore, a compound transition cannot contain more than three modes.to_mode
is the mode active after the transition. For a compound transition,to_mode
can be the same asfrom_mode
.predicate_condition
is the expression that must be true for the transition to happen.
For example, in this compound transition, when predicate t
becomes
true, the system transitions from mode A
to mode
B
, performs one event iteration, and then immediately transitions to
mode C
.
A -> B -> C : t
Transition Precedence and Execution Rules
If multiple predicates become true simultaneously, the transition priority is
defined by the order they are listed. For example, suppose a mode chart declares
three modes, m1
, m2
, and
m3
, and defines these transitions:
transitions
m1 -> m2 : p1
m1 -> m3 : p2
end
If predicates p1
and p2
become true
simultaneously, the system transitions from mode m1
to mode
m2
(the first transition listed).
At initialization time, the solver sets the initial mode first, and then checks
the transitions. If a transition predicate is true at initialization time, the
system might start in a different mode than that listed first (or specified by the
initial
construct). For example, consider a
mode chart that declares two modes, m1
and m2
,
and defines this transition:
transitions
m1 -> m2 : p1
end
If predicate p1
is true at initialization time, the system
immediately transitions from mode m1
(the first mode listed) to
mode m2
, and simulation starts in mode
m2
.
Similarly, if a transition predicate is still true after completing the transition, the system can enter an infinite loop and eventually generate an error. This modeling error is more prevalent with compound transitions, where, after completing the transition, the system often ends up in the same mode where it was before entering the transition. To avoid this situation, try to model compound transitions in such a way that the instantaneous mode invalidates the predicate. For more information, see State Reset Example.
For a detailed example of using transitions
, see Switch with Hysteresis.
Version History
Introduced in R2017a