NEWS
Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden
-
@manny4566 said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
Der WR selbst hört ja auch auf die ID 1 auf seinem LAN Port.
Habe das jetzt so angeschlossen. Beide Ethernet-Anschlüsse angeschlossen. Mein Programm fragt über den einen Ethernet-Adapter ab, ioBroker über den WiNet-S-Adapter. Vielleicht vermeidet das ja auch Kollisionen.
In meinem Programm fällt mir auf, dass die Abfrage aller Register insgesamt 8 Sekunden dauert - egal ob WiNet oder der normale Ethernet-Anschluss benutzt wird.
Das heißt aber auch, dass im ioBroker die Daten zeitlich weit auseinanderliegen können und deshalb die Summen, für die augenblicklichen (Leistungs)-Daten, vermutlich meist nicht wirklich aufgehen. -
Hallo,
inzwischen habe ich die Input-Register für meinen SGH10RT richtig gesetzt. Wobei ich diesen per WiNET ansteueere (falls dies einen Unterschied macht). ich habe folgende Werte: Sungrow ModBus InputRegister - SH10RT.tsv
Ein Problem habe ich mit der Batterie-Leistung. Diese wird mir nur ohne Vorzeichen ausgegeben. Ich kann also nicht zwischen Laden und Entladen unterscheiden. Gerade für eine grafische Darstellung wäre dies aber hilfreich.
Hat jemand einen Tipp für mich, wie ich erkennen kann ob die Batterie geladen der entladen wird?
Vielen Dank!
-
-
@d-franz said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
Hat jemand einen Tipp für mich, wie ich erkennen kann ob die Batterie geladen der entladen wird?
Ich denke, man muss die Felder untersuchen und dann entscheiden. Ich habe mir das, wie ich denke, dass es funktionieren müsste, mal als Blockly zusammengetragen
(Korrigiert: Stand: 22.2.2023 - 19:30)Korrekturen:
- In der Function "isBatteryChargingFromGrid" war der Vergleich von loadPower und exportPower verkehrt.
- In der Function "isBatteryDischarging" fehlte der untere Logikteil "falls IsBatteryCharging == falsch".
Insgesamt habe ich jetzt diese Anzeige:
- Für importierten Strom wird die Zahl rot unterlegt.
- Entladen der Batterie wird, wie hier, mit einem roten "D", laden würde mit einem gelben "C" angezeigt. Ausserdem habe ich mir mit dieser letzten Korrektur noch die Möglichkeit geschaffen anzuzeigen, ob die Batterie aus dem Netz oder von PV geladen wird.
Damit man das Programm nicht eintippen muss, füge ich den XML-Export davon bei. Dann kann jeder, der Verbesserungspotential oder Notwendigkeit von Korrekturen sieht, das anfügen (und hoffentlich hier posten).
Einfach unter Blockly importieren.
BatteryChargingDischarging.xmlGegenüber gestern habe ich die Parameterübergabe korrigiert. Außerdem das Laden aus der PV getestet. Das Skript funktioniert zumindest dafür.
Das Laden der Batterie aus dem Netz konnte ich nicht testen. Und Entladen auch nicht. -
@manny4566
Hier noch mein Code aus Beitrag #337 wie von @manny4566 erwähnt.
Ergebnis ist ein der Datenpunkt 0_userdata.0.PV_Datenpunkte.Berechnung_Batterieentladung_negativ
unter userdata<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="(ocA``hXb:ASln87_[5i">PV Akku Be- oder Entladung</variable> </variables> <block type="on_ext" id="ehBZF8`0,PKLSMKg__PB" x="-2012" y="-487"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="0m^saRA]WjVCQ`9A%2n8"> <field name="oid">modbus.0.inputRegisters.13007_Load_power_</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="F`@4}oyq-b-2|/kYbR$U"> <field name="VAR" id="(ocA``hXb:ASln87_[5i">PV Akku Be- oder Entladung</field> <value name="VALUE"> <block type="math_arithmetic" id="1Zv4~dL0,_aGpt}7[_kP"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="d[QgpJU-{V|[)Y8g,,:@"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="5||kb1lHC-qwY!85c3KH"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="lWjzQ^1^A)~nyY4K}k/%"> <field name="NUM">1</field> </shadow> <block type="get_value" id="v|oqCDrxh=7lS_fPh~*["> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.5016_Total_DC_Power</field> </block> </value> <value name="B"> <shadow type="math_number" id="hMTHE%-|Fip{Z1M$2d7y"> <field name="NUM">1</field> </shadow> <block type="get_value" id="pQL:D)uc#*C|yW94;;1U"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.13007_Load_power_</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="LWB:(CTORxv:`-#$RF=q"> <field name="NUM">1</field> </shadow> <block type="get_value" id="E}0?u4:S)mn)6}@G9fd]"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.13009_Export_power</field> </block> </value> </block> </value> <next> <block type="update" id="(TMX3NmoY?k,I8B2]p?C"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.PV_Datenpunkte.Berechnung_Batterieentladung_negativ</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="p$a.=$hGsH%AenyyxPI!"> <field name="VAR" id="(ocA``hXb:ASln87_[5i">PV Akku Be- oder Entladung</field> </block> </value> </block> </next> </block> </statement> </block> </xml>
Mir freundlichen Grüßen aus Bad Friedrichshall wo ich heute um 0,1 kW an 100%-Autarkie über Nacht vorbeigeschrammt bin ;-). Eine Minute früher Sonne und es hätte gereicht
-
Hallo zusammen,
ich habe mir erlaubt für Skripte ein neues (Folge) Thema aufzumachen.
Findet ihr hier.
https://forum.iobroker.net/topic/63226/sungrow-wr-sgh10rt-modbus-ioskripte
Hoffe das passt für euch und es wird angenommen. Hier gehen evtl. interessante Skripte unter, bei aktuell über 300 Einträgen
-
ich habe mir erlaubt für Skripte ein neues (Folge) Thema aufzumachen.
Die Idee ist gut, danke dafür. Aber Du solltest vielleicht eher das Blockly als Bild zeigen und den Export als File.
-
@gombersiob sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
ich habe mir erlaubt für Skripte ein neues (Folge) Thema aufzumachen.
Die Idee ist gut, danke dafür. Aber Du solltest vielleicht eher das Blockly als Bild zeigen und den Export als File.
Das sorgt sicher für mehr Übersichtlichkeit. Schaue dass ich es morgen umsetze
-
@mraiobroker : Vielen Dank! Diese Lösung gefällt mir sehr gut.
-
@d-franz said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
Vielen Dank! Diese Lösung gefällt mir sehr gut.
Die Rechnung entscheidet aber nicht, ob entladen oder geladen wird. Das war doch das, was sie wissen wollten. Außerdem ist sie unnötig. Denn egal, ob geladen oder entladen wird, sagt Ihnen doch die Battery Power, wie groß die anliegende Leistung ist.
Diese drei Szenarien sehe ich gerade bei mir bzgl entladen.
Und ich habe mir mal eine Entscheidungsmatrix gemach um zu sehen, was meiner Meinung nach, bezüglich Batterieladung derzeit möglich ist:
Beides, Laden und Entladen gleichzeitig (z.B. Laden aus PV und Wietergabe an Hausnetz), ist mir noch nicht begegnet. Es macht keinen Sinn und ist vermutlich nicht möglich.Man könnte jetzt ermitteln wie sich der Ladestrom bzw Entladestrom auf die verschiedenen Quellen verteilt - das geht aber nur über den Vergleich der Zahlen.
-
Doch die Rechnung kann das, weil der Export das korrekte Vorzeichen liefert
Einfach ausprobieren -
@mraiobroker said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
Doch die Rechnung kann das, weil der Export das korrekte Vorzeichen liefert
Du hast recht. Ich bin auf dem Papiere jetzt mal alle Fallunterscheidungen durchgegangen. War ein bisschen Arbeit - und ja. Es stimmt!
Hier mein Beweis:
Sei PV der erzeugte Strom, LP der verbrauchte Strom und EP der Strom am Netz- PV = 0: Dann ist -EP größer oder gleich LP, denn das Haus wird aus dem Netz versorgt und vielleicht die Batterie noch geladen
das heißt zwangsläufig 0-LP-EP >=0. - PV > 0: Dann gibt es zwei Fälle:
- PV < LP: Dann muss Strom importiert werden: -EP >= PV - LP. EP versorgt also LP und lädt vielleicht auch die Batterie. PV-LP-EP>=0
- PV > LP: Dann gibt es wiederum drei Fälle:
- EP = 0: Dann ist PV-LP-0>0, die PV gibt den überschüssigen Strom an die Batterie (lädt!)
- EP > 0:
- Wenn EP > PV-LP ist, dann bedeutet das, dass Strom aus der Batterie entladen wird und PV-LP-EP<0. Passt
- Wenn EP < PV-LP ist, dann versorgt die PV sowohl das Netz (und es ist noch Strom da!) auch die Batterie: PV-LP-EP < 0. Passt auch!
- EP < 0: Das heisst es wird Strom importiert. Da PV ja größer als LP ist wird also Strom an die Batterie abgegeben, wo soll er sonst hin. PV-LP-EP>0. Passt auch.
Damit wäre das jetzt auch logisch geklärt!
- PV = 0: Dann ist -EP größer oder gleich LP, denn das Haus wird aus dem Netz versorgt und vielleicht die Batterie noch geladen
-
@gombersiob
Hallo gombersiob,
liest Du den modbus über Winet Adapter aus?
Das war mein Problem. Deshalb war bei mir auch das Running State Register permanent auf 0.
Nach Umstöpseln auf den separaten LAN Port und Umstellung der IP im ModbusAdapter wird bei mir das 13000 Register sauber befüllt.Gruß
Rana -
@rana said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
Nach Umstöpseln auf den separaten LAN Port
Ja, das hat geholfen. Danke!
Da es hier einen Unterschied gibt, habe ich mir die Register-Werte aus WiNet-S und dem separaten LAN-Port mal angeschaut. Folgende Unterschiede sind mir aufgefallen
Es scheint mir sinnvoll zu sein, eher auf die Daten vom separaten LAN-Port zu setzen! Es scheint eher der Dokumentation zu entsprechen.
-
ich bin seit 3h am googlen und suchen, bekomme aber mein Problem nicht gelöst.
Seit ich am WE zum ersten mal erfolgreich den Akku mit 200W testweise geladen habe und alle von mir veränderten Holding Register im Anschluss auf ihren vorherigen Wert zurück gestellt habe, weigert sich mein SH10RT hartnäckig im "EMS Mode 0" den Akku zu laden.
Der Hausstrom wird ausgeregelt und ich kann den Akku auch weiterhin im "EMS Mode 2" zwangsladen - aber es fließt eben kein Strom von der PV in den Akku, wenn ich es wieder auf 0 stelle.Habe inzwischen alles mögliche probiert (außer Neustart des Systems, aber das kann ja nicht die Lösung sein?)
Hat jemand einen Tipp?Hier mal meine aktuelle Konfig.
ergibts sich zu:
und sobald ich EMS Mode auf 0 setze (alles andere bleibt gleich):
[EDIT]Achso, ich sollte noch hinzufügen, dass vor meinem ersten modbus-test alles 1A wie es sollte funktioniert hat.
-
@mub said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:
EMS Mode 2
Dazu kann ich nicht viel sagen. Ich sehe für mich derzeit keinen Anlass, die Batterie aus irgendeinem Grund zwangsladen zu wollen. Nur manchmal, wenn der Wechselrichter exportiert anstatt die Batterie zu laden, möchte ich eingreifen können. Aber wirklich viel ist es nicht, was an Energie falsch abfließt, wenn ich mir die Summen betrachte. Und ab jetzt, wo mehr Sonne zu sehen ist, ist es mir auch fast egal ob die Batterie etwas früher oder später voll geladen ist.
Bezüglich des Einflusses auf die Register würde ich, nach meinen Erfahrungen die ich direkt vor Deinem Eintrag geschildert habe, wirklich mal versuchen den Port zu wechseln. Das Verhalten, zumindest was die Auswertung der Register betrifft, ist auf dem LAN-Port anders als auf dem WiNet-S-Adapter.
Das zweite Bild aus der iSolarCloud erscheint mir aber auf den ersten Blick plausibel. Es wird genausoviel Strom erzeugt wie verbraucht wird - es bleibt also nichts zum Laden oder Exportieren.
Wobei das auch schon ein merkwürdiger Zufall ist, dass die Zahlen so genau passen. Ist PV-Power auf die Load-Power gedrosselt? Es gab ja mal die Einschränkung auf 70% Einspeisung. Die Funktionalität zum Drosseln ist also da. -
@mub
Ich würde beides neu booten, WR und Akku
Dann lokal anmelden und die Einträge über die App vornehmen. Ggf nochmal booten -
Ein Neustart hat das Problem nicht behoben, ich konnte es jetzt aber lösen.
wenn man im Register 13050 -> EMS_Mode_selection eine 2 ("Handsteuerung") setzt, muss man auch einen Wert für Start Charging Power Register 13052) setzen, sonst geht es nicht los.
Wenn man dann aber in den Automatikmodus zurück geht muss man das Register 13052 wieder auf 0 stellen, sonst lädt er die Batterie nicht.
Zumindest gehe ich aktuell davon aus, dass das das Problem war.
Ist mir persönlich bissl unklar warum man das so macht, hauptsache es läuft wieder alles.
-
@mub Ich habe dieses Verhalten auch schon in der App beobachtet.
Der netzunabhängige Betrieb musste nicht nur deaktiviert werden, ich musste auch gleichzeitig den Prozentsatz des reservierten SOC auf 0% setzen. -
Ich habe Probleme mit meiner Rechnung bezüglich der Batterie.
Ich rechne einen Erwartungswert über den Füllstand aus:BatterieStand am Anfang (= Level * Kapazität / 100) + Charging in der Zeit von Anfang bis "jetzt" (Register 13040) - Discharging in der Zeit von Anfang bis "jetzt" (Register 13026) ____________________________________________________________________ = Erwarteter Füllstand
Vom erwarteten Füllstand ziehe ich den gerade gezeigten tasächlichen Füllstand (Level * Kapazität/100) ab und habe damit meine Verluste.
Gerade eben habe ich aber für diese Verluste einen negativen Wert - irgendwoher hat sich die Batterie gefüllt - aber ich weiß nicht woher.
Wenn ich also eine leere Batterie habe und sie mit 8,2kHh fülle, erwarte ich maximal einen Füllstand von 8,2kWh. Es sind aber, laut ModBus 9,6kWh drin (100% voll).
Kann das jemand hier erklären?