Main Content

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

Erstellen und Ausführen eines Stateflow-Diagramms

Ein Stateflow®-Diagramm ist die grafische Darstellung einer endlichen Zustandsmaschine, die aus Zuständen, Übergängen und Daten besteht. Sie können ein Stateflow-Diagramm erstellen, um zu definieren, wie ein MATLAB®-Algorithmus oder ein Simulink®-Modell auf externe Eingangssignale, Ereignisse und zeitabhängige Bedingungen reagiert.

Beispielsweise stellt dieses Stateflow-Diagramm die Logik dar, die einem Halbwellengleichrichter zugrunde liegt. Das Diagramm enthält zwei Zustände, die als On und Off gekennzeichnet sind. Im Zustand On ist das Diagrammausgangssignal y gleich dem Eingang x. Im Zustand Off ist das Ausgangssignal auf null gesetzt. Wenn das Eingangssignal einen Schwellenwert t0 über- oder unterschreitet, wechselt das Diagramm zwischen diesen Zuständen. Die Aktionen in jedem Zustand aktualisieren den Wert von y bei jedem Zeitschritt der Simulation.

Stateflow chart with two states.

Dieses Beispiel veranschaulicht, wie dieses Stateflow-Diagramm für die Simulation in Simulink und die Ausführung in MATLAB erstellt wird.

Erstellen des Stateflow-Diagramms

Öffnen des Stateflow-Editors

Der Stateflow-Editor bietet eine grafische Umgebung zum Entwerfen von Zustandsübergangsdiagrammen, Flussdiagrammen, Zustandsübergangstabellen und Wahrheitstabellen. Entscheiden Sie vor dem Öffnen des Stateflow-Editors, welcher Diagrammausführungsmodus Ihren Anforderungen am ehesten entspricht.

  • Zum Modellieren bedingter, ereignisabhängiger und zeitabhängiger Logik für periodische und zeitkontinuierliche Simulink-Algorithmen verwenden Sie die Funktion sfnew, um ein Stateflow-Diagramm zu erstellen, das Sie als Block in einem Simulink-Modell simulieren können. Geben Sie an der MATLAB-Eingabeaufforderung Folgendes ein:

    sfnew rectify     % create chart for simulation in a Simulink model

    Simulink erstellt ein Modell mit dem Namen rectify, das einen leeren Stateflow-Block mit der Bezeichnung Chart enthält. Zum Öffnen des Stateflow-Editors doppelklicken Sie auf den Diagrammblock.

  • Zum Entwerfen wiederverwendbarer Zustandsmaschinen- und Timing-Logik für MATLAB-Anwendungen verwenden Sie die Funktion edit, um ein eigenständiges Stateflow-Diagramm zu erstellen, das Sie als MATLAB-Objekt ausführen können. Geben Sie an der MATLAB-Eingabeaufforderung Folgendes ein:

    edit rectify.sfx  % create chart for execution as a MATLAB object

    Wenn die Datei rectify.sfx nicht vorhanden ist, erstellt der Stateflow-Editor ein leeres Diagramm mit dem Namen rectify.

Die Hauptkomponenten des Stateflow-Editors sind der Diagrammzeichenbereich, die Objektpalette und der Fensterbereich Symbols.

  • Der Diagrammzeichenbereich (Canvas) ist eine Zeichenfläche, in der Sie ein Diagramm durch Kombination von Zuständen, Übergängen und anderen grafischen Elementen erstellen können.

  • Links von der Zeichenfläche werden in der Objektpalette verschiedene Tools angezeigt, mit denen Sie Ihrem Diagramm grafische Elemente hinzufügen können.

  • Auf der rechten Seite des Zeichenbereichs fügen Sie im Fensterbereich Symbols neue Daten, Ereignisse und Nachrichten in das Diagramm ein und lösen nicht definierte oder nicht verwendete Symbole auf.

Default view of the Stateflow Editor.

Tipp

Wenn Sie Ihr Stateflow-Diagramm erstellt haben, können Sie seine Inhalte in ein anderes Diagramm mit einem anderen Ausführungsmodus kopieren. Beispielsweise können Sie ein Diagramm für die Ausführung in MATLAB erstellen und seine Inhalte in ein Diagramm für die Simulation in Simulink kopieren.

Hinzufügen von Zuständen und Übergängen

  1. Klicken Sie in der Objektpalette auf das Symbol State und bewegen Sie den Mauszeiger in die Zeichenfläche. Es wird ein Zustand mit seinem Standardübergang angezeigt. Zum Platzieren des Zustands klicken Sie auf eine Position im Zeichenbereich. Geben Sie an der Texteingabeaufforderung den Zustandsnamen On und die Zustandsaktion y = x ein.

    Chart with one state, On.

  2. Fügen Sie einen weiteren Zustand hinzu. Klicken Sie mit der rechten Maustaste und verschieben Sie den Zustand On. Blaue grafische Marker helfen Ihnen, Ihre Zustände horizontal oder vertikal auszurichten. Der Name des neuen Zustands wird in Off geändert. Doppelklicken Sie auf den Zustand und ändern Sie die Zustandsaktion in y = 0.

    Chart with two states, On and Off.

  3. Ordnen Sie die beiden Zustände neu an und zeigen Sie mit der Maus auf den Bereich zwischen den beiden Zuständen. Blaue Übergangsmarker geben verschiedene Möglichkeiten zum Verbinden der Zustände an. Zum Hinzufügen von Übergängen klicken Sie auf den entsprechenden Marker.

    Alternativ können Sie zum Zeichnen eines Übergangs auf die Kante eines Zustands klicken und den Übergang zur Kante des anderen Zustands ziehen.

    Chart with the two states joined by transitions.

  4. Doppelklicken Sie auf jeden Übergang und geben Sie die entsprechende Übergangsbedingung ein: x<t0 oder x>=t0. Die Bedingungen werden in eckigen Klammern angezeigt.

    Chart with transition conditions.

  5. Bereinigen Sie das Diagramm:

    • Verschieben Sie zur Verbesserung der Übersichtlichkeit die einzelnen Übergangskennzeichnungen an eine geeignete Position über oder unter dem entsprechenden Übergang.

    • Zum Ausrichten und Ändern der Größe der grafischen Elemente Ihres Diagramms klicken Sie auf der Registerkarte Format auf Auto Arrange oder verwenden Sie die Tastenkombination Strg+Umschalttaste+A.

    • Um die Größe des Diagramms an den Zeichenbereich anzupassen, drücken Sie die Leertaste oder klicken Sie auf das Symbol Fit To View .

Auflösen nicht definierter Symbole

Bevor Sie Ihr Diagramm ausführen können, müssen Sie jedes im Diagramm verwendete Symbol definieren und seinen Bereich angeben (z. B. Eingangsdaten, Ausgangsdaten oder lokale Daten). Im Fensterbereich Symbols sind nicht definierte Symbole mit einem roten Fehler-Badge gekennzeichnet. In der Spalte Type wird der vorgeschlagene Geltungsbereich für jedes nicht definierte Symbol basierend auf seiner Verwendung im Diagramm angezeigt.

  1. Öffnen Sie den Fensterbereich Symbols.

    • Wenn Sie ein Diagramm in einem Simulink-Modell erstellen, wählen Sie auf der Registerkarte Modeling unter Design Data die Option Symbols Pane aus.

    • Wenn Sie ein eigenständiges Diagramm für die Ausführung in MATLAB erstellen, wählen Sie auf der Registerkarte State Chart die Optionen Add Data > Symbols Pane aus.

  2. Klicken Sie im Fensterbereich Symbols auf Resolve Undefined Symbols .

    • Wenn Sie ein Diagramm in einem Simulink-Modell erstellen, löst der Stateflow-Editor die Symbole x und t0 als Eingabedaten und y als Ausgabedaten auf.

    • Wenn Sie ein eigenständiges Diagramm für die Ausführung in MATLAB erstellen, löst der Stateflow-Editor t0, x und y als lokale Daten auf.

    Before and after views of the Symbols pane resolving the undefined symbols t0, x, and y.

  3. Da sich der Schwellenwert t0 während der Simulation nicht ändert, ändern Sie seinen Geltungsbereich in konstante Daten. Klicken Sie in der Spalte Type auf das Datentyp-Symbol neben t0 und wählen Sie Constant Data aus.

  4. Legen Sie den Wert für den Schwellenwert t0 fest. Klicken Sie in der Spalte Value auf den leeren Eintrag neben t0 und geben Sie den Wert 0 ein.

  5. Speichern Sie Ihr Stateflow-Diagramm.

Ihr Diagramm ist jetzt für die Simulation in Simulink oder die Ausführung in MATLAB bereit.

Simulieren des Diagramms als Simulink-Block

Zum Simulieren des Diagramms innerhalb eines Simulink-Modells verbinden Sie den Diagrammblock über Eingangs- und Ausgangsports mit anderen Blöcken im Modell. Informationen zum Ausführen des Diagramms aus dem MATLAB-Befehlsfenster finden Sie unter Ausführen des Diagramms als MATLAB-Objekt.

  1. Um zum Simulink-Editor zurückzukehren, klicken Sie in der Explorer-Leiste am oberen Rand des Zeichenbereichs auf den Namen des Simulink-Modells: rectify. Wenn die Explorer-Leiste nicht sichtbar ist, klicken Sie auf das Symbol Hide/Show Explorer Bar am oberen Rand der Objektpalette.

  2. Fügen Sie dem Modell eine Quelle hinzu:

    • Fügen Sie aus der Bibliothek „Simulink Sources“ einen Sine Wave (Simulink)-Block hinzu.

    • Doppelklicken Sie auf den Sine Wave-Block und legen Sie Sample time auf 0,2 fest.

    • Verbinden Sie den Ausgang des Sine Wave-Blocks mit dem Eingang des Stateflow-Diagramms.

    • Kennzeichnen Sie das Signal als x.

  3. Fügen Sie dem Modell eine Senke hinzu:

    • Fügen Sie aus der Bibliothek „Simulink Sinks“ einen Scope (Simulink)-Block mit zwei Eingangsports hinzu.

    • Verbinden Sie den Ausgang des Sine Wave-Blocks mit dem ersten Eingang des Scope-Blocks.

    • Verbinden Sie den Ausgang des Stateflow-Diagramms mit dem zweiten Eingang des Scope-Blocks.

    • Kennzeichnen Sie das Signal als y.

  4. Speichern Sie das Simulink-Modell.

    In a Simulink model, a Sine Wave block creates an input signal for the chart. A Scope block plots the input and output of the chart.

  5. Klicken Sie zum Simulieren des Modells auf Run . Während der Simulation hebt der Stateflow-Editor aktive Zustände und Übergänge durch Diagrammanimation hervor.

  6. Nachdem Sie das Modell simuliert haben, doppelklicken Sie auf den Scope-Block. Der Bereich zeigt die Kurvenbilder der Eingangs- und Ausgangssignale zu den Diagrammen an.

    Scope block showing the input and output of the chart.

    Die Simulationsergebnisse zeigen, dass der Gleichrichter negative Eingangswerte herausfiltert.

Ausführen des Diagramms als MATLAB-Objekt

Zum Ausführen des Diagramms im MATLAB-Befehlsfenster erstellen Sie ein Diagrammobjekt und rufen dessen Funktion step auf. Informationen zum Simulieren des Diagramms innerhalb eines Simulink-Modells finden Sie unter Simulieren des Diagramms als Simulink-Block.

  1. Erstellen Sie ein Diagrammobjekt r, indem Sie den Namen der Datei sfx, die die Diagrammdefinition enthält, als Funktion verwenden. Geben Sie den Anfangswert für die Diagrammdaten x als Name-Wert-Paar an.

    r = rectify(x=0);
  2. Initialisieren Sie Eingangs- und Ausgangsdaten für die Diagrammausführung. Der Vektor X enthält Eingangswerte aus einer Sinuskurve. Der Vektor Y ist ein leerer Akkumulator.

    T = 0:0.2:10;
    X = sin(T);
    Y = [];
  3. Führen Sie das Diagrammobjekt durch mehrmaliges Aufrufen der Funktion step aus. Leiten Sie einzelne Werte vom Vektor X als Diagrammdaten x weiter. Erfassen Sie die resultierenden Werte von y im Vektor Y. Während der Ausführung hebt der Stateflow-Editor aktive Zustände und Übergänge durch Diagrammanimation hervor.

    for i = 1:51
        step(r,x=X(i));
        Y(i) = r.y;
    end
  4. Löschen Sie das Diagrammobjekt r aus dem MATLAB-Workspace.

    delete(r)
  5. Untersuchen Sie die Ergebnisse der Diagrammausführung. Beispielsweise können Sie die Funktion stairs aufrufen, um ein Stufendiagramm zu erstellen, das die Werte von X und Y vergleicht.

    ax1 = subplot(2,1,1);
    stairs(ax1,T,X,color="#0072BD")
    title(ax1,"x")
    
    ax2 = subplot(2,1,2);
    stairs(ax2,T,Y,color="#D95319")
    title(ax2,"y")

    MATLAB figure showing the input and output of the chart.

    Die Ausführungsergebnisse zeigen, dass der Gleichrichter negative Eingangswerte herausfiltert.

Verwandte Themen