Main Content

after

Ausführen des Diagramms nach der Übertragung eines Ereignisses oder nach einer bestimmten Zeit

Beschreibung

Beispiel

after(n,E) gibt true zurück, wenn das Ereignis E seit der Aktivierung des zugeordneten Zustands mindestens n-mal eingetreten ist. Anderenfalls gibt der Operator false zurück.

Beispiel

after(n,tick) gibt true zurück, wenn das Diagramm seit der Aktivierung des zugeordneten Zustands mindestens n-mal aufgerufen wurde. Anderenfalls gibt der Operator false zurück.

Das implizite Ereignis tick wird nicht unterstützt, wenn ein Stateflow®-Diagramm in einem Simulink®-Modell über Eingangsereignisse verfügt.

Beispiel

after(n,time_unit) gibt true zurück, wenn seit der Aktivierung des zugeordneten Zustands mindestens n Zeiteinheiten verstrichen sind. Anderenfalls gibt der Operator false zurück.

Geben Sie bei Diagrammen in einem Simulink-Modell time_unit in Sekunden (sec), Millisekunden (msec) oder Mikrosekunden (usec) an. Wenn Sie n als Ausdruck angeben, passt das Diagramm die Zeitverzögerung an, während sich der Wert des Ausdrucks im Laufe der Simulation ändert.

Geben Sie bei eigenständigen Diagrammen in MATLAB® n mit einem Wert größer als oder gleich 0.001 und time_unit in Sekunden (sec) an. Der Operator erzeugt ein MATLAB timer-Objekt, das ein implizites Ereignis zum Aktivieren des Diagramms erzeugt. MATLAB timer-Objekte sind auf eine Genauigkeit von 1 Millisekunde begrenzt. Weitere Informationen finden Sie unter Events in Standalone Charts.

  • Das timer-Objekt wird erzeugt, wenn das Diagramm die Aktionen vom Typ entry des zugeordneten Zustands und dessen untergeordneten Zuständen ausgeführt hat. Wenn Sie n als Ausdruck angeben, dessen Wert sich während der Ausführung des Diagramms ändert, passt das Diagramm nicht die Zeitverzögerung des timer-Objekts an.

  • Das timer-Objekt beginnt am Ende des Diagrammschritts mit der Ausführung, wenn der zugeordnete Zustand aktiv wird. Dieser Schritt kann die Ausführung weiterer paralleler Zustände im Diagramm umfassen.

  • Wenn das Diagramm zum Zeitpunkt eines vom timer-Objekt ausgehenden impliziten Ereignisses gerade einen anderen Vorgang bearbeitet, wird das Ereignis in die Warteschlange gestellt. Nachdem der aktuelle Schritt abgeschlossen ist, verarbeitet das Diagramm das Ereignis.

  • Wenn der mit dem zeitlichen Logikoperator verbundene Zustand inaktiv wird, bevor das Diagramm das implizite Ereignis verarbeitet, wird das Diagramm durch das Ereignis nicht aufgerufen.

Beispiele

alle erweitern

Lassen Sie eine Zustandsmeldung anzeigen, wenn das Diagramm eine Übertragung des Ereignisses E verarbeitet, wobei es bei der dritten Übertragung von E nach der Aktivierung des Zustands beginnt.

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

Stateflow chart that uses the after operator in a state.

Verlassen Sie den zugeordneten Zustand durch einen Übergang, wenn das Diagramm eine Übertragung des Ereignisses E verarbeitet, wobei es bei der fünften Übertragung von E nach der Aktivierung des Zustands beginnt.

after(5,E)

Stateflow chart that uses the after operator in a transition.

Verlassen Sie den zugeordneten Zustand durch einen Übergang, wenn der Zustand für mindestens fünf Übertragungen des Ereignisses E aktiv gewesen ist.

Geben Sie bei Diagrammen in einem Simulink-Modell Folgendes ein:

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

Die bedingte Notation für temporale Logikoperatoren wird in eigenständigen Diagrammen in MATLAB nicht unterstützt.

Verlassen Sie den zugeordneten Zustand durch einen Übergang, wenn das Diagramm mindestens zum siebten Mal nach der Aktivierung des Zustands aufgerufen wurde, jedoch nur, wenn die Variable temp größer als 98.6 ist.

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

Setzen Sie die Variable temp immer dann auf LOW, wenn das Diagramm aufgerufen wird und wenn der zugeordnete Zustand mindestens 12,3 Sekunden lang aktiv ist.

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

Stateflow chart that uses the after operator in a state.

Tipps

  • Sie können Anführungszeichen für die Schlüsselwörter 'tick', 'sec', 'msec' und 'usec' verwenden. Zum Beispiel ist after(5,'tick') äquivalent zu after(5,tick).

  • Das Stateflow-Diagramm setzt den vom Operator after verwendeten Zähler immer dann zurück, wenn der zugeordnete Zustand erneut aktiviert wird.

  • Das Timing für temporale Logikoperatoren der Absolutzeit hängt vom Typ des Stateflow-Diagramms ab:

    • Diagramme in einem Simulink-Modell definieren die temporale Logik der Absolutzeit in Bezug auf die Simulationszeit.

    • Eigenständige Diagramme in MATLAB definieren die temporale Logik der Absolutzeit in Bezug auf die Istzeit, die auf eine Genauigkeit von 1 Millisekunde begrenzt ist.

    Die Differenz im Timing kann das Verhalten eines Diagramms beeinflussen. Angenommen, dieses Diagramm führt beispielsweise die Aktion vom Typ during des Zustands A aus.

    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 einem Simulink-Modell wird der Funktionsaufruf von f in einem einzigen Zeitschritt ausgeführt und hat keinen Einfluss auf die Simulationszeit. Der Übergang von Zustand A zu Zustand B erfolgt zum ersten Mal, wenn das Diagramm aufgerufen wird und Zustand A mindesten 2 Sekunden lang aktiv ist. Der von der Aktion vom Typ entry in Zustand B angezeigte Wert hängt ausschließlich von der vom Simulink-Solver verwendeten Schrittgröße ab.

    • In einem eigenständigen Diagramm kann der Funktionsaufruf von f mehrere Sekunden Istzeit dauern. Sollte der Aufruf länger als zwei Sekunden dauern, stellt das Diagramm das mit dem Operator after verbundene implizite Ereignis in die Warteschlange. Der Übergang von Zustand A zu Zustand B erfolgt, wenn die Funktion f fertig ausgeführt ist. Der von der Aktion vom Typ entry in Zustand B angezeigte Wert hängt von der Zeit ab, die der Funktionsaufruf von f benötigt.

Versionsverlauf

Eingeführt in R2014b