Beispiel Smarte Einspeisung-Limitierung mit der Solaranzeige

Micro Wechselrichter, die direkt an die 230V Steckdose angeschlossen werden können.

Moderator: Ulrich

Antworten
gzi
Beiträge: 153
Registriert: Mo 16. Jan 2023, 20:43
Hat sich bedankt: 20 Mal
Danksagung erhalten: 29 Mal

Beispiel Smarte Einspeisung-Limitierung mit der Solaranzeige

Beitrag von gzi »

Wer PV-Leistung über einen Grid-Tied Wechselrichter ins Hausnetz einspeist, speist auch Strom ins öffentliche Netz ein, wenn der eigene Verbrauch aktuell geringer ist als produzierte PV-Leistung.

Je nach lokalen Gegebenheiten kann es notwendig sein, das zu unterbinden oder zu limitieren.

Mit den Daten von einem Smart Meter und den Solaranzeige-Befehlen zur Leistungslimitierung des Wechselrichters kann eine smarte Einspeisungsbegrenzung realisiert werden.
In einem früheren Posting habe ich die Einbindung meines Smart Meters beschrieben. Dort ist auch eine Datei user_device.php angehängt, die mehrere Aufgaben erfüllt.

Hier möchte ich speziell beschreiben, wie dort die Einspeise-Limitierung funktioniert.

Einstellungen dazu werden im Abschnitt 1.4 der Datei user-device.php angegeben:

Code: Alles auswählen

// 1.4 (Null)Einspeisung durch Drosselung des Wechselrichters
$Einspeiselimit_W = 800; // Maximal erlaubte Einspeisung in Watt
Je nach gegebenen Umständen kann hier angegeben werden wie viel PV-Überschuss maximal ins öffentliche Netz eingespeist werden soll. Hinweis: Bei meinem Hoymiles- Wechselrichter, den ich über eine AhoyDTU ansteuere dauert es einige Minuten bis eine Drosselung des Wechselrichters tatsächlich greift. Daher ist eine exakte Limitierung nicht möglich.

Code: Alles auswählen

$MinutenAbstand = 7; // Abstand zwischen einer Anpassung der Einspeiselimitierung
Normalerweise wird der Code 1x pro Minute durchlaufen. Wegen der o.a. Verzögerung hat es aber keinen Sinn dem Wechselrichter jede Minute einen Befehl zu senden. Ich mache das daher nur jede siebte Minute.

Code: Alles auswählen

$Drosselbefehl = array( // Solaranzeige Befehl(e) zur Einspeiselimitierung der Wechselrichter (in Prozent)
	"http://solaranzeige.local/befehl.steuerung.php?url=http://solaranzeige.local:3000/d/99AhoyDTU001".
	"&config=2&befehl=I01PS_<limit>",
	"http://solaranzeige.local/befehl.steuerung.php?url=http://solaranzeige.local:3000/d/99AhoyDTU001".
	"&config=2&befehl=I02PS_<limit>");
Für jeden Einspeise-Wechselrichter, den man betreibt, muss man hier einen Befehl angeben. Die Struktur der Befehle kann man der Definition der Schaltflächen in den Dashboards entnehmen.
config=2 bedeutet: bei mir ist das Interface zu den Wechselrichtern (bei mir ist das eine AhoyDTU) in der 2.user.config.php definiert. befehl beschreibt den Solaranzeige-Befehl, der abgesetzt wird- Ich verwende eine AhoyDTU als Interface zum Wechselrichter. Der Aufbau der Befehle sieht in meinem Fall so aus:

I<WR-ID><unit><persistence>_<limit> wobei:
• <WR-ID> ... zweistellige Nummer des Wechselrichters z.B. 01, 02, 03 etc.
• <unit> .... W für Limit-Value in Watt, P für Prozent (hier immer P verwenden)
• <persistence> ... P für permanent, S für bis zum nächsten Restart
• <limit> ......... ganze Zahl die das Limit in Watt oder Prozent angibt

Der Platzhalter <limit> in den Drosselbefehlen wird laufend durch eine automatisch berechnete Prozentangabe ersetzt. Der Befehl=I01PP_85 bedeutet zum Beispiel : Inverter 01 permanent auf 85% limitieren. (siehe auch hier )

Code: Alles auswählen

$Wechselrichter_InfluxDB = "ahoydtu";
$Wechselrichter_Maesurement = "DTU";
Angabe in welcher Influx Datenbank und in welchem Measurement die Daten zur aktuellen PV-Leistung gelesen werden können.

Code: Alles auswählen

$Wechselrichter_AC_Leistung = "AC_Leistung";
Angabe wie die Spalte im Measurement heißt, die die aktuelle PV Leistung in Watt enthält.

Code: Alles auswählen

$Smart_Meter_InfluxDB = "DTSU666H";
$Smart_Meter_Maesurement = "Zaehlerstand";
Angabe in welcher Influx Datenbank und in welchem Measurement die Daten zum aktuellen Netzbezug bzw. zur aktuellen PV-Einspeisung gelesen werden können.

Code: Alles auswählen

$Smart_Meter_Netz_Leistung_W = "Netz_Leistung_W";
Angabe wie die Spalte im Measurement heißt, die die aktuell vom Netz bezogene Leistung in Watt enthält bzw. die Einspeisung, wenn es eine negative Zahl ist.

Code: Alles auswählen

$Drossel_InfluxDB = "DTSU666H";
$Drossel_Measurement = "Einspeisung";

Angabe in welcher Influx Datenbank und in welchem Measurement die Daten zur aktuell eingestellten Drosselung des Wechselrichters abgelegt werden sollen.
Der Code für die weitere Verarbeitung befindet sich im Abschnitt 4 der Datei user_device.php.

// 4.1 Mittelwert PV AC Leistung aus InfluxDb lesen (und für 5. bereitstellen)
Aus der Influx DB wird gelesen, wie viel PV-Leistung im Mittel der letzten 7 Messungen vom Wechselrichter ins Hausnetz eingespeist wurde.

// 4.2 Netz-Bezug / Netz-Einspeisung aus InfluxDb feststellen (und für 5. bereitstellen)
Falls kein Netz-Bezug vom Smart Meter gelesen werden könnte oder falls gerade ins Netz eingespeist wird, wird der Netz-Bezug als Mittelwert der letzten gespeicherten 7 Messungen berechnet.

// 4.3 bisherige Drossel aus influxDB lesen (und für 5. bereitstellen)
// Drossel ist ein Wert zwischen 0 (0% WR-Leistung) und 1 (100% WR-Leistung)
Der zuletzt eingestellte am Wechselrichter eingestellte Drosselfaktor 100% bis 0% wird aus der influx DB gelesen.

// 4.4 Einspeiselimit (Drossel) alle $MinutenAbstand Minuten prüfen
Es wird zuerst berechnet wie hoch die aktuelle AC Leistung wäre, wenn er ungedrosselt läuft. Falls diese Leistung höher wäre als die aktuelle Last plus dem Einspeiselimit – also wenn es ungedrosselt zu einem Überschreiten des Einspeiselimits käme, dann wird ein neuer Drosselfaktor berechnet.

// 4.4.2 Drossel in Wechselrichtern einstellen
Falls sich der neue Drosselfaktor nennenswert vom alten unterscheidet, wird er neu bei den Wechselrichtern eingestellt. Hinweis: Gibt es mehrere Wechselrichter, dann werden alle um den geichen Faktor limitiert.

// 4.4.3 neue Drossel in influxDB Measurement Einspeisung speichern
Schließlich wird der neue Drosselfaktor in der Influx DB abgespeichert. Dort kann man sich das dann auf der Raspi Kommandozeile ansehen:

Code: Alles auswählen

pi@solaranzeige:~ $ influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> use DTSU666H
Using database DTSU666H
> select * from Einspeisung order by time desc limit 15
name: Einspeisung
time                 Drossel          Load            Ungedrosselte_AC_Leistung_W
----                 -------          ----            ---------------------------
2023-03-23T09:07:01Z 1                275.47142857143 1070.7353497892
2023-03-23T09:00:01Z 0.63441046792699 251.68571428571 1512.6989548366
2023-03-23T08:42:01Z 0.60712817369875 116.72857142857 1434.4074976531
2023-03-23T08:28:01Z 0.85973962171457 193.77142857143 1124.2857142857
2023-03-21T10:29:01Z 1                223.75714285714 810.90783320931
Vom 21.3. 10:29 lief die Anlage ungedrosselt. Ab 23.3. 8:28 wurde sie auf 85,9% limitiert, um 8:42 auf 48% . Um 9:00 wurde das Limit dann auf 63% erhöht und danach wieder ganz aufgehoben.
Raspi 3B, Hybrid Must PV18-3024 VHM, Hoymiles HM-800 , Nachteinspeisung, Flex-BKW, AhoyDTU, Smart Meter DTSU666-H, DIY Akku 6,7 KWh, DalyBMS2MQTT, Victron2MQTT,Architektur, HomeMatic CCU. Autor: Solaranlage Do-It-Yourself

Antworten

Zurück zu „Balkonkraftwerke ( PV-Kleinanlage DIN VDE 0100-551 / -1 )“