Modbus TCP & SunGrow Wechselrichter

Fragsau

Level-2
Beiträge
71
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
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:
1665487744216.png

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????
1665487884139.png

1665487946485.png

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.
 

Anhänge

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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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:
1665505444655.png
Sie stimmen "exakt" mit denen aus der APP überein.

Auch dieser Wert ist nachvollziehbar, allerdings unter einer anderen Bedeutung :cool:
1665505500389.png

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 🙃
 
Hier noch das Ergebnis mit den 3 Werten:

1665505870210.png

Laut Tabelle wären es folgende Werte:
1665505925041.png
Wobei in dieser Liste schon das "-1" berechnet ist... 🙃

Das wären wohl die zu erwartenden Werte:
1665506042673.png

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

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 🤟
1665506293544.png
 

Anhänge

  • 1665506021312.png
    1665506021312.png
    4,8 KB · Aufrufe: 15
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).
 
OK, keine Ahnung, warum, aber jetzt hab ich viel mehr plausible Werte:
1665510925761.png

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...
 

Anhänge

  • 1665510921167.png
    1665510921167.png
    53,3 KB · Aufrufe: 17
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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......
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 ...
 
Hallo,

ich habe das System jetzt nur etwas länger im Einsatz und hab mehrere Verbraucher abhängig von der Überschuss-Produktion geschaltet.
Allerdings werden die zwischenzeitlich wieder ausgeschaltet, weil die Verbindung zu dem Wechselrichter zwischenzeitlich "einfriert".
Das äußert sich so, dass die Daten für lange Zeit gleich bleiben. Ich beobachte dabei den Produktions-Wert, dieser kann ja über einen Zeitraum nicht den gleichen Wert behalten.

Kennt jemand so ein Problem?
Manchmal regelt sich das System wieder von alleine ein, aber in seltenen Fällen muss ich das Netzwerkkabel für 1min ziehen.
Danach ist erst wieder ein Datenaustausch möglich.

Vielen Dank.
 
Kennt jemand so ein Problem?
Ja.....

Testen :

1. Schneller bzw. öfters abfragen … Das die Verbindung nicht geschlossen wird
2. Nur eine Gerät mit dem Sungrow kommunizieren lassen

Notlösung:
Ein Switch vor den Netzwerkanschluss und diesen über ein DO für 2 Minuten abschalten, wenn die Werte sich nicht mehr Aktualisieren …

>>
Ich habe das Problem eigentlich nur noch, wenn ich die S7-1200 in Stopp schalte.
Tia (v15.1) will ja leider immer mal ein Stopp ohne dass man den Sinn erkennen kann.
 
Also wie schnell machst du es und hast keine Probleme mehr?
Bei mir läuft es stabil mit alle 2 Sekunden 50 Register abfragen

Futter:
 
Zurück
Oben