Stateflow

Hauptmerkmale

  • Modellierungsumgebung, grafische Komponenten und Simulations-Engine für das Modellieren und Simulieren komplexer Logiken
  • Deterministische Ausführungssemantik mit Hierarchie, Parallelismus, zeitbezogenen Operatoren und Ereignissen
  • Zustandsdiagramme, Zustandsübergangstabellen und Zustandsübergangsmatrizen zur Darstellung von endlichen Zustandsautomaten
  • Flussdiagramme, MATLAB-Funktionen und Wahrheitstabellen zur Darstellung von Algorithmen
  • Animation von Zustandsdiagrammen, Protokollierung der Zustandsaktivität, Datenprotokollierung und integriertes Debuggen für die Analyse des Entwurfs und zur Erkennung von Laufzeitfehlern.
  • Sowohl statische Überprüfungen als auch Laufzeitprüfungen für zyklische Probleme, Zustands-Inkosistenzen, Datenbereichsverletzungen und Überlaufbedingungen
  • Endliche Mealy- und Moore-Zustandsautomaten

Erste Schritte mit Stateflow
So können Sie einen Zustandsautomaten erstellen und simulieren.

Entwickeln von Logiken

Stateflow umfasst grafische und tabellarische Schnittstellen zur Modellierung von Systemlogiken mithilfe von Zustandsautomaten. Für einen Zustandsautomaten modellieren Sie die Betriebsmodi des Systems als Zustände und stellen die Logik für das Umschalten zwischen den Modi mithilfe von Transitionen und Knotenpunkten dar. Sie können die verschiedenen Komponenten in Ihrem System als Zustände modellieren, die exklusiv oder parallel ausgeführt werden. Mit Stateflow können Sie die Komplexität Ihres Entwurfs verwalten, indem Sie die Objekte, Funktionen und Komponenten im Zustandsdiagramm hierarchisch anordnen.

In Stateflow können Sie kombinatorische Logik grafisch mit Flussdiagrammen sowie in tabellarischer Form mit Wahrheitstabellen darstellen.

Beim Entwickeln einer Logik müssen die zu überprüfenden Zustände und die im Anschluss auszuführenden Aktionen angegeben werden. In Stateflow können Sie die Zustände und Aktionen in C oder MATLAB® definieren. Sie können die Daten, die in den Zuständen und Aktionen verwendet werden, im Simulink® Model Explorer verwalten. Bevor Sie Ihren Entwurf ausführen, benachrichtigt Sie Stateflow über mögliche Zustandsinkonsistenzen, nicht verwendete Daten und Ereignisse sowie über ungültige Transitionen.

Stateflow diagram defining the logic for a boiler temperature control system.
Stateflow-Diagramm mit der Definition einer Logik für die Temperaturregelung eines Heizkessels. Im Diagramm kommen grafische Funktionen (rechts) zur Anwendung, um Algorithmen für die Energieversorgung zu implementieren, die das Heizsystem aufruft (links).

Grafisches Entwickeln einer Logik

Stateflow enthält einen Editor und grafische Objekte, mit denen Sie Zustandsautomaten und Flussdiagramme zeichnen können. Sie können einen Zustandsautomaten erstellen, indem Sie die Zustände, Transitionen und Knotenpunkte aus einer grafischen Palette auswählen und diese in den Stateflow Editor ziehen. Sie können Funktionen auch mithilfe einer Flussdiagrammnotation, Simulink-Subsystemen, MATLAB und Wahrheitstabellen erstellen. Sie können Ihr Diagramm als Hybridversion aus Mealy- und Moore-Automaten mit erweiterter Funktionalität, als Mealy-Automat oder als Moore-Automat festlegen.

Sie können Flussdiagramme erstellen, indem Sie Transitionen zeichnen, die an Knotenpunkten miteinander verbunden sind und in Abhängigkeit der Bedingungslogik ausgeführt werden. Mithilfe des „Pattern Wizard“ können Sie häufig verwendete Logikverläufe erstellen. Flussdiagramme können in grafische Funktionen positioniert werden, die an vielen Stellen im Zustandsdiagramm und in anderen Zustandsdiagrammen desselben Modells zur Anwendung kommen. Sie können Flussdiagramme verwenden, um die Logik für die Transitionen zwischen einzelnen Zuständen zu entwickeln.

Stateflow diagram that uses a graphical function generated by the pattern wizard.
Stateflow-Diagramm (links) mit grafischer Funktion (rechts), generiert vom „Pattern Wizard“ (Mitte).

Der Stateflow Editor bietet Überprüfung während der Bearbeitung und erkennt so unzulässige Objektpositionierungen und ungültige Transitionen.

Stateflow Editor with a model of a cooling system.
Stateflow Editor mit einem Modell eines Kühlsystems. Zustände mit überlappenden Grenzen sind rot hervorgehoben.

Entwickeln von Logiken anhand von Tabellen

Die Zustandsübergangstabellen in Stateflow bilden eine strukturierte Umgebung für das Modellieren von Zustandsautomaten. Sie erstellen einen Zustandsautomaten, indem Sie Zeilen für Zustände und Spalten für die Transitionen zwischen den Zuständen hinzufügen. Zustandübergangstabellen unterstützen Sie bei der Erstellung von Zustandsautomaten durch Drop-Down-Menüs für Zustandsnamen, automatische Vervollständigung der Syntax für endliche Zustandsautomaten und andere Überprüfungen während der Bearbeitungsphase. Bevor Sie Ihr Modell ausführen, können Sie einen statischen Diagnosetest starten, um Syntaxfehler, unvollständige Transitionen und nicht erreichbare Zustände zu erkennen.

Die Matrixansicht für die Zustandsübergänge, die anhand der Zustandübergangstabellen generiert wurde, gibt Ihnen einen schnellen Überblick über die Bedingungen und möglichen Zielzustände eines bestimmten Zustands.

Mithilfe von Wahrheitstabellen können Sie in Stateflow Logiken modellieren, in denen Zustände über mehrere Laufzeiten hinweg nicht überwacht werden müssen. Sie können eine Wahrheitstabelle erstellen, indem Sie die zu überprüfenden Bedingungen und die Kombinationen der Ergebnisse dieser Bedingungen eingeben. Anschließend können Sie die Aktionen für die verschiedenen Kombinationen von Ergebnissen eingeben. Nachdem Sie die Wahrheitstabelle erstellt haben, können Sie statische Diagnoseprüfungen ausführen, um Bedingungen zu erkennen, die zu stark bzw. zu wenig eingegrenzt sind.

Truth table implementing the logic for selecting a valid sensor reading in a fault-detection algorithm, and an automatically generated graphical representation of the truth table.
Links: Wahrheitstabelle mit Logik für die Auswahl eines gültigen Sensorwerts in einem Fehlererkennungsalgorithmus. Rechts: Automatisch generierte grafische Darstellung einer Wahrheitstabelle.

Integrierte Komponenten und Planungsalgorithmen

Nachdem Sie in Stateflow Komponenten erstellt haben, können Sie diese in andere Komponenten integrieren, um den Algorithmus für Ihren Zustandsautomaten zu erstellen. Stateflow-Komponenten können MATLAB- und Simulink-Funktionen, benutzerdefinierten C-Code, grafische Funktionen und Wahrheitstabellen enthalten. Sie können für Ihren Algorithmus den Zeitpunkt für die Ausführung der Komponenten und Funktionen festlegen, indem Sie die zeit- und bedingungsbasierte Logik verwenden.

Alle Stateflow-Komponenten können unabhängig voneinander entwickelt, ausgeführt und geprüft werden, wodurch mehrere Benutzer zeitgleich an verschiedenen Bereichen des Algorithmus arbeiten können.

Simulink model  incorporating a Stateflow diagram that uses graphical functions, MATLAB functions, and truth tables.
Simulink-Modell (links) mit Stateflow-Diagramm (rechts). Das Stateflow-Diagramm modelliert die Logik für einen Aufzug und berücksichtigt dabei grafische Funktionen, MATLAB-Funktionen und Wahrheitstabellen.

Integrieren von Komponenten in Ihren Entwurf

Sie können eine Komponente in mehreren Diagrammen und Modellen verwenden, indem Sie mit der rechten Maustaste auf die Komponente klicken, wodurch diese in ein atomares Subdiagramm umgewandelt und in eine Bibliothek übertragen wird. Um die Komponente zu verwenden, ziehen Sie diese aus der Bibliothek in Ihr Diagramm oder Modell. Wenn Sie eine Komponente in der Bibliothek aktualisieren, werden alle Instanzen der Komponente automatisch aktualisiert. Sie können Komponenten und Funktionen hierarchisch organisieren, um Ihr System präzise und aussagekräftig darzustellen.

Mehrfaches Wiederverwenden von Zuständen in einem Diagramm
Erstellen und Wiederverwenden von Komponenten in Stateflow für umfangreiche Modellierungen.

Planungsalgorithmen

Sie können bedingungs- und zeitbasierte Logiken in Stateflow modellieren, um Simulink- und MATLAB-Funktionen aufzurufen. Ereignisse, die auf einer in Stateflow modellierten Logik basieren, können in Simulink ausgegeben werden, um Subsysteme zu aktivieren, die auf einen Funktionsaufruf oder auf Änderungen des Steuersignals reagieren.

Stateflow enthält ereignis- und zeitbasierte Operatoren (vor, nach, an/um und wiederkehrend), mit denen Sie eine Logik für die Zustandstransition festlegen können, je nach Anzahl der Ereignisse und der Zeit, während der Zeitschaltungen und Zähler nicht zum Einsatz gekommen sind.

Modellierung eines Startabbruchssystems
Erstellen Sie ein Modell eines Startabbruchssystems, das ein Flugzeug zurück zur Erde sendet, wenn während des Starts eine Anomalie oder ein Fehler auftritt.

Simulieren eines Modells und Analysieren der Ergebnisse

Sie können das Verhalten Ihres Systems analysieren, indem Sie Ihr Modell simulieren. Sie können Was-wäre-wenn-Szenarien ausführen, indem Sie die Simulation von einem beliebigen zuvor gespeicherten Zustand aus neu starten und deren Reaktion auf verschiedenen Einstellungen und Konfigurationen analysieren.

Simulieren eines Modells

In Stateflow können Sie das Systemverhalten während der Simulation visualisieren, indem Sie die Zustandsdiagramm-Animation verwenden, um die aktiven Zustände und Transitionen Ihres Modells hervorzuheben.

Mithilfe der Debugging-Funktionen in Stateflow können Sie die Simulation Schritt für Schritt im Detail überprüfen. Sie können Haltepunkte setzen, Datenwerte überwachen und verschiedene Funktionen in Ihren Zustandsdiagrammen Schritt für Schritt überprüfen. Im Debugger-Fenster von Stateflow können Sie die Ausführung der Simulation steuern und den Abarbeitungspuffer und Ausführungsstatus des Diagramms anzeigen.

Der Stateflow-Debugger erkennt Laufzeitfehler, Zustandsinkonsistenzen, Datenbereichsverletzungen und potenzielle Endlosschleifen.

Ergebnisanalyse

Während der Simulation können Sie die Simulationsergebnisse wie folgt visualisieren:

  • durch Anzeigen der Zustände und Daten mithilfe von Simulink-Anzeigen und -Scopes,
  • durch Anzeigen protokollierter Daten im Simulation Data Inspector,
  • durch Erstellen von benutzerdefinierten Anzeigen mithilfe von MATLAB.

Alternativ dazu können Sie die Diagrammdaten und Zustandsaktivitätsdaten für die Weiterverarbeitung in MATLAB protokollieren.

Simulation data visualization options in Stateflow: Simulink Data Inspector for comparing signals, a custom MATLAB interface for analyzing data, and the Simulink Signal Selector for comparing states.
Optionen für die Visualisierung von Simulationsdaten in Stateflow. Oben links: Simulink Data Inspector für das Vergleichen verschiedener spezifischer Signale; unten links: benutzerdefinierte MATLAB-Schnittstelle für die Datenanalyse; rechts: Simulink Signal Selector für das Vergleichen spezifischer Zustände.

Validieren des Entwurfs und Generieren des Codes

Wenn Sie Stateflow in Kombination mit anderen Simulink-Produkten verwenden, können Sie Ihren Entwurf mit den Vorgaben abgleichen und den Code für die Implementierung auf Ihrem Embedded System generieren.

Mit Simulink Verification and Validation können Sie Anforderungen direkt mit Stateflow-Objekten verknüpfen, die Einhaltung von Normen überprüfen und Metriken für die Modellabdeckung zusammenstellen.

Mithilfe von Simulink Design Verifier können Sie Entwurfsfehler erkennen und mithilfe von formalen Methoden Testvektoren für schwer zu erkennende Fehler generieren.

Mit Add-On-Produkten für die Codegenerierung können Sie Code in C und C++, HDL oder PLC direkt aus Ihrem Zustandsdiagramm heraus generieren.

Designing Supervisory Control for Safety-Critical Systems

Webinar anzeigen