after
Eseguire il grafico dopo la trasmissione dell'evento o dopo un tempo specificato
Descrizione
after(
restituisce n
,E
)true
se l'evento E
si è verificato almeno n
volte da quando lo stato associato è diventato attivo. Altrimenti, l'operatore restituisce false
.
after(
restituisce n
,tick
)true
se il grafico si è attivato almeno n
volte da quando lo stato associato è diventato attivo. Altrimenti, l'operatore restituisce false
.
L'evento implicito tick
non è supportato quando un grafico Stateflow® in un modello di Simulink® presenta eventi di input.
after(
restituisce n
,time_unit
)true
se sono trascorse almeno n
unità di tempo da quando lo stato associato è diventato attivo. Altrimenti, l'operatore restituisce false
.
Nei grafici in un modello di Simulink, specificare time_unit
in secondi (sec
), millisecondi (msec
) o microsecondi (usec
). Se si specifica n
come espressione, il grafico regola il ritardo temporale al variare del valore dell'espressione durante la simulazione.
Nei grafici autonomi in MATLAB®, specificare n
con un valore maggiore o uguale a 0.001
e time_unit
come secondi (sec
). L'operatore crea un oggetto MATLAB timer
che genera un evento implicito per attivare il grafico. Gli oggetti MATLAB timer
sono caratterizzati da una precisione limitata a 1 millisecondo. Per ulteriori informazioni, vedere Events in Standalone Charts.
L'oggetto
timer
viene creato quando il grafico termina l'esecuzione delle azionientry
dello stato associato e dei relativi stati secondari. Se si specifican
come un'espressione il cui valore cambia durante l'esecuzione del grafico, il grafico non regola il ritardo temporale dell'oggettotimer
.L'oggetto
timer
inizia l'esecuzione alla fine del passo del grafico quando lo stato associato diventa attivo. Tale passo può includere l'esecuzione di altri stati paralleli nel grafico.Se il grafico sta elaborando un'altra operazione quando riceve l'evento implicito dall'oggetto
timer
, il grafico mette in coda l'evento. Il grafico elabora l'evento quando il passo corrente è completato.Se lo stato associato all'operatore logico temporale diventa inattivo prima che il grafico elabori l'evento implicito, l'evento non attiva il grafico.
Esempi
Suggerimenti
È possibile utilizzare le virgolette per racchiudere le parole chiave
'tick'
,'sec'
,'msec'
e'usec'
. Ad esempio,after(5,'tick')
equivale aafter(5,tick)
.Il grafico Stateflow azzera il contatore utilizzato dall'operatore
after
ogni volta che lo stato associato si riattiva.La tempistica degli operatori logici temporali a tempo assoluto dipende dal tipo di grafico Stateflow:
I grafici in un modello di Simulink definiscono la logica temporale a tempo assoluto in termini di tempo di simulazione.
I grafici autonomi in MATLAB definiscono la logica temporale a tempo assoluto in termini di wall time, la cui precisione è limitata a 1 millisecondo.
La differenza di tempistica può influire sul comportamento di un grafico. Ad esempio, si supponga che questo grafico stia eseguendo l'azione
during
dello statoA
.In un modello di Simulink, la chiamata di funzione a
f
viene eseguita in un singolo passo temporale e non contribuisce al tempo di simulazione. La transizione dallo statoA
allo statoB
si verifica la prima volta che il grafico si attiva e lo statoA
è attivo da almeno 2 secondi. Il valore visualizzato dall'azioneentry
nello statoB
dipende solo dalla grandezza del passo utilizzata dal risolutore di Simulink.In un grafico autonomo, la chiamata di funzione
f
può richiedere diversi secondi di wall time per essere completata. Se la chiamata dura più di due secondi, il grafico mette in coda l'evento implicito associato all'operatoreafter
. La transizione dallo statoA
allo statoB
si verifica quando la funzionef
termina l'esecuzione. Il valore visualizzato dall'azioneentry
nello statoB
dipende da quanto tempo impiega ad essere completata la chiamata di funzione af
.
Cronologia versioni
Introdotto in R2014b