Hauptinhalt

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 und gerichteter lokaler Ereignisse, die eine Early-Return-Logik erzeugen. Diese Ereignisse können zu unerwünschtem rekursiven Verhalten in Ihrem Diagramm führen. Wenn Ihr Diagramm solche Ereignisse enthält, gibt es eine Warnung aus, wenn Sie das Modell simulieren. Mehr über das Entfernen von Ereignissen, die eine Rekursion verursachen, erfahren Sie unter Resolve Unintended Recursive Behavior.

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 und gerichteter lokaler Ereignisse, die eine Early-Return-Logik erzeugen. Diese Ereignisse können zu unerwünschtem rekursiven Verhalten in Ihrem Diagramm führen. Wenn Ihr Diagramm solche Ereignisse enthält, gibt es eine Warnung aus, wenn Sie das Modell simulieren. Mehr über das Entfernen von Ereignissen, die eine Rekursion verursachen, erfahren Sie unter Resolve Unintended Recursive Behavior.

Siehe auch

Themen