Modellieren endlicher Zustandsmaschinen
Stateflow® ist eine grafische Programmierumgebung, die auf endlichen Zustandsmaschinen basiert. Mit Stateflow können Sie Ihren Entwurf testen und debuggen, verschiedene Szenarien ausprobieren und Code aus Ihrer Zustandsmaschine generieren.
Endliche Zustandsmaschinen sind Darstellungen dynamischer Systeme, die von einem Betriebsmodus (Zustand) in einen anderen übergehen. Zustandsmaschinen:
Sind ein Ausgangspunkt auf hoher Abstraktionsebene für die Entwicklung komplexer Software.
Ermöglichen es Ihnen, sich auf die Betriebsmodi und Bedingungen zu konzentrieren, die erforderlich sind, um von einem Betriebsmodus zum nächsten überzugehen.
Unterstützen Sie beim Entwickeln von Modellen, die auch bei zunehmender Komplexität des Modells eindeutig und präzise bleiben.
Die Entwicklung von Regelungssystemen hängt in hohem Maße von Zustandsmaschinen ab, die komplexe Logik verwalten. Zu den Anwendungen zählen die Entwicklung von Luftfahrzeugen, Automobilen und Regelungssystemen für Roboter.
Beispiel eines Stateflow-Diagramms
In einem Stateflow-Diagramm kombinieren Sie Zustände, Übergänge und Daten, um eine endliche Zustandsmaschine zu implementieren. Dieses Stateflow-Diagramm stellt ein vereinfachtes Modell der Logik des Schaltvorgangs in einem Vier-Gang-Automatikgetriebe eines Fahrzeugs dar. Das Diagramm stellt jede Gangposition durch einen Zustand dar, der als Rechteck mit der Kennzeichnung first
, second
, third
oder fourth
angezeigt wird. Diese Zustände sind, genau wie die Gänge, die sie darstellen, exklusiv, sodass immer nur ein Zustand aktiv ist.
Der Pfeil auf der linken Seite des Diagramms stellt den Standardübergang dar und kennzeichnet den Zustand, der zuerst aktiv wird. Wenn Sie das Diagramm ausführen, wird dieser Zustand im Zeichenbereich hervorgehoben. Die anderen Pfeile kennzeichnen die möglichen Übergänge zwischen den Zuständen. Um die Dynamik der Zustandsmaschine zu definieren, ordnen Sie jeden Übergang einer Booleschen Bedingung oder einem Triggerereignis zu. In diesem Beispiel überwacht das Diagramm die Geschwindigkeit des Fahrzeugs und wechselt in einen anderen Gang, wenn die Geschwindigkeit einen festgelegten Schwellenwert über- oder unterschreitet. Während der Simulation ändert sich die Hervorhebung im Diagramm abhängig von den jeweils aktiven Zuständen.
Dieses Diagramm ist einfach aufgebaut und lässt wichtige Faktoren wie Motordrehzahl und -drehmoment außer Acht. Sie können ein umfangreicheres und realistischeres Modell entwerfen, indem Sie dieses Stateflow-Diagramm mit anderen Komponenten in MATLAB® oder Simulink® verknüpfen. Die folgenden Beispiele beschreiben drei mögliche Ansätze.
Ausführen des Diagramms als MATLAB-Objekt
Dieses Beispiel stellt die abgeänderte Version eines Automatikgetriebes dar, in die eine Zustandshierarchie, temporale Logik und Eingangsereignisse integriert wurden.
Hierarchie: Das Diagramm besteht aus einem übergeordneten Zustand,
gear_logic
, der das Diagramm mit dem Vier-Gang-Automatikgetriebe aus dem vorherigen Beispiel umgibt. Der übergeordnete Zustand regelt die Geschwindigkeit und Beschleunigung des Fahrzeugs. Während der Ausführung istgear_logic
immer aktiv.Temporale Logik: Im Zustand
gear_logic
bestimmt die Aktionon every(0.25,sec)
die Geschwindigkeit des Fahrzeugs. Der Operatorevery
erstellt einen MATLAB-Timer, der das Diagrammspeed
ausführt und die Diagrammdaten alle 0,25 Sekunden aktualisiert.Eingangsereignisse: Die Eingangsereignisse
SpeedUp
,Cruise
undSlowDown
setzen den Wert der Diagrammdatendelta
zurück. Diese Daten bestimmen, ob das Fahrzeug beschleunigt oder seine Geschwindigkeit während der einzelnen Ausführungsschritte beibehält.
Sie können dieses Diagramm als Objekt in MATLAB direkt über das Befehlsfenster oder mithilfe eines Skripts ausführen. Sie können auch eine MATLAB-App programmieren, die den Zustand des Diagramms über eine grafische Benutzeroberfläche regelt. Beispielsweise wird über diese Benutzeroberfläche ein Eingangsereignis an das Diagramm gesendet, wenn Sie auf eine Schaltfläche klicken. Im Diagramm regelt die MATLAB-Funktion widgets
die Werte der Messfunktionen und Leuchten in der Benutzeroberfläche. Zum Starten des Beispiels klicken Sie in der Werkzeugleiste des App Designer auf Run. Das Beispiel wird so lange ausgeführt, bis Sie das Fenster der Benutzeroberfläche schließen.
Alternativ klicken Sie im Stateflow-Editor auf der Registerkarte State Chart auf Run. Zum Regeln der Fahrzeuggeschwindigkeit verwenden Sie im Fensterbereich Symbols die Schaltflächen SpeedUp, SlowDown und Cruise. Zum Stoppen des Beispiels klicken Sie auf Stop.
Weitere Informationen zum Ausführen von Stateflow-Diagrammen als MATLAB-Objekte finden Sie unter Ausführung in MATLAB.
Simulieren eines Diagramms als Simulink-Block mit lokalen Ereignissen
Dieses Beispiel umfasst einen komplexeren Entwurf eines Automatikgetriebes. Das Stateflow-Diagramm wird als Block in einem Simulink-Modell angezeigt. Die anderen Blöcke im Modell stellen die zugehörigen Fahrzeugkomponenten dar. Das Diagramm weist Schnittstellen zu den anderen Blöcken auf, sodass Daten über Eingangs- und Ausgangsverbindungen gemeinsam genutzt werden können. Zum Öffnen des Diagramms klicken Sie auf den Pfeil unten links im Block shift_logic
.
Dieses Diagramm kombiniert Zustandshierarchie, Parallelismus, aktive Zustandsdaten, lokale Ereignisse und temporale Logik.
Hierarchie: Der Zustand
gear_state
umfasst eine abgeänderte Version des Diagramms mit dem Vier-Gang-Automatikgetriebe. Der Zustandselection_state
umfasst untergeordnete Zustände, die die Betriebsmodi für Dauerbetrieb, Hochschalten und Herunterschalten darstellen. Wenn die Umstände das Schalten in einen höheren oder niedrigeren Gang erfordern, werden diese Zustände aktiv.Parallelismus: Die parallelen Zustände
gear_state
undselection_state
werden als Rechtecke mit einem gestrichelten Umriss dargestellt. Diese Zustände werden auch dann simultan angewendet, wenn die untergeordneten Zustände innerhalb dieser Zustände ein- und ausgeschaltet werden.Daten aktiver Zustände: Der Ausgabewert
gear
spiegelt die Auswahl der Gänge während der Simulation wider. Das Diagramm generiert diesen Wert aus dem aktiven untergeordneten Zustand ingear_state
.Lokale Ereignisse: Anstelle Boolescher Bedingungen verwendet dieses Diagramm die lokalen Ereignisse
UP
undDOWN
, um die Übergänge zwischen den Gängen zu triggern. Diese Ereignisse haben ihren Ursprung in densend
-Befehlen inselection_state
, wenn die Geschwindigkeit des Fahrzeugs den Betriebsbereich für den ausgewählten Gang verlässt. Die Simulink-Funktioncalc_th
bestimmt die Grenzwerte für den Betriebsbereich basierend auf dem ausgewählten Gang und der Motordrehzahl.Temporale Logik: Damit die Schaltvorgänge nicht zu schnell aufeinanderfolgen, verwendet
selection_state
den temporalen Logikoperatorafter
, um die Übertragung der EreignisseUP
undDOWN
zu verzögern. Der Zustand überträgt eines dieser Ereignisse nur, wenn ein Gangwechsel länger als eine vorgegebene ZeitTWAIT
erforderlich ist.
Gehen Sie zum Ausführen einer Simulation des Modells wie folgt vor:
Doppelklicken Sie auf den Block User Inputs. Wählen Sie im Dialogfenster „Signal Editor“ aus der Liste Active Scenario ein vordefiniertes Brems-Drossel-Profil aus. Das Standardprofil ist
Passing Maneuver
.Klicken Sie auf Run. Im Stateflow-Editor werden die aktiven Zustände während der Simulation durch die Diagrammanimation hervorgehoben. Zum Verlangsamen der Animation wählen Sie auf der Registerkarte Debug aus der Dropdown-Liste Animation Speed die Option
Slow
aus.Überprüfen Sie in den „Scope“-Blöcken die Ergebnisse der Simulation. Jeder Bereich zeigt ein Kurvenbild seiner Eingangssignale während der Simulation an.
Simulieren eines Diagramms als Simulink-Block mit temporalen Bedingungen
Dieses Beispiel veranschaulicht eine weitere Alternative für die Modellierung des Getriebes in einem Fahrzeug. Das Stateflow-Diagramm wird als Block in einem Simulink-Modell angezeigt. Die anderen Blöcke im Modell stellen die zugehörigen Fahrzeugkomponenten dar. Das Diagramm weist Schnittstellen zu den anderen Blöcken auf, sodass Daten über Eingangs- und Ausgangsverbindungen gemeinsam genutzt werden können. Zum Öffnen des Diagramms klicken Sie auf den Pfeil unten links im Block Gear_logic
.
Dieses Diagramm kombiniert Zustandshierarchie, aktive Zustandsdaten und temporale Logik.
Hierarchie: Dieses Modell verlagert das Diagramm des Vier-Gang-Automatikgetriebes in den übergeordneten Zustand
gear
. Der übergeordnete Zustand überwacht Fahrzeuggeschwindigkeit und Motordrehzahl und triggert die Schaltvorgänge. Die oben links im Zustand „gear“ aufgeführten Aktionen bestimmen die Betriebsschwellenwerte für den ausgewählten Gang sowie die Werte der Booleschen Bedingungenup
unddown
. Die Kennzeichnungen,du
weist darauf hin, dass die Zustandsaktionen ausgeführt werden, wenn der Zustand zum ersten Mal aktiv wird (en
=entry
) und bei jedem nachfolgenden Zeitschritt, solange der Zustand aktiv ist (du
=during
).Daten aktiver Zustände: Der Ausgabewert
gear
spiegelt die Auswahl der Gänge während der Simulation wider. Das Diagramm generiert diesen Wert aus dem aktiven untergeordneten Zustand ingear
.Temporale Logik: Um eine schnelle Folge von Schaltvorgängen zu verhindern, verwenden die Booleschen Bedingungen
up
unddown
den temporalen Logikoperatorduration
, um den Übergang zwischen den Gängen zu steuern. Die Bedingungen sind erfüllt, wenn die Geschwindigkeit des Fahrzeugs länger als eine vorgegebene ZeitTWAIT
(gemessen in Sekunden) außerhalb des Betriebsbereichs für den ausgewählten Gang bleibt.
Gehen Sie zum Ausführen einer Simulation des Modells wie folgt vor:
Doppelklicken Sie auf den Block User Inputs. Wählen Sie im Dialogfenster „Signal Editor“ aus der Liste Active Scenario ein vordefiniertes Brems-Drossel-Profil aus. Das Standardprofil ist
Passing Maneuver
.Klicken Sie auf Run. Im Stateflow-Editor werden die aktiven Zustände während der Simulation durch die Diagrammanimation hervorgehoben. Zum Verlangsamen der Animation wählen Sie auf der Registerkarte Debug aus der Dropdown-Liste Animation Speed die Option
Slow
aus.Untersuchen Sie im Block „Scope“ die Ergebnisse der Simulation. Der Bereich zeigt ein Kurvenbild des während der Simulation ausgewählten Gangs an.
Nächste Schritte
Definieren des Verhaltens von Diagrammen mithilfe von Zustandsaktionen und Übergangskennzeichnungen
Modellieren synchroner Subsysteme mithilfe von paralleler Dekomposition
Synchronisieren paralleler Zustände durch Übertragung von Ereignissen
Überwachen der Diagrammaktivität mithilfe der Daten aktiver Zustände