ich möchte euch gerne meine Smarte PV-Regelung vorstellen, die ich in den vergangen Wochen in der Loxone mittels 2 Programmen und diversen Variabeln erstellt habe. Vorweg: ich kann nicht programmieren und habe das Programm mit einer KI verfasst und mittels Try&Error getestet. Bei mir funktioniert es soweit.
Fragen beantworte ich gerne, ich bin aber nicht jeden Tag online, also bitte nicht böse sein, wenn es mal etwas länger dauert bis ich Fragen dazu beantwortet habe.
Ich übernehme auch keine Verantwortung für etwaige Schäden oder ähnliches durch die Nutzung dieser Programmierung.
Zur Ausgangssituation:
ich habe eine 12kWp PV-Anlage mit einem Fronius Wechselrichter und einer BYD 22kWh Batterie, die ich vollständig über Modbus in Loxone integriert habe und dementsprechend auch steuern kann. Zusätzlich habe ich noch eine alte, unregelbare 6kWp PV-Anlage mit einem Danfoss Wechselrichter. Ich nutze einen Stundentarif von Smart Energy sowohl für den Strombezug als auch für die Einspeisung (--> für die Einspeisung bekomme ich 80% des Bezugstarifes, zahle somit bei negativen Strompreisen "Strafe").
Ich nutze den Loxone Energiemanager für die Ansteuerung diverser Verbraucher (Tiefkühler, Pool Umwälzpumpe, Klimaanlage, stufenlosen 3kW Heizstab usw..) jedoch habe ich die Batterie nicht in den Energiemanager eingebunden, da dadurch meine Regelstrategie gestört wurde. Für das Warmwasser (stufenloser 3kW Heizstab) habe ich ein zusätzliches Programm geschrieben, da ich an diesen spezielle Anforderungen hatte - dazu später mehr).
Ich habe auch ein E-Auto, mit dem ich aber Montag bis Freitag unterwegs bin und somit nicht von Überschusstrom zu Mittag profitieren kann, sprich ich muss die Ladung entweder aus der Batterie machen oder zu den günstigsten Stunden in der Nacht.
Mein Ziel war es, eine PV-Strategie zu entwickeln, die möglichst alle Einflussfaktoren berücksichtigt, eine hohe Eigenbedarfsabdeckung generiert und gleichzeitig aber auch durch einen optimierten Stromverkauf, den wirtschaftlichen Ertrag steigert.
Darüberhinaus soll aber auch der günstige Nachtstrom im Winter genutzt werden, um die Batterie dort aufzuladen und unter Tags bei teuren Strombezugsstunden keine Energie aus dem Netz zu ziehen.
Das System besteht aus drei eigenständigen Pico-C-Programmen:
1. Programm: "PV-Prognose-Manager" (Batteriemanagement)
Dieses Programm analysiert PV-Prognosen für heute und morgen und berechnet, ob und wie die Batterie geladen oder entladen werden soll, um den Tagesverbrauch optimal abzudecken.
Eingänge (I1 - I9)
- I1 (cap_wh): Batteriekapazität in Wh. --> kommt vom Fronius WR
- I2 (soc_act_pct): Aktueller SoC in %. --> kommt vom Fronius WR
- I3 (soc_min_pct): Minimaler SoC in %. --> Virtueller Eingang den ich verstellen kann, und bildet die Entladegrenze ab.
- I4 (sol_tm): PV-Prognose morgen (kWh). --> Loxberry PV-Sol Forecast
- I5 (verbrauch): Ø Tagesverbrauch (letzte 7 Tage in kWh). --> Mittels Analogspeicher erstellte, weitergeschriebene Tagesverbräuche der letzten 7 Tage
- I6 (korr_tm): Wetter-Korrekturfaktor morgen. --> Loxberry Weather for Loxone, Openweather map --> für jeden Wettertyp habe ich einen Korrekturfaktor hinterlegt (z.Bsp.: klarer Himmel = 1; Nebel = 0,1,....)
- I7 (sol_td): PV-Prognose heute (kWh).--> Loxberry PV-Sol Forecast
- I8 (korr_td): Wetter-Korrekturfaktor heute. --> gleich wie oben
- I9 (pv_top): PV-Leistung Ø der TOP 4 Stunden heute. --> Loxberry PV-Sol Forecast
- AQ1 (Beladestatus): 0 = Beladung sofort, 1 = PV-Ladung intelligent.
- AQ2 (Demand Faktor): wieviel h braucht die PV Anlage für die Batterieladung
- AQ3 (Entlade-Status): 1=Max, 2=Optimiert, 3=Keine Entladung.
- AQ4 (Entlade-Wert): Zielwert für Entladung (kWh / 6).
- AQ5 (Netz-Ladewert): wieviel h braucht das Netz für die PV Ladung (kWh / 9.5).
- AQ6 (PV-Potential morgen): wieviel kwh kann die PV morgen produzieren (korrigerter Wert)
- AQ7 (PV-Potential heute): wieviel kwh kann die PV heute produzieren (korrigerter Wert)
Der Merker Strompreis Brutto negativ, kommt von einem anderen Spotpreisoptimierer, wo ich als Preiskorrektur das Netz, die Abgaben und die Umsatzsteuer dazurechne.
Mit den erhalten Werten gehts weiter zu 2 Status Bausteinen, welche die Entscheidung über den PV-Betriebsmodus treffen (siehe Schaltbild "Batteriemanagement2), die Bedingungen findet ihr in den Bildern 4. Status Enladeprozess und 5. Status Batterie Automatik.
Für die Leistungsreduktion des Wechselrichters habe ich ebenfalls einen Status Baustein verwendet (6. Status Leistungsreduktion) --> wird im nächsten Post angehängt
Dann kommen wir schon zum Programm (wird im nächsten Post mit einer bisschen detailierten Beschreibung angehängt), welches den Wechselrichter und das Batteriemanagement steuert.
2. Programm: "Wechselrichter-Controller"
Dieses Programm steuert aktiv den Wechselrichter über Modbus. Es enthält einen "Gummiband-Regler" (Nullpunkt-Regelung) und einen Netzschutz. Eingänge (I1 - I13)
- I1 (Mode): Strategie-Modus (0=Entl.block bis 5=Netzladen).
- I3 (nRed): Reduktions-Modus (0=Normal, 1=Nullpunkt, 2=Saug).
- I4 (nMan): Manueller Modus-Override.
- I5/I6: Manuelle Lade-/Entladebegrenzung.
- I7 (evLaed): Wallbox aktiv?
- I9 (gMax): Max. erlaubte Netzleistung (z.B. 6000W).
- I10/I11: Leistungsdaten für Netzschutz.
- I13 (pGrid): Aktuelle Netzleistung (W).
- AQ1 (nMode): Aktiver Modus an Wechselrichter.
- AQ2/AQ3: Lade-/Entladelimits.
- AQ4 (WR-Limit): Leistungsbegrenzung in 0.01% (Modbus).
- AQ5 (Limit-Aktiv): Schaltet WR-Regelung ein/aus.
- AQ6 (Mode-Echo): Rückmeldung des aktuellen Modus.
Die Kombination beider Programme löst drei Probleme:
- Vorausschauendes Laden: Durch den Prognose-Manager wird die Batterie nur dann mit Netzstrom geladen, wenn die PV-Prognose morgen nicht ausreicht.
- Stabilität durch Dämpfung: Die Regelung im Wechselrichter-Controller verwendet eine Zykluszeit von 3 Sekunden (sleep(3000)) und einen Dämpfungsfaktor (0.1), um ein Schwingen des Wechselrichters zu verhindern.
- Netzschutz: Der Netzschutz greift hart ein, wenn der Bezug den Schwellwert (gMax) übersteigt, um das Stromnetz und die Hardware zu schonen.
- Zykluszeit: sleep(3000) ist essenziell für die CPU-Schonung und Stabilität der Modbus-Kommunikation.
- Dämpfung: Der Faktor 0.1 ist ein guter Startwert. Sollte der Regler zu langsam reagieren, kann er in 0.05er Schritten erhöht werden.
- Modbus-Werte: Sicherstellen, dass die Faktoren (wie FAKTOR = 0.01) genau mit den Registern deines Wechselrichter-Typs übereinstimmen.
Fragen oder Verbesserungen zum Programm beantworte ich gerne, aber wie gesagt, ich bin kein Programmierer noch kenn ich mich mit Modbus öder ähnlichem wirklich gut aus. ist alles Hobby...
LG und viel Spass
Kommentar