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.
Starten Sie MATLAB®. Klicken Sie in der MATLAB-Werkzeugleiste auf der Registerkarte Home auf Simulink.

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.

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.
Klicken Sie in der Palette auf das Zustandssymbol
. Um den Zustand zu platzieren, klicken Sie auf einen leeren Abschnitt der Diagrammfläche.
Wenn Sie einen Zustand platzieren, fordert der Editor Sie auf, in der oberen linken Ecke des Zustands einen Zustandsnamen einzugeben. Geben Sie
Chargeein.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.
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.
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 desDischarge-Zustands.
Tipp
Um einen bestehenden Übergang zu verschieben, klicken Sie auf den Pfeil und ziehen Sie den Übergang.
Erstellen Sie einen Übergang von
DischargezuCharge.
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
ChargeundDischarge.

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.
Um von
ChargezuDischargeü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.

Um einen Übergang von
DischargezuChargenur 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.
| Zustandsaktion | Verhalten |
|---|---|
entry | Wird ausgeführt, wenn der Zustand aktiv wird. |
during | Wird 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. |
exit | Wird ausgeführt, wenn der Zustand inaktiv wird. |
Fügen Sie Zustandsaktionen hinzu, die die Batterieleistung und den Ladestand gemäß dem Betriebsmodus ändern.
Bearbeiten Sie im Zustand
Chargedie 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.Die Aktionentry:sentPower=0;during:charge=charge+4;entrysetzt eine Variable namenssentPowerauf0. Die Aktionduringinkrementiert eine Variable namenschargeum4.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.

Fügen Sie im Zustand
Dischargeeineentry-Aktion hinzu, diesentPowerauf3.5setzt, sowie eineduring-Aktion, diechargeum3dekrementiert.
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.
| Symbol | Typ | Verhalten |
|---|---|---|
![]() | 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 Daten | Wä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.
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.Legen Sie den Anfangsladestand der Batterie fest. Klicken Sie im Fensterbereich Symbols in der Zeile
chargeauf die Spalte Value und geben Sie50ein.
Hinweis
Während der Simulation wird für Daten mit einem undefinierten Wert standardmäßig
0angezeigt.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.
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.
Fügen Sie einen „Constant“-Block mit dem Wert
1hinzu. Verbinden Sie den Ausgang mit dem ersten Eingangsport des Blocks „Manual Switch“.Fügen Sie einen „Constant“-Block mit dem Wert
0hinzu. Verbinden Sie den Ausgang mit dem zweiten Eingangsport des Blocks „Manual Switch“.Fügen Sie einen „Scope“-Block hinzu. Verbinden Sie den Ausgangsport des „Chart“-Blocks mit dem Eingangsport des „Scope“-Blocks.
Nennen Sie den „Chart“-Block
Battery.
Simulieren des Modells
Simulieren Sie das vervollständigte Modell.
Setzen Sie auf der Registerkarte Simulation Stop Time auf
Inf.Doppelklicken Sie, um den „Chart“-Block aufzurufen.
Um das Modell zu simulieren, klicken Sie auf der Registerkarte Modeling auf Run. Beobachten Sie die blaue Markierung um den Zustand
Charge.Kehren Sie zum Simulink Editor zurück.
Doppelklicken Sie auf den Block „Manual Switch“, um den Block zu öffnen.
Öffnen Sie den Stateflow-Editor. Beobachten Sie die blaue Markierung um den Zustand
Discharge.Klicken Sie auf der Registerkarte Modeling auf Stop, um die Simulation zu beenden.
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.


