Hybrid Wechselrichter Sungrow SH10RT und Speicher Einbindung in IPS

Hallo Zusammen

ich bekomme eine PV-Anlage mit ca. 20kWp.
Der Hybrid-Wechselrichter ist von Sungrow SH10RT.
Die Batterie ist von Sungrow SBR224.

Ich möchte gerne die daten auslesen und in der IP-Symcon verarbeiten und auswerten.
Hat damit jemand Erfahrungen?
Ich betreibe zuhause eine KNX Anlage.

Ich danke euch für Euere Unterstützung.

Sollte über Modbus ohne Probleme möglich sein. Bei den Sungrow Geräten nutzt man dazu den Netzwerkanschluss am Gerät. Über den Dongle kommen wohl nicht alle Daten.

Danke für deine Antwort.
Muss ich denn noch irgendein Gerät installieren für das Modbus Signal oder kann die IPS das schon?

Das kann IP-Symcon von Haus aus.

Hallo Zusammen

Meine PV-Anlage ist nun installiert.

Garage:
24 Module á 400 Wp = 9,6 kWp
Sungrow Hybrid Wechselrichter sh10rt

Hauptdach:
33 Module á 400Wp = 13,2 kWp
Sungrow Hybrid Wechselrichter sh10rt
Sungrow SBR 224 22,4kWh Speicher

Ich bin jetzt angefangen per Modbus die Daten aus den beiden Wechselrichtern auszulesen.

Hallo, ich habe zwar nicht den gleichen Wechselrichter, aber einen SG10RT im Einsatz.
Daraus polle ich per Modbus die wichtigsten Werte in Symcon.

Wie schon geschrieben wurde, ist es wichtig, dass der Netzwerkanschluss per Kabel genutzt wird. Den Dongle habe ich bei mir trotzdem dran, aber nicht so, dass er per WLAN auf mein Netzwerk zugreift, sondern per LAN Kabel, welches am Dongle unten dran steckt. Wer so ein Dongle besitzt, weiss dass man unten ein Netzwerkkabel anstecken kann.
Damit lässt sich der Dongle so konfigurieren, dass er über das LAN Kabel die Verbindung ins eigene Netzwerk und zur Sungrow Cloud aufbaut.

Wenn das Teil also im eigenen Netzwerk erkannt ist benötigt man dann die IP Adresse davon. Diese benötigt man für die Modbus Schnittstelle (Client Socket) in Symcon.
So sieht es bei mir aus:

Ausserdem braucht man noch ein Modbus Gateway. Bei mir hat das standardmäßig die Geräte-ID 1. Das ist so auch in meinem Wechselrichter als Standard vorgegeben gewesen.
So sieht das bei mir aus:

Und dann benötigt man die eigentlichen ModBus Devices zum Auslesen der Register des Wechselrichters. Dazu musst Du die Register Deines Wechselrichters haben bzw. suchen.
Einfach mal danach bei Tante Google nach „Modbus Register SH10RT“ suchen. Dort wirst Du bestimmt fündig.

Um Dir ein Beispiel zu geben, zeige ich Dir ein ModBus Device meines Wechselrichters.
Das ist die Tagesproduktion:

Wie Du siehst, hat dieser Wert bei meinem Wechselrichter die Adresse 5002 und ich muss den ankommenden Wert durch 10 Teilen, damit er richtig ankommt. Aktuell 0,00 kWh, weil die Sonne noch nicht aufgegangen ist. :wink:
Der Intervall steht auf 0 Millisekunden, weil ich selbst entscheiden will, wie oft ich den Wert polle (abhole).
Hintergrund ist: Modbus ist nicht uneingeschränkt abrufbar. Es gibt klar definierte Grenzen.
Deshalb rufe ich diesen Wert nur alle 5 Minuten ab. Insgesamt rufe ich 7 Werte ab, alle 5 Minuten. Bisher hat sich die Modbus Schnittstelle damit auch nicht verschluckt und funktioniert zuverlässig.

Ich bin kein ModBus Spezialist, aber wollte hier nur eine kleine Starhilfe geben, falls nötig.
Gerne kannst Du mich aber gerne fragen, falls Du es auf Anhieb nicht hinbekommen solltest.

Gruß, Nico.

1 „Gefällt mir“

Mit den meisten Abfragen klappt es soweit. Bin seid einiger zeit dabei den Energie Fluss zu aufzuzeigen leider mit nicht so großem Erfolg.

Bin zur zeit mit dem Register 13000 (13001) „Running state(Power flow)“ am auswerten aber die werde die ich dort bekomme passen nicht. Akku wird geladen aber der wert bleibt bei 0.
Ich bin leider nicht so gut im Skripte schreiben mittels PHP vll. kann mir da jemand weiter helfen bzw. hat eine Idee was ich fasch mache.

<?php
    //ModBus Appendix1.2 Running state abfrage 
    // SUNGROW SH10RT
    //
    //KE
    //Erstellt: 2023-03-10
    //last update: 2023-03-10 V1.0


// Running state Wert abfragen aus IP-Symcon
    $abfrage=GetValue(30678);

//wert umwandeln in binär
    $binär=decbin($abfrage);

//binär auffüllen auf 8 stellen mit nullen links auffüllen
    $binär8=str_pad($binär, 8, 0, STR_PAD_LEFT);

//binär wert in einzele ziffer auflösen und in einem array schreiben
    $ziffern = str_split((string) $binär8);

// binär8 einzele ziffern in einzele variablen schreiben
    $bit0=$binär8[0];
    $bit1=$binär8[1];
    $bit2=$binär8[2];
    $bit3=$binär8[3];
    $bit4=$binär8[4];
    $bit5=$binär8[5];
    $bit6=$binär8[6];
    $bit7=$binär8[7];

//ziffern mit namen versehen

//Bit0 PV power
    //Bit0 == 0 No power generated from PV
    //Bit0 == 1 Power generated from PV
    if($bit0==0){
        $bit0_name="No power generated from PV";
    }else   {
          $bit0_name="Power generated from PV";
        }

//Bit1 Battery charging
    //Bit1 == 0 Not charging
    //Bit1 == 1 Charging
    if($bit1==0){
        $bit1_name="Battery Not charging";
    }else {
        $bit1_name="Battery Charging";
    }

//Bit2 Battery discharging
    //Bit2 == 0 Not discharging
    //Bit2 == 1 Discharging
    if($bit2==0){
        $bit2_name="Battery Not discharging";
    }else {
        $bit2_name="Battery Discharging";
    }

//Bit3 Positive load power
	//Bit3 == 0 Load is reactive
	//Bit3 == 1 Load is active
    if($bit3==0){
        $bit3_name="Load is reactive";
    }else {
        $bit3_name="Load is active";
    }

//Bit4 Feed-in power
        //Bit4 == 0 No power feed-in the grid
        //Bit4 == 1 Power feed-in the grid
    if($bit4==0){
        $bit4_name="No power feed-in the grid";
    }else {
        $bit4_name="Power feed-in the grid";
    }

//Bit5 Import Power from grid
		//Bit5 == 0 No power imported from the grid
		//Bit5 == 1 Importing power from grid
    if($bit5==0){
        $bit5_name="No power imported from the grid";
    }else {
        $bit5_name="Importing power from grid";
    }

//Bit6 Reserved 
        //Bit6
    if($bit6==0){
        $bit6_name="Reserved 0";
    }else {
        $bit6_name="Reserved 1";
    }

//Bit7(Refitting System) Negative load power
        //Bit7 == 0 No power generated from “Load”
        //Bit7== 1 Power generated from“Load”
    if($bit7==0){
        $bit7_name="No power generated from “Load”";
    }else {
        $bit7_name="Power generated from“Load”";
    }
//umwandeln von integer in Boolean
//danach
//Schreiben in einer Variable
  //PV power
    $bit0ID ="50604";
    $bit0t= (bool) "$bit0";
    SetValueBoolean($bit0ID,$bit0t);
//Battery charging
    $bit1ID ="31708";
    $bit1t= (bool) "$bit1";
    SetValueBoolean($bit1ID,$bit1t);
//Battery discharging
	$bit2ID ="57289";
    $bit2t= (bool) "$bit2";
    SetValueBoolean($bit2ID,$bit2t);
//Positive load power
	$bit3ID ="48222";
    $bit3t= (bool) "$bit3";
    SetValueBoolean($bit3ID,$bit3t);
//Feed-in power	
	$bit4ID ="55612";
    $bit4t= (bool) "$bit4";
    SetValueBoolean($bit4ID,$bit4t);
//Import Power from grid	
	$bit5ID ="20965";
    $bit5t= (bool) "$bit5";
    SetValueBoolean($bit5ID,$bit5t);
//Reserved	
	$bit6ID ="32756";
    $bit6t= (bool) "$bit6";
    SetValueBoolean($bit6ID,$bit6t);
//(Refitting System) Negative load power	
	$bit7ID ="28634";
    $bit7t= (bool) "$bit7";
    SetValueBoolean($bit7ID,$bit7t);
    
?>

Hallo Ralamon,
ich habe auch seit kurzem einen Sungrow SH10RT, das auslesen aller Werte klappt super. Aber eine Frage hätte ich, konntest Du das auslesen des Registers 13000 bzw. 13001 lösen? Bei mir steht im Register 13000 immer 0 bzw. 2 im 13001.

Für eine kurze Rückmeldung wäre ich sehr dankbar.

Grüße Torsten

Edit: Hat sich erledigt, habe die Ursache gefunden. Ich hatte die LAN Schnittstelle von WiNET benutzt, über diese konnte ich die Werte auslesen aber anscheinend nicht alle. Als ich die Feste LAN Schittstelle für Modbus benutzt habe ging es dann.

Gruß Torsten

Wieviele Register können in welchen Zeitscheiben abgefragt werden ohne dass der Modus abstürzt?
Klar, die meisten werden nicht sekündlich benötigt, aber wo ist die Grenze?