Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Surplus-Power-Mode #1167

Open
wants to merge 11 commits into
base: development
Choose a base branch
from
Open

Surplus-Power-Mode #1167

wants to merge 11 commits into from

Conversation

SW-Niko
Copy link

@SW-Niko SW-Niko commented Aug 16, 2024

Surplus-Power-Mode

Was macht der "Surplus-Power-Mode"
Der "Surplus-Power-Mode" regelt die Inverter-Leistung auf Basis der überschüssigen Solar-Leistung. Überschüssige Solar-Leistung ist immer dann vorhanden, wenn die Batterie (fast) voll ist und die verfügbare Solar-Leistung höher ist als die Leistung, die im Haushalt verbraucht wird.

Welche Vorteile bringt der "Surplus-Power-Mode"
Im Prinzip, wird mehr Leistung einspeisen als verbraucht wird!
Jetzt stellt sich vermutlich die Frage: „Warum soll ich Energie verschenken?“
Nun, da hat jeder seine eigene Philosophie. Man muss aber auch bedenken, das der "Surplus-Power-Mode" nicht nur Energie verschenkt, sondern auch die Rentabilität der Anlage erhöht.

Vorteile:

  • Verringerung von Netzbezug um Regelverluste auszugleichen. Immer dann, wenn der Verbrauch ansteigt, benötigt die Verbrauchs-Regelung etwas Zeit, um den Inverter nachzustellen. Dieser Energieanteil wird dann vom Netz bezogen aber entfällt größtenteils im "Surplus-Power-Mode".
  • Optimiertes Verhalten bei stark schwankenden Lasten. Wenn die maximal mögliche Leistung eingespeist wird, dann ist es egal ob ein Verbraucher Intervall-Leistung zieht. Stichwort: Waschmaschine.
  • Aktive Verwendung des Überschusses. Z.B kann man in dieser Zeit Geräte mit internem Akku laden. (Staubsauger, Akkubohrer usw.)

Weitere Infos sind im PDF zu finden.
SurplusEnergyMode.pdf

@SW-Niko
Copy link
Author

SW-Niko commented Aug 16, 2024

Hallo @schlimmchen
In diesem PR sind auch commits vom #1140 enthalten. Ich wollte das eigentlich mit "stacked PRs " lösen, aber das habe ich nicht hinbekommen.
Kannst du dir meine Änderungen in der confic.cpp anschauen? Wenn ich das richtig verstanden habe, dann reichen meine Anpassungen und ich muss mir wegen Migration oder der Config Versionsnummer keine zusätzlichen Gedanken machen.

Bei Full Solar‐Passthrough kann es zu einem Problem kommen wenn der MPPT im Absorption/Float Mode ist. Ich fasse das in den nächsten Tagen zusammen.

@SW-Niko
Copy link
Author

SW-Niko commented Aug 18, 2024

Hallo @schlimmchen ,
nun noch die Antwort zu:

Bei Full Solar‐Passthrough kann es zu einem Problem kommen wenn der MPPT im Absorption/Float Mode ist. Ich fasse das in den nächsten Tagen zusammen.

„Warum der „Full Solar‐Passthrough-Mode“ im Absorption/Float Mode nicht immer die maximale Solarleistung abruft.

Ich überspringe mal die technischen Unterschiede zwischen den verschiedenen Betriebszuständen Bulk, Absorption, Float inklusive Stromquelle, Spannungsquelle und begrenze mich auf die Auswirkung.

Im Bulk-Mode liefert der MPPT immer die maximale Solarleistung, weil er alles was zur Verfügung steht in der Batterie unterbringt. Eine Steuerung des Inverters nach der Regelgröße „Total DC input power” funktioniert.

Im Absorption/Float-Mode dagegen liefert der MPPT nicht automatisch die maximale Solarleistung. Die Regelgröße „Total DC input power” zeigt jetzt nicht mehr die maximale Solarleistung an sondern die Leistung die gerade entnommen wird. Das kann auch die maximale Solarleistung sein, muss aber nicht. Eine Steuerung des Inverters nach der Regelgröße „Total DC input power” funktioniert nur bedingt.

Dieses „Funktioniert bedingt“ hängt von mehreren Faktoren ab ,aber es gibt eine relativ einfache Maßnahme um das Verhalten an der eigenen Anlage zu testen. Es gibt ja den Parameter „(Full) Solar-Passthrough Verluste“ und damit kann man steuern in welche Richtung sich der Wert „Total DC input power” im Absorption/Float Mode bewegt.

Wenn ich ihn groß mache, sagen wir 10 %, dann sinkt der Wert „Total DC input power” bei jedem Regelschritt und wir entfernen uns immer weiter von der maximalen Solarleistung und landen beim aktuellen Bedarf.

Wenn ich ihn klein mache, sagen wir 0 %, dann steigt der Wert „Total DC input power” bei jedem Regelschritt etwas an und wir erreichen sehr langsam die maximale Solarleistung.

Im Bulk Mode ist das anders. Der Parameter „(Full) Solar-Passthrough Verluste“ bestimmt hier lediglich ob die Batterie langsam geladen oder entladen wird. Die maximal verfügbare Solarleistung wird immer abgerufen.

Im Endeffekt war es schwierig bis unmöglich an meiner Anlage eine Einstellung aus „Full-Solar-Passthrough Start-Schwellwert“ und „(Full) Solar-Passthrough Verluste“ zu finden, die immer und effizient funktioniert hat.
Deshalb ist der „Surplus Power Mode“ entstanden.

Bis jetzt ist die Resonanz der Community auf den „Surplus Power Mode“ eher gering und falls nicht mehr Interesse besteht dann macht die Integration in OpenDTUonBattery auch wenig Sinn.

Ich lasse den PR noch einige Zeit stehen und lösche ihn dann wenn sich daran nichts ändert.

Copy link
Member

@schlimmchen schlimmchen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ist alles sehr spannend und sieht ordentlich aus. Verstanden habe ich es noch nicht, da brauche ich noch mehr Zeit.

Meine Erwartung wäre, dass diese Implementierung den Full Solar-Passthrough Modus ablöst. Warum hast du das nicht anvisiert? Fehlte da zu der Mut oder hab ich noch nicht verstanden, dass das nur zusätzlich funktioniert? Ich stelle mir vor, die Full Solar-Passthrough Schwellwerte im DPL zu entsorgen und nur noch einen Schalter zu haben "mach Full Solar-Passthrough" (an oder aus). Oder gerne auch mit neuem Namen "Surplus Power Mode", um klar zu machen, dass das Feature nun anders funktioniert.

Hm, nagut, es mag Leute geben, die haben TX nicht verdrahtet und da kann man die Float und Absorption Spannungen nicht lesen... Kann man dann nicht zum o.g. Schalter einen Wert einführen "Ziel-Spannung"?

Also nochmal: Ich find das spannend und toll, aber mir wäre es ein Anliegen, dass wir den Full Solar-Passthrough Bums dann entsorgen können. Wir wissen ja, dass der nicht wie erwartet funktioniert sobald die Batterie "voll" ist.

src/PowerLimiter.cpp Outdated Show resolved Hide resolved
src/SurplusPower.cpp Outdated Show resolved Hide resolved
src/SurplusPower.cpp Outdated Show resolved Hide resolved
src/SurplusPower.cpp Outdated Show resolved Hide resolved
@schlimmchen
Copy link
Member

Okay, ich hab das alles gelesen, es war aber alles redundant für mich, denn ich kenne das Problem sehr gut und auch andere kennen das.

Ich lasse den PR noch einige Zeit stehen und lösche ihn dann wenn sich daran nichts ändert.

Woher der Pessimismus? Ich hab den Code noch nicht gesehen, aber falls der gut ist, dann ist das ein super Feature!

Ich wollte das eigentlich mit "stacked PRs " lösen, aber das habe ich nicht hinbekommen.

Dazu hättest du einen Pull-Request vom surplus branch zum VeDirect-5 branch machen müssen. Allerdings bin ich mir nicht sicher, ob der dann hätte in deinem Fork leben müssen...

@SW-Niko
Copy link
Author

SW-Niko commented Aug 20, 2024

Woher der Pessimismus? Ich hab den Code noch nicht gesehen, aber falls der gut ist, dann ist das ein super Feature!

Ohne Feedback kommen mit der Zeit Zweifel auf, ob das wirklich ein gutes Feature ist.

Meine Erwartung wäre, dass diese Implementierung den Full Solar-Passthrough Modus ablöst. Warum hast du das nicht anvisiert?

Ich dachte die beiden Modi haben eine etwas unterschiedliche Zielsetzung!
„Full Solar-Passthrough Mode“:
Überschüssige Solarenergie in den Inverter pumpen und verhindern das die Batterie über einen definierten SoC Wert geladen wird.
"Surplus Power Mode":
Überschüssige Solarenergie in den Inverter pumpen aber nicht verhindern das die Batterie nach Vorgabe es MPPT geladen wird.

Das habe ich es in meiner Dokumentation nicht deutlich dargestellt.
Der "Surplus Power Mode" ist so ausgelegt das das Laden der Batterie (nahezu) nicht beeinflusst wird. Die Batterie wird genauso schnell geladen wie ohne Aktivierung des "Surplus Power Mode". Und es spielt auch keine Rolle wie groß der Inverter ist.
Das funktioniert im Absorption/Float Mode sehr einfach, weil der MPPT sich wie eine Spannungsquelle verhält.

Wenn ich den "Surplus Power Mode" auf den Bulk Mode erweitere, dann müssen wir akzeptieren das das Laden der Batterie verzögert wird. Zusätzlich benötigen wir einen Konfigurationsparameter, der angibt wieviel Watt oder Prozent von der verfügbaren Solarleistung für die Batterie reserviert werden soll.

Und wenn jetzt auch noch „Batterie nicht über einen definierten SoC Wert laden“ dazu kommt dann werden es 4 Kombinationen, die wir abdecken müssen.

  • Bulk + „Batterie nicht über einen definierten SoC Wert laden“
  • Bulk + „Batterie weiter mit x Anteil laden“
  • Absorption/Float + „Batterie nicht über einen definierten SoC Wert laden“
  • Absorption/Float + „Batterie weiter laden“ (Diese Kombination deckt der "Surplus Power Mode" momentan ab)

Ich kenne jetzt nicht alle Überlegungen und Diskussionen, die im Vorfeld vom „Full Solar-Passthrough Mode“ gemacht wurden. Aber mir gefällt die Lösung der SoC Begrenzung über den MPPT, die ich schon in einigen Beiträgen gelesen habe viel besser. Falls jemand sicher ist, das seine Batterie/BMS die vom Hersteller definierte Ladeschluß-Spannung (Absorption) nicht für den Zellausgleich benötigt dann würde ich die SoC Ladeobergrenze über den MPPT konfigurieren. Der bietet alle nötigen Einstellmöglichkeiten und das klappt auch wenn der Inverter weniger Leistung als der MPPT hat.

Und wenn wir dieses Feature auf den MPPT übertragen dann fehlt dem "Surplus Power Mode" nur noch die Erweiterung auf den Bulk Mode. (Das solle einfach zu realisieren sein)

Einmal davon abgesehen, kannst du dir auch vorstellen das Schrittweise umzusetzen?

@SW-Niko
Copy link
Author

SW-Niko commented Aug 21, 2024

Ok, ich habe den PR bereinigt und alle if mit Klammern erweitert.

Ich hätte auch einen Vorschlag wie der Surplus Mode auf den Bulk Mode erweitert werden kann.
Zur Regelung bietet sich der „Total DC input power” Wert an. Was noch fehlt ist ein vernünftiger Anteil der verfügbaren Solarleistung den wir für die Batterie reservieren müssen.
Zuerst dachte ich an einen konfigurierbaren prozentualen Wert (50% der Solarleistung) oder einen festen Wert (200W).
Beides berücksichtigt aber nicht die Zeit und deshalb habe ich mir was besseres einfallen lassen.
Wir können auch die verbleibende Sonnenzeit verwenden um die Energie zu berechnen die noch in die Batterie muss damit sie noch bis zum Sonnenuntergang voll wird.
Klar, da benötigen wir noch etwas reserve und es wird nicht immer funktionieren aber ich denke das ist viel besser als ein starrer vorkonfigurierter Wert der nicht berücksichtigt ob der Surplus Mode um 12:00 Uhr oder um 18:00 gestartet wird.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants