Hauptinhalt

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.

  1. Geben Sie in der MATLAB-Eingabeaufforderung Folgendes ein:

    openExample("sfGetStartedBattery")

    Sie können die Batterie durch Umschalten des Blocks „Manual Switch“ laden oder entladen.

  2. Doppelklicken Sie auf den Diagrammblock, um den Stateflow Editor zu öffnen.

    Die Zustände Charge und Discharge stellen die Betriebsmodi des Batteriesystems dar. Der Eingang isCharging bestimmt den aktiven Zustand. Die Daten sentPower und charge stellen die Wattleistung und den Ladestand der Batterie dar.

Protokollieren von Zuständen und Daten

Das Batteriesystem weist die folgenden Anforderungen auf:

  • Wenn isCharging wahr ist, laden Sie die Batterie. Wenn isCharging falsch 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.

  1. 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.

  2. Rechtsklicken Sie im Fensterbereich Symbols auf charge und klicken Sie auf Inspect. Der Property Inspector wird geöffnet.

  3. Erweitern Sie im Property Inspector den Abschnitt Logging und wählen Sie Log signal data aus.

  4. Kehren Sie zum Simulink® Editor zurück.

  5. Rechtsklicken Sie auf die Signallinie vom Block „Manual Switch“ zum Diagramm und klicken Sie auf Log Selected Signals.

  6. Um das Modell zu simulieren, klicken Sie auf der Registerkarte Simulation auf Run. Das Modell wird simuliert, bis Sie auf Stop drücken.

  7. Um zum Zustand Discharge zu 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“ auf 0 zurück.

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

  9. Klicken Sie auf der Registerkarte Simulation im Abschnitt Review Results auf Data Inspector.

  10. Klicken Sie im Simulation Data Inspector auf Visualisierung und Layouts . Klicken Sie im Abschnitt Basic layouts auf das Layout 2x1 .

  11. 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:ActiveChild aus.

  12. 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:1 aus.

    Wenn Sie den Block „Manual Switch“ umschalten, wechselt das Diagramm wie erwartet zwischen Charge und Discharge.

  13. Klicken Sie auf das untere Diagramm, um den Wert von charge anzuzeigen. Wählen Sie daraufhin auf der Registerkarte Inspect charge aus und löschen Sie Manual 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.

  1. Rechtsklicken Sie im Diagramm auf den Zustand Discharge und 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.

  2. 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.

  3. Rechtsklicken Sie auf den Übergang von Charge zu Discharge und klicken Sie auf Set Breakpoint. Der Haltepunkt wird ausgelöst, wenn das Diagramm den Übergang durchläuft.

  4. 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.

  5. Geben Sie an, dass der Haltepunkt Discharge nur ausgelöst wird, wenn die Batterieladung negativ ist. Doppelklicken Sie in der Tabellenzeile für den Zustand Discharge auf die Spalte Condition und geben Sie charge<0 ein.

  6. Simulieren Sie das Modell. Die Simulation pausiert bei dem Übergang zwischen Charge und Discharge.

  7. Um die Simulation fortzusetzen, klicken Sie auf der Registerkarte Simulation auf Continue. Die Simulation pausiert bei dem Schritt, bei dem charge negativ wird.

  8. Klicken Sie erneut auf Continue. Da charge weiterhin negativ ist, wird der Haltepunkt Discharge beim nächsten Schritt ausgelöst.

  9. Halten Sie die Simulation an.

  10. 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.

Siehe auch

Themen