Protokollieren, Verifizieren und Debuggen von Diagrammen
In Stateflow® können Sie Daten und Zustände protokollieren, um zu verstehen, wann und wie diese sich während der Simulation ändern. Sie können Haltepunkte hinzufügen, um die Ausführung bei Zuständen oder Übergängen zu pausieren. Durch eine Kombination dieser Techniken können Sie Ihre Diagrammlogik verifizieren und debuggen.
In diesem Beispiel identifizieren Sie ein Designproblem in einem wiederaufladbaren Batteriemodell, indem Sie die Zustandsaktivität und die Datenwerte eines Diagramms protokollieren. Daraufhin verwenden Sie Haltepunkte, um den Zustand und den Zeitschritt, bei dem das Designproblem auftritt, zu identifizieren.
Modell öffnen
Um das Modell zu erstellen, befolgen Sie die Anweisungen im vorherigen Schritt des Tutorials. Alternativ können Sie das Modell sfGetStartedBattery über die MATLAB®-Eingabeaufforderung öffnen.
Geben Sie in der MATLAB-Eingabeaufforderung Folgendes ein:
openExample("sfGetStartedBattery")
Sie können die Batterie durch Umschalten des Blocks „Manual Switch“ laden oder entladen.
Doppelklicken Sie auf den Diagrammblock, um den Stateflow Editor zu öffnen.

Die Zustände
ChargeundDischargestellen die Betriebsmodi des Batteriesystems dar. Der EingangisChargingbestimmt den aktiven Zustand. Die DatensentPowerundchargestellen die Wattleistung und den Ladestand der Batterie dar.
Protokollieren von Zuständen und Daten
Das Batteriesystem weist die folgenden Anforderungen auf:
Wenn
isChargingwahr ist, laden Sie die Batterie. WennisChargingfalsch ist, entladen Sie die Batterie.Der Ladestand der Batterie muss zwischen 100 % und 0 % liegen.
Verifizieren Sie die Anforderungen, indem Sie den aktiven Zustand des Diagramms und den Wert der Eingabe charge im Simulation Data Inspector protokollieren.
Um den aktiven Zustand des Diagramms zu protokollieren, klicken Sie auf der Registerkarte Simulation im Abschnitt Prepare auf Log Active State. Ein Protokollsymbol
erscheint in der linken unteren Ecke des Zeichenbereichs.Rechtsklicken Sie im Fensterbereich Symbols auf
chargeund klicken Sie auf Inspect. Der Property Inspector wird geöffnet.Erweitern Sie im Property Inspector den Abschnitt Logging und wählen Sie Log signal data aus.
Kehren Sie zum Simulink® Editor zurück.
Rechtsklicken Sie auf die Signallinie vom Block „Manual Switch“ zum Diagramm und klicken Sie auf Log Selected Signals.
Um das Modell zu simulieren, klicken Sie auf der Registerkarte Simulation auf Run. Das Modell wird simuliert, bis Sie auf Stop drücken.
Um zum Zustand
Dischargezu wechseln, doppelklicken Sie auf den Block „Manual Switch“. Warten Sie einige Sekunden und schalten Sie den Block „Manual Switch“ erneut um. Wiederholen Sie dies mehrmals. Setzen Sie beim letzten Umschalten den Block „Manual Switch“ auf0zurück.Klicken Sie auf der Registerkarte Simulation auf Stop, um die Simulation zu beenden.
Klicken Sie auf der Registerkarte Simulation im Abschnitt Review Results auf Data Inspector.
Klicken Sie im Simulation Data Inspector auf Visualisierung und Layouts
. Klicken Sie im Abschnitt Basic layouts auf das Layout 2x1
.Klicken Sie auf das obere Diagramm, um den aktiven Zustand des Diagramms anzuzeigen. Erweitern Sie daraufhin auf der Registerkarte Inspect den Abschnitt Stateflow und wählen Sie
Battery:ActiveChildaus.Klicken Sie auf das untere Diagramm, um die Ausgabe des Blocks „Manual Switch“ anzuzeigen. Erweitern Sie daraufhin auf der Registerkarte Inspect den Abschnitt Signals und wählen Sie
Manual Switch:1aus.
Wenn Sie den Block „Manual Switch“ umschalten, wechselt das Diagramm wie erwartet zwischen
ChargeundDischarge.Klicken Sie auf das untere Diagramm, um den Wert von
chargeanzuzeigen. Wählen Sie daraufhin auf der Registerkarte Inspectchargeaus und löschen SieManual Switch:1.
Die Batterie entspricht nicht den Anforderungen, da sie über 100 % und unter 0 % lädt.
Setzen von Haltepunkten
Sie können Haltepunkte bei Zuständen und Übergängen setzen, um den Zeitschritt zu identifizieren, bei dem das Designproblem auftritt.
Rechtsklicken Sie im Diagramm auf den Zustand
Dischargeund klicken Sie auf Set Breakpoint. Auf dem Zustand wird ein rotes, kreisförmiges Haltepunkt-Symbol angezeigt. Standardmäßig werden Haltepunkte bei einem Zustand ausgelöst, wenn das Diagramm in den Zustand eintritt oder im Zustand verbleibt.Klicken Sie auf das Haltepunkt-Symbol, um die Auslösung des Haltepunkts, wenn das Diagramm in den Zustand eintritt, zu deaktivieren. Löschen Sie im Dialogfeld Discharge Breakpoints den Auslöser On State Entry.
Rechtsklicken Sie auf den Übergang von
ChargezuDischargeund klicken Sie auf Set Breakpoint. Der Haltepunkt wird ausgelöst, wenn das Diagramm den Übergang durchläuft.Klicken Sie auf der Registerkarte Debug auf Breakpoints List.
Im Fensterbereich Breakpoints List können Sie Haltepunkte aktivieren oder deaktivieren und die Auslösebedingungen ändern.
Geben Sie an, dass der Haltepunkt
Dischargenur ausgelöst wird, wenn die Batterieladung negativ ist. Doppelklicken Sie in der Tabellenzeile für den ZustandDischargeauf die Spalte Condition und geben Siecharge<0ein.
Simulieren Sie das Modell. Die Simulation pausiert bei dem Übergang zwischen
ChargeundDischarge.
Um die Simulation fortzusetzen, klicken Sie auf der Registerkarte Simulation auf Continue. Die Simulation pausiert bei dem Schritt, bei dem
chargenegativ wird.
Klicken Sie erneut auf Continue. Da
chargeweiterhin negativ ist, wird der HaltepunktDischargebeim nächsten Schritt ausgelöst.Halten Sie die Simulation an.
Um die Haltepunkte zu entfernen, rechtsklicken Sie auf die Haltepunkt-Symbole und wählen Sie Clear Breakpoint aus.
Im nächsten Schritt des Tutorials beheben Sie das Designproblem, indem Sie verschachtelte Betriebsmodi hinzufügen, die das Laden oder Entladen verlangsamen oder anhalten, wenn die Batterie einen bestimmten Ladestand erreicht.