Main Content

after

Eseguire il grafico dopo la trasmissione dell'evento o dopo un tempo specificato

Descrizione

esempio

after(n,E) restituisce true se l'evento E si è verificato almeno n volte da quando lo stato associato è diventato attivo. Altrimenti, l'operatore restituisce false.

esempio

after(n,tick) restituisce 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.

esempio

after(n,time_unit) restituisce 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 azioni entry dello stato associato e dei relativi stati secondari. Se si specifica n come un'espressione il cui valore cambia durante l'esecuzione del grafico, il grafico non regola il ritardo temporale dell'oggetto timer.

  • 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

espandi tutto

Visualizzazione di un messaggio di stato quando il grafico elabora una trasmissione dell'evento E, a partire dalla terza trasmissione di E dopo che lo stato è diventato attivo.

on after(3,E): disp("ON");

Stateflow chart that uses the after operator in a state.

Transizione dallo stato associato quando il grafico elabora una trasmissione dell'evento E, a partire dalla quinta trasmissione di E dopo che lo stato è diventato attivo.

after(5,E)

Stateflow chart that uses the after operator in a transition.

Transizione dallo stato associato se lo stato è rimasto attivo per almeno cinque trasmissioni dell'evento E.

Nei grafici in un modello di Simulink, inserire:

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

La notazione condizionale per gli operatori logici temporali non è supportata nei grafici autonomi in MATLAB.

Transizione dallo stato associato quando il grafico si attiva per almeno sette volte da quando lo stato è diventato attivo ma solo nel caso in cui la variabile temp è maggiore di 98,6.

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

Impostazione della variabile temp su LOW ogni volta che il grafico si attiva, a partire da quando lo stato associato è attivo per almeno 12,3 secondi.

on after(12.3,sec): temp = LOW;

Stateflow chart that uses the after operator in a state.

Suggerimenti

  • È possibile utilizzare le virgolette per racchiudere le parole chiave 'tick', 'sec', 'msec' e 'usec'. Ad esempio, after(5,'tick') equivale a after(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 stato A.

    Stateflow chart with two states. The during action in state A calls a function f. The transition to state B uses the expression after(2,sec). The entry action in state B displays the elapsed time.

    • 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 stato A allo stato B si verifica la prima volta che il grafico si attiva e lo stato A è attivo da almeno 2 secondi. Il valore visualizzato dall'azione entry nello stato B 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'operatore after. La transizione dallo stato A allo stato B si verifica quando la funzione f termina l'esecuzione. Il valore visualizzato dall'azione entry nello stato B dipende da quanto tempo impiega ad essere completata la chiamata di funzione a f.

Cronologia versioni

Introdotto in R2014b