after
Execute chart after event broadcast or specified time
Description
after(
returns
n
,E
)true
if the event E
has occurred at least
n
times since the associated state became active. Otherwise,
the operator returns false
.
after(
returns n
,tick
)true
if the chart has woken up at least
n
times since the associated state became active. Otherwise,
the operator returns false
.
The implicit event tick
is not supported when a Stateflow® chart in a Simulink® model has input events.
after(
returns n
,time_unit
)true
if at least n
units of time have
elapsed since the associated state became active. Otherwise, the operator returns
false
.
In charts in a Simulink model, specify time_unit
as seconds
(sec
), milliseconds (msec
), or
microseconds (usec
). If you specify n
as an
expression, the chart adjusts the temporal delay as the expression changes value
during the simulation.
In standalone charts in MATLAB®, specify n
with a value greater than or equal to
0.001
and time_unit
as seconds
(sec
). The operator creates a MATLAB
timer
object that generates an
implicit event to wake up the chart. MATLAB
timer
objects are limited to 1 millisecond precision. For more
information, see Events in Standalone Charts.
The
timer
object is created when the chart finishes executing theentry
actions of the associated state and its substates. If you specifyn
as an expression whose value changes during chart execution, the chart does not adjust the temporal delay of thetimer
object.The
timer
object starts running at the end of the chart step when the associated state becomes active. This step can include the execution of other parallel states in the chart.If the chart is processing another operation when it receives the implicit event from the
timer
object, the chart queues the event. When the current step is completed, the chart processes the event.If the state associated with the temporal logic operator becomes inactive before the chart processes the implicit event, the event does not wake up the chart.
Examples
Tips
You can use quotation marks to enclose the keywords
'tick'
,'sec'
,'msec'
, and'usec'
. For example,after(5,'tick')
is equivalent toafter(5,tick)
.The Stateflow chart resets the counter used by the
after
operator each time the associated state reactivates.The timing for absolute-time temporal logic operators depends on the type of Stateflow chart:
Charts in a Simulink model define absolute-time temporal logic in terms of simulation time.
Standalone charts in MATLAB define absolute-time temporal logic in terms of wall-clock time, which is limited to 1 millisecond precision.
The difference in timing can affect the behavior of a chart. For example, suppose that this chart is executing the
during
action of stateA
.In a Simulink model, the function call to
f
executes in a single time step and does not contribute to the simulation time. The transition from stateA
to stateB
occurs the first time the chart wakes up and stateA
has been active for at least 2 seconds. The value displayed by theentry
action in stateB
depends only on the step size used by the Simulink solver.In a standalone chart, the function call to
f
can take several seconds of wall-clock time to complete. If the call lasts more than two seconds, the chart queues the implicit event associated with theafter
operator. The transition from stateA
to stateB
occurs when the functionf
finishes executing. The value displayed by theentry
action in stateB
depends on the time the function call tof
takes to complete.
Version History
Introduced in R2014b