Hauptinhalt

Erstellen von Stateflow-Diagrammen

In diesem Tutorial verwenden Sie ein Stateflow®-Diagramm, um die Logik eines aufladbaren Batteriesystems zu modellieren.

Das Batteriesystem weist die folgenden Anforderungen auf:

  • Die Batterie wird aufgeladen, wenn sie mit einer externen Stromquelle verbunden ist. Andernfalls wird sie entladen.

  • Die Batterie wird mit einer Rate von 4 % der Gesamtkapazität aufgeladen und mit einer Rate von 3 % entladen.

  • Beim Laden gibt die Batterie keine Energie ab. Beim Entladen gibt die Batterie 3,5 Watt Energie ab.

Um diese Anforderungen zu modellieren, erstellen Sie ein Diagramm mit zwei Zuständen, Charge und Discharge, die die Betriebsmodi des Batteriesystems darstellen.

Diagramm erstellen

Erstellen Sie ein neues Simulink®-Modell mit einem leeren „Chart“-Block.

  1. Starten Sie MATLAB®. Klicken Sie in der MATLAB-Werkzeugleiste auf der Registerkarte Home auf Simulink.

  2. Klicken Sie auf der Startseite im Abschnitt Stateflow auf die Vorlage Blank Chart.

    Der Simulink Editor wird geöffnet und zeigt ein Modell an, das einen „Chart“-Block enthält.

  3. Doppelklicken Sie auf den „Chart“-Block. Der Stateflow Editor wird geöffnet.

Der Stateflow Editor weist die folgenden Komponenten auf:

  • Diagrammfläche (Canvas) – Die grafische Umgebung, in der Sie Zustände und Übergänge platzieren. Die Diagrammfläche weist standardmäßig einen cremefarbenen Hintergrund auf.

  • Explorer-Leiste – Ein rechteckiger Bereich über der Diagrammfläche, in dem ein Pfad zum geöffneten Diagramm oder Grafikelement angezeigt wird. Klicken Sie auf die Pfeilschaltflächen oder Modellelemente, um zwischen dem Stateflow Editor und dem Simulink Editor zu wechseln.

  • Palette – Ein Menü links neben der Diagrammfläche, über das Sie der Diagrammfläche Objekte hinzufügen können. Umfasst Symbole für Zustände und weitere Diagrammelemente.

    Um die Objektnamen anzuzeigen, rechtsklicken Sie auf die Palette und daraufhin auf Show Names. Um die Namen zu verbergen, rechtsklicken Sie und wählen Sie Hide Names aus.

  • Fensterbereich Symbols – Ein Fensterbereich, der sich standardmäßig rechts neben der Diagrammfläche befindet und in dem Sie Daten, Ereignisse und Meldungen erstellen und verwalten können, wodurch das Diagramm mit dem Rest des Simulink-Modells kommunizieren kann.

    Um den Fensterbereich Symbols zu öffnen oder zu schließen, klicken Sie auf der Registerkarte Modeling auf Symbols Pane.

Hinzufügen von Zuständen

Das Batteriesystem erfordert zwei Zustände, einen zum Laden und einen zum Entladen. Verwenden Sie die Palette, um die zwei Zustände der Diagrammfläche hinzuzufügen.

  1. Klicken Sie in der Palette auf das Zustandssymbol . Um den Zustand zu platzieren, klicken Sie auf einen leeren Abschnitt der Diagrammfläche.

  2. Wenn Sie einen Zustand platzieren, fordert der Editor Sie auf, in der oberen linken Ecke des Zustands einen Zustandsnamen einzugeben. Geben Sie Charge ein.

    Klicken Sie auf einen leeren Abschnitt der Diagrammfläche, um den Zustandsnamen zu finalisieren. Klicken Sie auf den Text im Zustand, um einen bestehenden Zustandsnamen zu bearbeiten.

    Hinweis

    Zustandsnamen dürfen keine Leerzeichen enthalten oder mit einer Zahl beginnen. Jeder Zustandsname muss eindeutig sein.

  3. Fügen Sie einen zweiten Zustandsnamen hinzu und nennen Sie diesen Discharge.

    Hinweis

    Zustandsränder dürfen sich nicht überlappen.

Verbinden von Zuständen

Übergänge bestimmen, wie und wann Ihr Diagramm zwischen Zuständen wechselt.

Verwenden von Standardübergängen zur Angabe des ersten aktiven Zustands

Ein blauer Kreis weist auf einen Standardübergang hin, der bestimmt, welcher Zustand beim Start der Simulation aktiv wird.

Das Diagramm platziert einen Standardübergang im ersten Zustand, den Sie der Diagrammfläche hinzufügen. In diesem Beispiel ist der Standardübergang mit dem Zustand Charge verbunden. Sie können auf das Standardübergangs-Symbol und den Rand eines Zustands klicken, um weitere Standardübergänge aus der Palette hinzuzufügen.

Da die Anforderungen erfordern, dass die Batterie im Lademodus beginnen muss, müssen Sie den Standardübergang nicht verschieben.

Hinzufügen von Übergangen zwischen Zuständen

Übergänge zwischen Zuständen erlauben es dem Diagramm, zwischen Zuständen zu wechseln.

  1. Um den ersten Übergang zu erstellen, weisen Sie mit dem Mauszeiger auf den Rand des Charge-Zustands, bis sich Ihr Mauszeiger zu einem Plussymbol ändert. Kicken und ziehen Sie zum Rand des Discharge-Zustands.

    Tipp

    Um einen bestehenden Übergang zu verschieben, klicken Sie auf den Pfeil und ziehen Sie den Übergang.

  2. Erstellen Sie einen Übergang von Discharge zu Charge.

  3. Simulieren Sie das Modell. Klicken Sie auf der Registerkarte Simulation auf Run.

    Wenn ein Zustand aktiv wird, hebt das Diagramm die Ränder des Zustands hervor. Wenn das Diagramm einen Übergang durchquert, wird der Übergang kurz hervorgehoben. Während der Simulation wechselt das Diagramm in jedem Schritt zwischen den Zuständen Charge und Discharge.

    Tipp

    Um die Animationsgeschwindigkeit zu ändern, klicken Sie auf der Registerkarte Debug auf das Drop-Down-Menü Animation Speed und wählen Sie eine Option aus.

Übergangskennzeichnungen hinzufügen

Um das Verhalten von Übergängen zu ändern, können Sie Übergangskennzeichnungen hinzufügen. Übergangskennzeichnungen weisen drei optionale Komponenten auf:

  • Einen Ereignisauslöser oder Nachrichtenauslöser, der verhindert, dass das Diagramm den Übergang passiert, bis der Übergang einen Ereignis- oder Nachrichten-Broadcast von einem anderen Objekt im Diagramm oder Modell empfängt.

  • Eine Bedingung, die erfüllt sein muss, bevor das Diagramm den Übergang passieren kann. Verwenden Sie eckige Klammern, um eine Bedingung festzulegen.

  • Eine Aktion, die ausgeführt wird, wenn das Diagramm den Übergang passiert. Verwenden Sie geschweifte Klammern, um eine Aktion festzulegen.

Beim ersten Erstellen eines Übergangs fordert der Editor Sie auf, eine Kennzeichnung einzugeben. Alternativ können Sie eine Übergangskennzeichnung durch Doppelklick auf den Übergang hinzufügen.

Fügen Sie den Übergängen zwischen den Zuständen Bedingungen hinzu.

  1. Um von Charge zu Discharge überzugehen, wenn das Modell nicht lädt, doppelklicken Sie auf den Übergang und geben Sie die Kennzeichnung [~isCharging] ein.

    Klicken Sie auf die Diagrammfläche, um die Kennzeichnungen zu finalisieren. Um die Kennzeichnung zu verschieben, klicken und ziehen Sie die Kennzeichnung.

  2. Um einen Übergang von Discharge zu Charge nur zu erlauben, wenn die Modellierung lädt, geben Sie die Kennzeichnung [isCharging] ein.

Hinzufügen von ausführbarem Code

In aktiven Zuständen können Sie Code ausführen, indem Sie der Zustandskennzeichnung Zustandsaktionen hinzufügen. Zustandsaktionen enthalten ein Schlüsselwort, gefolgt von einem Doppelpunkt und einem Block ausführbarem Code.

In diesem Beispiel verwenden Sie drei Typen von Zustandsaktionen.

ZustandsaktionVerhalten
entryWird ausgeführt, wenn der Zustand aktiv wird.
duringWird bei jedem Schritt ausgeführt, den ein Zustand aktiv ist. Wird nicht bei einem Schritt ausgeführt, bei dem der Zustand aktiv oder inaktiv wird.
exitWird ausgeführt, wenn der Zustand inaktiv wird.

Fügen Sie Zustandsaktionen hinzu, die die Batterieleistung und den Ladestand gemäß dem Betriebsmodus ändern.

  1. Bearbeiten Sie im Zustand Charge die Zustandskennzeichnung, indem Sie auf den Zustandsnamen klicken. Fügen Sie eine neue Zeile hinzu und geben Sie daraufhin den untenstehenden Text ein. Sie können über Drücken von Enter neue Zeilen hinzufügen.

    entry:
    sentPower=0;
    during:
    charge=charge+4;
    Die Aktion entry setzt eine Variable namens sentPower auf 0. Die Aktion during inkrementiert eine Variable namens charge um 4.

    Tipp

    Um die Größe eines Zustands manuell zu ändern, klicken und ziehen Sie eine Ecke. Um jedes Objekt in der Diagrammfläche automatisch neu zu formatieren, klicken Sie auf einen leeren Abschnitt in der Diagrammfläche, um alle Objekte abzuwählen. Drücken Sie daraufhin auf Strg+Umschalt+A.

  2. Fügen Sie im Zustand Discharge eine entry-Aktion hinzu, die sentPower auf 3.5 setzt, sowie eine during-Aktion, die charge um 3 dekrementiert.

Definieren von Diagrammdaten und Teilen mit dem Simulink-Modell

Wenn Sie eine Variable in einem Übergang oder Zustand verwenden, müssen Sie die Variable als Eingabedaten, Ausgabedaten oder lokale Daten definieren. Im Fensterbereich Symbols weist das Warnsymbol auf undefinierte Daten hin.

SymbolTypVerhalten
Eingabedaten

Während der Simulation empfangen diese Daten den Wert des Eingangssignals.

Wenn Sie Eingabedaten definieren, wird dem „Chart“-Block in Simulink ein Eingangsport hinzugefügt. Sie können Eingabedaten nicht manuell Werte zuweisen.

Ausgabedaten

Während der Simulation überträgt das Diagramm den Wert dieser Daten an Simulink.

Wenn Sie Ausgabedaten definieren, wird dem „Chart“-Block in Simulink ein Ausgangsport hinzugefügt.

Lokale DatenWährend der Simulation speichern diese Daten Informationen, die nur im Diagramm zugänglich sind.

Das Diagramm leitet die Typen dieser Daten aus dem Kontext ab. Das Diagramm leitet beispielsweise ab, dass es sich bei isCharging um Eingabedaten handelt, bei sentPower um Ausgabedaten und bei charge um lokale Daten.

Definieren Sie den Typ und Wert der Diagrammdaten.

  1. Um die abgeleiteten Datentypen zu akzeptieren, klicken Sie im Fensterbereich Symbols auf die Schaltfläche „Resolve undefined symbols“ (Auflösen nicht definierter Symbole) . Die Warnsymbole neben den undefinierten Daten verschwinden.

  2. Legen Sie den Anfangsladestand der Batterie fest. Klicken Sie im Fensterbereich Symbols in der Zeile charge auf die Spalte Value und geben Sie 50 ein.

    Hinweis

    Während der Simulation wird für Daten mit einem undefinierten Wert standardmäßig 0 angezeigt.

  3. Um zur obersten Ebene des Simulink-Modells zurückzukehren, klicken Sie in der Explorer-Leiste auf die Schaltfläche „Up to Parent“ (Zu übergeordnetem Objekt) .

    Der „Chart“-Block weist einen Eingangs- und Ausgangsport auf. Um die Portnamen anzuzeigen, erweitern Sie den „Chart“-Block, indem Sie auf eine Ecke klicken und diese nach außen ziehen.

Verbinden von Simulink-Blöcken mit einem Diagramm

Um das Modell zu vervollständigen, verbinden Sie die Blöcke „Source“ und „Sink“ mit den Eingangs- und Ausgangsports des „Chart“-Blocks.

  1. Um ein Batteriesystem darzustellen, das sich mit einer externen Stromquelle verbinden bzw. von der externen Stromquelle trennen lässt, fügen Sie der Simulink-Diagrammfläche einen Block „Manual Switch“ hinzu. Verbinden Sie den Ausgang mit dem Eingang des „Chart“-Blocks.

  2. Fügen Sie einen „Constant“-Block mit dem Wert 1 hinzu. Verbinden Sie den Ausgang mit dem ersten Eingangsport des Blocks „Manual Switch“.

  3. Fügen Sie einen „Constant“-Block mit dem Wert 0 hinzu. Verbinden Sie den Ausgang mit dem zweiten Eingangsport des Blocks „Manual Switch“.

  4. Fügen Sie einen „Scope“-Block hinzu. Verbinden Sie den Ausgangsport des „Chart“-Blocks mit dem Eingangsport des „Scope“-Blocks.

  5. Nennen Sie den „Chart“-Block Battery.

Simulieren des Modells

Simulieren Sie das vervollständigte Modell.

  1. Setzen Sie auf der Registerkarte Simulation Stop Time auf Inf.

  2. Doppelklicken Sie, um den „Chart“-Block aufzurufen.

  3. Um das Modell zu simulieren, klicken Sie auf der Registerkarte Modeling auf Run. Beobachten Sie die blaue Markierung um den Zustand Charge.

  4. Kehren Sie zum Simulink Editor zurück.

  5. Doppelklicken Sie auf den Block „Manual Switch“, um den Block zu öffnen.

  6. Öffnen Sie den Stateflow-Editor. Beobachten Sie die blaue Markierung um den Zustand Discharge.

  7. Klicken Sie auf der Registerkarte Modeling auf Stop, um die Simulation zu beenden.

  8. Schalten Sie „Manual Switch“ auf 1.

Im nächsten Schritt des Tutorials nutzen Sie aktive Zustandsausgabe, Protokollierung und Haltepunkte, um das Batteriemodell zu verifizieren und zu debuggen.

Siehe auch

Themen