# Modbus TCP & SunGrow Wechselrichter



## Fragsau (11 Oktober 2022)

Hallo Leute,

ich verzweifle gerade an der Kommunikation per ModBus TCP mit einem SunGrow Wechselrichter.
Als ich endlich mit Hilfe des Forums einen Datenaustausch hinbekommen habe und diese nur "komisch" waren, dachte ich, es liegt nur noch an der Formatierung...

Irgendwie dann doch net.
Angehängt habe ich die PDF, die die Register beschreibt. Wichtig ist der Hinweis auf Seite 22, dass die Nummern alle -1 gerechnet werden müssen. Zumindest verstehe ich das so, aber Sinn macht das keinen...

Ich habe dann einen ModBus-Slave in meiner Steuerung konfiguriert:



Durch den generierten Code bekomme ich nun auch Daten, aber ich bekomme sie nicht korrekt zugeordnet/formatiert.
Erst dachte ich, dass ich es raus hätte (paar UINT's haben gepasst), aber plötzlich sind sie verschoben... Ich hab zuvor nur einen Wert oben gelöscht und unten eingepflegt...

Außerdem passiert noch etwas komisches, was ich mir nicht erklären kann.
Diese 4 Werte sind unterschiedlich von der Byte-Reihenfolge konfiguriert, aber liefern den selben Wert????






Irgendwie dachte ich, dass vielleicht am Anfang und am Ende Werte wie Header oder Footer gesendet/empfangen werden. Das würde absolut keinen Sinn machen, da man ja speziell ein Register anspricht. Aber gerade bei den 4 Werten hier drüber, hatte ich mit einer anderen ModBus-Konfig auch 4 unterschiedliche Werte und auch einen "korrekte". Sobald ich die Konfig dann wieder anpasse, verliere ich auch den funktionierenden Wert, obwohl ich diese Variabel nicht geändert habe (Ja, ich habe es mehrfach ausprobiert, da ich natürlich auch dachte "Oh F*** falsches geändert/gelöscht")...

***EDIT***
Ich muss mich hier korrigieren, sind nicht 4 mal der gleiche Wert, sondern 2 unterschiedliche, die ich aber so auch bei der Konfig nicht erwarten würde...

Viele meiner Felder bleiben auch 0, obwohl dort ein Wert zu erwarten wäre.

Irgendwie komme ich nicht auf einen grünen Zweig.
Ich hoffe ihr habt eine Idee.
Wenn noch Infos fehlen, bitte verzeiht mir, ich liefere die gerne nach.

Vielen Dank schonmal.


----------



## holgermaik (11 Oktober 2022)

Versuche nicht alles auf einmal.
Als erstes musst du die Adressverschiebung herausfinden. Dazu eignet sich ein definierter Wert. z.B. Adresse 13030.
diese Adresse 3x lesen.
1. 13029
2. 13030
3. 13031
jeweils Big Endian als UINT.
Danach kannst du deine Variablen entsprechend definieren.


----------



## Fragsau (11 Oktober 2022)

Hi,

danke für deine Antwort.

Ich hatte es natürlich zunächst nur mit einem Wert getestet.
Diese Werte sind ja auch plausible, der Wert, sowie die Position:


Sie stimmen "exakt" mit denen aus der APP überein.

Auch dieser Wert ist nachvollziehbar, allerdings unter einer anderen Bedeutung  



Daher vermute ich irgendwie, dass entweder meine Liste nicht stimmt oder ich echt nen dummen Fehler mit den DINT's und UDINT's mache... Die UINT's scheinen ja zu gehen... zumindest nen paar 🙃


----------



## Fragsau (11 Oktober 2022)

Hier noch das Ergebnis mit den 3 Werten:




Laut Tabelle wären es folgende Werte:


Wobei in dieser Liste schon das "-1" berechnet ist... 🙃

Das wären wohl die zu erwartenden Werte:



Also würden die ohne Umformung auch passen....



Also passen die Werte in der Tabelle mit den Werten auf der Schnittstelle überein... Wobei es in dem Fall ja sogar INT sind und keine UINT.
ModBus-Konfig auf INT geändert, ändert sich gott sei dank nur der erste wert 🤟


----------



## Oberchefe (11 Oktober 2022)

Steht doch klar in der Doku, Beispiel Ströme: Datentyp S16 also Signed mit 16 Bit oder auch INT, 1 entspricht 0,1Ampere.
Deine Ströme sind von der Adresse noch um eins verschoben und starten mit der Variable MBCFG_Wechselrichter.P13030 (anstatt ...13029).


----------



## Fragsau (11 Oktober 2022)

Jup, das habe ich ja geschrieben, wie gesagt, die paar UINT-Werte haben ja auch bisher funktioniert... 
Aber halt nicht alle und besonders die DINT-Werte machen probleme...


----------



## Fragsau (11 Oktober 2022)

OK, keine Ahnung, warum, aber jetzt hab ich viel mehr plausible Werte:



Bei dem Wert 13007 (aktuelle Stromverbrauch des Hauses) ist noch ein Fehler drin. Laut der App verbrauche ich im Moment 511W

Warum geht das auf einmal... ich bin echt verwirrt...


----------



## Oberchefe (11 Oktober 2022)

Ich weiß nicht was die Wago macht, wenn du ein und dieselbe Adresse mehrmals mit unterschiedlicher Bytereihenfolge liest. Möglicherweise wird da dann für alle die gleiche Bytereihenfolge verwendet.
StartData und LoadPower_13007 lesen auch wieder die gleiche Adresse?


----------



## Fragsau (11 Oktober 2022)

Ja, da stimme ich dir zu, kann ich auch nicht sagen.
Hab die allerdings auch nur rein gemacht, um eine mögliche Verschiebung herleiten zu können.
Aktuell ist keine doppelte Abfrage/Register mehr konfiguriert...

Noch jemand eine Idee zu den UDINT's?


----------



## Hesse (11 Oktober 2022)

Bei wago bin ich raus aber eine 
Neueres "Communication Protocol of Residential Hybrid Inverter"
gibt es schon .


----------



## Hesse (11 Oktober 2022)

Du verwendest den hinteren Lan Anschluss?
Nicht der am „WLan Modul“, dieser arbeite zwar zuverlässiger, liefert aber nicht alle Register.
Wenn der hintere nicht mehr antwortet dann Netzwerk Abziehen und ca. 1 Minute warten und wieder einstecken.
Bei den „vielen Tests“ schmiert der Anschluss gern mal ab. Bekanntes Problem......


----------



## Fragsau (11 Oktober 2022)

Hi,

vielen Dank für die neue Liste, kann ja nie schaden, aber leider habe ich da keinen Unterschied in dem betroffenem Register gefunden.

Ja, ich nutze den hinteren Port.
So wie ich das gelesen hatte, kann der vordere gar kein ModbusTCP. Aber nicht alle Register wäre ja zumindest mehr als gar nichts 


Jetzt habe ich wieder mein "Problem".
Eben hatte ich noch fast überall einen Wert, dann ändere ich die Konfig und lade mit OnlineChange und es bei vielem nur Mist rüber...
Vielleicht hat es ja mit dem onlineChange zu tun...
Werde ich mal testen...


**** EDIT
Oh mann... es ist wirklich "NUR" der OnlineChange.
Sobald man also die Konfig ändert, bietet Wago zwar einen OnlineChange an, weil nur "maginale" Änderungen durchgeführt wurden, aber scheinbar ist es doch nicht genug...

Vielen Dank allen fürs Mitdenken, aber vielleicht hilft der Beitrag ja dem nächsten bei der Fehlersuche ...


----------

