Hauptinhalt

Modellieren einer endlichen Zustandsmaschine

Eine endliche Zustandsmaschine ist eine Darstellung ereignisbasierter, reaktiver Systeme, die zwischen Betriebsmodi wechselt, wenn bestimmte Bedingungen erfüllt sind. Sie können beispielsweise das Getriebe eines Fahrzeugs modellieren, das beim Beschleunigen zwischen Gängen umschaltet. Da endliche Zustandsmaschinen Systeme mit mehreren Zuständen und Übertragungen darstellen können, werden sie oft in Feldern wie Softwareentwicklung, Robotik und Telekommunikation eingesetzt. Mithilfe der Zustände, Übergänge und Daten von Stateflow® können Sie eine endliche Zustandsmaschine modellieren.

In diesem einfachen Stateflow-Diagramm wechselt das Getriebe eines Fahrzeugs zwischen zwei Gangzuständen.

Chart animation showing a finite state machine.

In der Softwareentwicklung können Sie mit endlichen Zustandsmaschinen Benutzerschnittstellen, Protokolldesign und Workflow-Automatisierung verwalten. In der Robotik steuern endliche Zustandsmaschinen das Verhalten von Robotern und ermöglichen einen nahtlosen Übergang zwischen Aufgaben wie Navigation, Hindernisvermeidung und Objektmanipulation. In der Telekommunikation können Kommunikationsprotokolle und Netzwerkvorgänge modelliert werden. Mit Stateflow können Sie die Leistung endlicher Zustandsmaschinen in verschiedenen Domänen entwickeln, simulieren sowie Fehlersuchen daran durchführen.

Typen von Stateflow-Blöcken

Um die Beziehung zwischen den Eingängen, Ausgängen und Betriebsmodi einer endlichen Zustandsmaschine darzustellen, können Sie diese Stateflow-Blöcke verwenden, um Zustandsübergangsdiagramme, Zustandsübergangstabellen und Wahrheitstabellen zu erstellen.

Stateflow-Block

Anwendungsfall

Chart

Grafische Darstellung einer endlichen Zustandsmaschine. In einem Stateflow-Diagramm verwenden Sie Zustände und Übergänge, um ein sequenzielles Logiksystem zu erstellen. Zustände entsprechen den Betriebsmodi und Übergänge repräsentieren die Wechsel zwischen den Zuständen. Weitere Informationen finden Sie unter Darstellen von Betriebsmodi durch Verwendung von Zuständen und Übergang zwischen Betriebsmodi.

State Transition Table

Tabellendarstellung einer endlichen Zustandsmaschine für sequenzielle modale Logik. Verwenden Sie einen State Transition Table-Block, um eine Zustandsmaschine in einem kompakten Format zu modellieren, dass nur eine minimale Nutzung grafischer Objekte erfordert. Weitere Informationen finden Sie unter Model Finite State Machines Using State Transition Tables.

Truth Table

Tabellendarstellung einer kombinatorischen Logik. Sie können mit Truth Table-Blöcken die Entscheidungsfindung für die Fehlerdetektion, das Fehlermanagement und die Modusumschaltung modellieren. Weitere Informationen finden Sie unter Use Truth Tables to Model Combinatorial Logic.

Implementieren von Stateflow-Blöcken

Um ein Stateflow-Diagramm zu erstellen, das eine endliche Zustandsmaschine modelliert, befolgen Sie diese Schritte:

  1. Erstellen Sie ein Simulink®-Modell mit einem leeren Stateflow-Diagramm, indem Sie die Funktion sfnew verwenden. Zum Öffnen des Stateflow-Editors doppelklicken Sie auf den Diagrammblock.

  2. Zeichnen Sie für jeden Betriebsmodus in Ihrem System einen Zustand und implementieren Sie die Aktionen, indem Sie Zustandskennzeichnungen hinzufügen.

  3. Zeichnen Sie Übergänge, um die Richtung der Flusslogik zwischen Zuständen darzustellen und fügen Sie Übergangskennzeichnungen hinzu, um die Übergangsbedingungen zu implementieren. Verwenden Sie einen Standard-Übergang, um den ersten aktiven Zustand zu kennzeichnen.

  4. Wenn Ihr System Eingänge oder Ausgänge aufweist oder von Zustandsvariablen abhängt, können Sie Eingangs- und Ausgangsdaten sowie lokale Daten hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Stateflow-Daten.

  5. Wenn Ihr System auf Ereignis-Auslöser reagiert oder Aktionen in Ihrem Diagramm oder anderen Blöcken im Modell auslösen muss, fügen Sie Eingangs- und Ausgangsereignisse oder lokale Ereignisse hinzu. Weitere Informationen finden Sie unter Use Events to Execute Charts.

  6. Wenn Ihr Diagramm komplexe Zustandsaktionen oder Übergangsbedingungen aufweist, können Sie wiederverwendbare Funktionen hinzufügen. Sie können aus grafischen Funktionen, MATLAB-Funktionen, Simulink-Funktionen und Wahrheitstabellen wählen. Alternativ können Sie Ihren eigenen C oder C++ Code zur Integration in Ihr Diagramm schreiben. Weitere Informationen finden Sie unter Reuse MATLAB Code by Defining MATLAB Functions und Call Simulink Functions in States and Transitions.

  7. Verwenden Sie die Eingangs- und Ausgangsports, um das Diagramm mit anderen Blöcken im Simulink-Modell zu verbinden.

  8. Klicken Sie auf Run , um das Modell zu simulieren. Im Stateflow-Editor wird das Diagramm während der Simulation animiert, indem die aktiven Zustände und Übergänge hervorgehoben werden.

Stateflow-Diagramme und State Transition Table-Blöcke können entweder MATLAB® oder C als Aktionssprache verwenden. Truth Table-Blöcke verwenden nur MATLAB als Aktionssprache. Weitere Informationen finden Sie unter Unterschiede zwischen MATLAB und C als Aktionssprache-Syntax.

Ein Tutorial, das die Erstellung eines Stateflow-Diagramms demonstriert, finden Sie unter Erstellen von Stateflow-Diagrammen.

Referenzen

[1] Harel, David. "Statecharts: A Visual Formalism for Complex Systems." Science of Computer Programming 8, no.3 (June 1987): 231-74.

[2] Hatley, Derek J. and Imtiaz A. Pirbhai. Strategies for Real-Time System Specification. New York, NY: Dorset House Publishing, 1988.

Siehe auch

Funktionen

Blöcke

Themen