Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Ausführen von Steuerungsdiagrammen mithilfe von Bedingungsaktionen

Verhalten von Bedingungsaktionen

Dieses Beispiel zeigt das Verhalten einer einfachen Bedingungsaktion in einem Übergangspfad mit mehreren Segmenten.

Stateflow chart with states called A, B, and C.

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:

  1. Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von E_one gibt. Ein gültiges Übergangssegment von Zustand A zu einem Verbindungsknoten wurde erkannt. Die Bedingungsaktion A_one wird auf dem gültigen Übergangssegment erkannt und sofort ausgeführt und abgeschlossen. Der Zustand A ist immer noch aktiv.

  2. Da die Bedingungen auf den Übergangssegmenten zu möglichen Zielen falsch sind, ist keiner der vollständigen Übergänge gültig.

  3. Der Zustand A während der Aktionen (durA()) wird ausgeführt und abgeschlossen.

    Der Zustand A bleibt aktiv.

  4. 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.

Stateflow chart with states called A and B.

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:

  1. Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von E_one gibt. Ein gültiger Übergang von Zustand A zu Zustand B wird erkannt. Die Bedingung C_one ist wahr. Die Bedingungsaktion A_one wird beim gültigen Übergang erkannt und sofort ausgeführt und abgeschlossen. Der Zustand A ist immer noch aktiv.

  2. Die Exit-Aktionen (ExitA()) des Zustands A werden ausgeführt und abgeschlossen.

  3. Der Zustand A wird als inaktiv markiert.

  4. Die Übergangsaktion A_two wird ausgeführt und abgeschlossen.

  5. Der Zustand B wird als aktiv markiert.

  6. Die Eingabeaktionen (entB()) des Zustands B werden ausgeführt und abgeschlossen.

  7. 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.

Stateflow chart with states called A and B.

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.

Stateflow chart with a top-level state called A. A has two parallel substates called A1 and A2. A1 has substates A1a and A1B. A2 has substates A2a and A2b.

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.

Stateflow chart with states called On and Off.

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:

  1. Die Diagrammwurzel prüft, ob es einen gültigen Übergang als Ergebnis von E_one gibt.

    Ein gültiger Übergang von Zustand On zu Zustand Off wird erkannt.

  2. Die Bedingungsaktion bei der Übertragung des ÜbergangsereignissesE_one.

  3. Das Ereignis E_one wird bei dem gültigen Übergang erkannt, der sofort ausgeführt wird. Der Zustand On ist immer noch aktiv.

  4. Die Übertragung von Ereignis E_one aktiviert das Diagramm ein zweites Mal.

  5. 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).

Siehe auch

Themen