Ausführen von Steuerungsdiagrammen mithilfe von Bedingungsaktionen
Verhalten von Bedingungsaktionen
Dieses Beispiel zeigt das Verhalten einer einfachen Bedingungsaktion in einem Übergangspfad mit mehreren Segmenten.

Anfänglich ist das Diagramm im Ruhezustand. Der Zustand A ist aktiv. Die Bedingungen C_one und C_two sind falsch. Das Ereignis E_one tritt ein und aktiviert das Diagramm, das das Ereignis von der Wurzel bis hinunter durch die Hierarchie verarbeitet:
Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von
E_onegibt. Ein gültiges Übergangssegment von ZustandAzu einem Verbindungsknoten wurde erkannt. Die BedingungsaktionA_onewird auf dem gültigen Übergangssegment erkannt und sofort ausgeführt und abgeschlossen. Der ZustandAist immer noch aktiv.Da die Bedingungen auf den Übergangssegmenten zu möglichen Zielen falsch sind, ist keiner der vollständigen Übergänge gültig.
Der Zustand
Awährend der Aktionen (durA()) wird ausgeführt und abgeschlossen.Der Zustand
Ableibt aktiv.Das Diagramm kehrt in den Ruhezustand zurück.
Diese Sequenz schließt die Ausführung dieses Stateflow®-Diagramms ab, das mit dem Ereignis E_one verknüpft ist, wenn der Zustand A anfänglich aktiv ist.
Verhalten von Bedingungen und Übergangsaktionen
Dieses Beispiel zeigt das Verhalten einer einfachen Bedingungs- und Übergangsaktion, die für einen Übergang von einem exklusiven (ODER-)Zustand zu einem anderen angegeben ist.

Anfänglich ist das Diagramm im Ruhezustand. Der Zustand A ist aktiv. Die Bedingung C_one ist wahr. Das Ereignis E_one tritt ein und aktiviert das Diagramm, das das Ereignis von der Wurzel bis hinunter durch die Hierarchie verarbeitet:
Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von
E_onegibt. Ein gültiger Übergang von ZustandAzu ZustandBwird erkannt. Die BedingungC_oneist wahr. Die BedingungsaktionA_onewird beim gültigen Übergang erkannt und sofort ausgeführt und abgeschlossen. Der ZustandAist immer noch aktiv.Die Exit-Aktionen (
ExitA()) des ZustandsAwerden ausgeführt und abgeschlossen.Der Zustand
Awird als inaktiv markiert.Die Übergangsaktion
A_twowird ausgeführt und abgeschlossen.Der Zustand
Bwird als aktiv markiert.Die Eingabeaktionen (
entB()) des ZustandsBwerden ausgeführt und abgeschlossen.Das Diagramm kehrt in den Ruhezustand zurück.
Diese Sequenz schließt die Ausführung dieses Stateflow-Diagramms ab, das mit dem Ereignis E_one verknüpft ist, wenn der Zustand A anfänglich aktiv ist.
Erstellen von Bedingungsaktionen mit einem For-Loop
Mit Bedingungsaktionen und Bindungsstellen wird ein Konstrukt mit for-Loop entworfen. Dieses Beispiel zeigt die Verwendung einer Bedingungsaktion und einer Bindungsstelle zur Erstellung eines Konstrukts mit for-Loop.

Zum Verhalten dieses Beispiels siehe For-Loop Construct.
Übertragen von Ereignissen in parallele (UND) Zustände mithilfe von Bedingungsaktionen
Dieses Beispiel zeigt, wie Sie mit Bedingungsaktionen Ereignisse sofort an parallele (UND) Zustände senden können.

Zum Verhalten dieses Beispiels siehe Broadcast Events in Condition Actions.
Tipp
Vermeiden Sie die Verwendung ungerichteter lokaler Ereignisübertragungen. Ungerichtete lokale Ereignisübertragungen können zu unerwünschtem rekursiven Verhalten in Ihrem Diagramm führen. Senden Sie lokale Ereignisse stattdessen mit Hilfe von gerichteten Übertragungen. Weitere Informationen finden Sie unter Broadcast Local Events to Synchronize Parallel States.
Während der Simulation können Stateflow-Diagramme ungerichtete lokale Ereignisübertragungen erkennen. Um den Umfang der Diagnoseaktion zu steuern, öffnen Sie das Dialogfeld „Configuration Parameters“ und stellen Sie im Bereich Diagnostics > Stateflow den Parameter Undirected event broadcasts auf none, warning oder error ein. Die Standardeinstellung ist warning. Weitere Informationen finden Sie unter Undirected event broadcasts (Simulink).
Vermeiden von zyklischem Verhalten
Dieses Beispiel zeigt eine Notation, die bei der Verwendung von Ereignisübertragungen als Bedingungsaktionen vermieden werden sollte, da die Semantik zu einem zyklischen Verhalten führt.

Anfänglich ist das Diagramm im Ruhezustand. Der Zustand On ist aktiv. Das Ereignis E_one tritt ein und aktiviert das Diagramm, das das Ereignis von der Wurzel bis hinunter durch die Hierarchie verarbeitet:
Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von
E_onegibt.Ein gültiger Übergang von Zustand
Onzu ZustandOffwird erkannt.Die Bedingungsaktion bei der Übertragung des Übergangsereignisses
E_one.Das Ereignis
E_onewird bei dem gültigen Übergang erkannt, der sofort ausgeführt wird. Der ZustandOnist immer noch aktiv.Die Übertragung von Ereignis
E_oneaktiviert das Diagramm ein zweites Mal.Gehen Sie zu Schritt 1.
Die Schritte 1 bis 5 werden weiterhin zyklisch ausgeführt. Die Übergangsmarkierung, die einen Auslöser für dasselbe Ereignis wie das Ereignis der Bedingungsaktion anzeigt, führt zu einem nicht behebbaren zyklischen Verhalten. Diese Sequenz wird nie abgeschlossen, wenn Ereignis E_one gesendet wird und Status On aktiv ist.
Tipp
Vermeiden Sie die Verwendung ungerichteter lokaler Ereignisübertragungen. Ungerichtete lokale Ereignisübertragungen können zu unerwünschtem rekursiven Verhalten in Ihrem Diagramm führen. Senden Sie lokale Ereignisse stattdessen mit Hilfe von gerichteten Übertragungen. Weitere Informationen finden Sie unter Broadcast Local Events to Synchronize Parallel States.
Während der Simulation können Stateflow-Diagramme ungerichtete lokale Ereignisübertragungen erkennen. Um den Umfang der Diagnoseaktion zu steuern, öffnen Sie das Dialogfeld „Configuration Parameters“ und stellen Sie im Bereich Diagnostics > Stateflow den Parameter Undirected event broadcasts auf none, warning oder error ein. Die Standardeinstellung ist warning. Weitere Informationen finden Sie unter Undirected event broadcasts (Simulink).