Hauptinhalt

Wiederverwenden von Logik in Diagrammen

Sie können Logik in Stateflow®-Diagrammen wiederverwenden, indem Sie benutzerdefinierte Funktionen in Zuständen oder Übergängen aufrufen. Stateflow-Diagramme unterstützen folgende benutzerdefinierte Funktionen:

  • Grafische Funktionen enthalten ein Flussdiagramm, das aus Verbindungen und Übergängen besteht.

  • Simulink®-Funktionen enthalten ein Simulink-Subsystem.

  • MATLAB®-Funktionen enthalten MATLAB-Code.

In diesem Beispiel erstellen Sie eine MATLAB-Funktion, die es einem Modell eines wiederaufladbaren Batteriesystems ermöglicht, beim Anschluss an ein Ladegerät mit einer variablen Leistungszufuhr umzugehen.

Modell öffnen

Das sfGetStartedFunction-Modell stellt die Steuerlogik eines wiederaufladbaren Batteriesystems dar. Um das Modell zu erstellen, befolgen Sie die Anweisungen in den vorherigen Schritten des Tutorials.

Doppelklicken Sie auf den „Chart“-Block.

Das Diagramm enthält zwei parallele Zustände, die eine wiederaufladbare Hauptbatterie und eine nicht wiederaufladbare Reservebatterie darstellen. Jede Batterie enthält verschachtelte untergeordnete Zustände, die Betriebsmodi für Laden, Entladen oder Bereitschaft darstellen.

Wenn die Hauptbatterie leer wird, sendet sie ein Ereignis, das den Entlademodus der Reservebatterie aktiviert. Wenn die Hauptbatterie zu laden beginnt, aktiviert sie den Bereitschaftsmodus der Reservebatterie.

Das Diagramm verwendet folgende Daten:

  • isCharging – Eingangsdaten, die angeben, ob das Batteriesystem an ein Ladegerät angeschlossen ist oder nicht. Diese Daten bestimmen den aktiven Zustand der Hauptbatterie.

  • deviceDemand – Eingangsdaten, die den Leistungsbedarf des angeschlossenen Geräts in Watt darstellen.

  • maxPower – Lokale Daten, die die maximale Leistungsabgabe der Hauptbatterie in Watt darstellen.

  • sentPower – Ausgangsdaten, die angeben, wie viel Leistung die Hauptbatterie an das angeschlossene Gerät liefert, in Watt.

  • receivedPower – Eingangsdaten, die die vom Ladegerät an die Hauptbatterie gelieferte Leistung in Watt darstellen.

  • mainCharge und emergencyCharge – Lokale Daten, die den Ladezustand der beiden Batterien darstellen.

Erstellen einer MATLAB-Funktion

Wenn das Ladegerät mehr oder weniger Strom liefert, wird das Batteriesystem derzeit nicht schneller oder langsamer geladen. Fügen Sie eine MATLAB-Funktion hinzu, mit der die Batterie eine variable Eingangsleistung innerhalb eines durch einen Minimal- und Maximalwert begrenzten Bereichs aufnehmen kann.

  1. Klicken Sie zum Erstellen der MATLAB-Funktion in der Palette auf das MATLAB-Funktionssymbol . Platzieren Sie die Funktion auf einer leeren Fläche des Zeichenbereichs.

  2. Der Editor fordert Sie auf, eine Funktionskennzeichnung einzugeben. Die Funktionskennzeichnung gibt die Rückgabewerte, den Namen und die Eingaben der MATLAB-Funktion im folgenden Format an:

    [return_val1,return_val2,....] = function_name(input1,input2,...)

    Für Funktionskennzeichnungen mit einem einzigen Rückgabewert werden keine geschweiften Klammern benötigt.

    Geben Sie eine Funktionskennzeichnung ein, die die aktuelle Ladung, die vom Ladegerät bereitgestellte zusätzliche Ladung und die maximale Eingangsladung angibt. Geben Sie die aktualisierte Batterieladung zurück.

    charge=updateCharge(current,added,max)

  3. Doppelklicken Sie zum Bearbeiten der MATLAB-Funktion auf einen beliebigen Teil der Funktion unterhalb der Funktionskennzeichnung. Der Funktionseditor wird geöffnet und zeigt folgende Überschrift an:

    function charge=updateCharge(current,added,max)
    Der Funktionseditor kopiert die Überschrift aus der Funktionskennzeichnung im Diagramm. Wenn Sie die Überschrift ändern, ändert sich auch die Funktionskennzeichnung.

  4. Schreiben Sie im Funktionseditor eine Funktion, die die Ladegeschwindigkeit der Batterie auf einen Bereich zwischen einem Maximalwert und 0 begrenzt.

    function charge=updateCharge(current,added,max)
    
    if added>max
        charge=current+max;
    elseif added<0
        charge=current;
    else
        charge=current+added;
    end

Hinzufügen von MATLAB-Funktionen zu Zustandsaktionen

Verwenden Sie die MATLAB-Funktion in den Zuständen FastCharge und SlowCharge.

  1. Um zum Stateflow-Editor zurückzukehren, klicken Sie in der Explorer-Leiste auf die Schaltfläche „Up to Parent“ (Zu übergeordnetem Objekt) .

  2. Ändern Sie im Zustand FastCharge die Aktion during, um die Funktion zu verwenden. Verwenden Sie als maximale Eingangsladung 4, d. h. den Wert, den das Diagramm derzeit zu mainCharge hinzufügt.

    during:
    mainCharge=updateCharge(mainCharge,receivedPower,4);

  3. Ändern Sie im Zustand SlowCharge die Aktion during, um die Funktion zu verwenden. Verwenden Sie als maximale Eingangsladung 1, d. h. den Wert, den das Diagramm derzeit zu mainCharge hinzufügt.

    during:
    mainCharge=updateCharge(mainCharge,receivedPower,1);

Simulieren des Modells

Das Modell protokolliert diese Werte im Simulation Data Inspector:

  • Die vom Ladegerät an das Batteriesystem gelieferte Leistung. Der Wert variiert zwischen -6 und 6.

  • Der Ladezustand der Hauptbatterie.

  • Der Name des aktiven Lademodus der Hauptbatterie.

Simulieren Sie das Modell und verwenden Sie den Simulation Data Inspector, um zu beobachten, wie sich der Wert von mainCharge während der Simulation ändert.

Wenn die Hauptbatterie schnell aufgeladen wird, steigt und sinkt der Ladezustand mit der zugeführten Leistung, bis zu einem Maximum von 4 und einem Minimum von 0. Wenn die Hauptbatterie langsam aufgeladen wird, steigt und sinkt der Ladezustand mit der zugeführten Leistung, bis zu einem Maximum von 1 und einem Minimum von 0.

Siehe auch

Themen