Solax Wechselrichter per Modbus abfragen (viele Werte auf einmal, wie?)

Ehe ich Dir jetzt alles raussuche - welche Werte vermisst Du?
Dann mache ich Screenshots der Instanzen.

In der Doku sind einige Werte mehrfach drin, aber dann zum Teil für PV, EV, BAT und Grid usw…
Sag einfach was du brauchst…

Hallo Steffen!
Deine Fragen sind zwar schon eine Weile her, aber vielleicht willst Du die Antworten ja doch noch lesen. Inzwischen hat Tobias die register.h für Solax X3 G4 (entspricht QCells Hyb-G3-3P) auch angepasst und soweit ich das getestet habe, funktioniert das ganz gut. Es sind noch zwei/drei Werte, die nicht ganz stimmen, aber das muss ich selbst erst noch probieren. Vielleicht haben sich damit auch Deine eigenen Bemühungen erledigt.
Zu Deinen Fragen:

  1. Du musst beachten, dass die Register in der Protokollbeschreibung immer 16-Bit-Werte sind. Das Register 0x0082 (130dez) ist also Byte 0x0104 (260dez) und Byte 0x0105 (261dez). In Tobias Datei sind die Positionen immer auf Byte-Werte bezogen (plus einem Offset, aber dazu später). Deshalb gibt es für die normalen Register, die nur einen 16-bit-Wert enthalten, immer zwei Bytes in der Position und für die 32bit Werte vier Bytes. Dabei muss man aber aufpassen, dass bei den vier Bytes die Reihenfolge u.U. etwas verwirrend sein kann. Hier kommt dann auch das MSB und LSB ins Spiel (Most und Least significant bit), was die Reihenfolge der 16Bit-Werte innerhalb des 32bit-Wertes festlegt.
    Der besagte Offset ist 0x03. Warum, kann man in der Protokollbeschreibung sehen: zuerst wird die ID, dann der Function Code (z.B. 0x04) und dann die Anzahl der Bytes gesendet. Danach kommen die Daten. Also entspricht Position 0x03 in der register.h dem Register 0x0000 in der Protokollbeschreibung.
  2. Die Werte in den eckigen Klammen sind schon Teil des Modbus-Protokolls. Als Erstes wird die Client-ID gesendet (kann im Wechselrichter und im Programm eingestellt werden, ist bei QCells und Solax default auf 0x01). Der folgende Wert gibt wan, was der Wechselrichter machen soll. 0x04 sendet Live-Daten (siehe Protolkollbeschreibung). Die nächsten zwei Werte sind die Register-Adresse, ab der gelesen wird. Hier 0x0000, also ab Anfang in der ersten Zeile, ab 0x0078 in der zweiten Zeile. Das Letzte sind die Anzahl der zu lesenden Register. Also 0x0077 Stück in beiden Zeilen (jetzt weiss man auch, wieso ab Adresse 0x0078 in der zweiten Zeile gelesen wird). Zusammen ist das letzte ausgelesene Register dann die Nummer 0x0120, was auch dem letzten Register für die Live-Daten der Protokollbeschriebung entspricht.
  3. Das soll wohl gehen, ist in der Modbus-Konfiguration von Tobis Programm auch als Schalter vorhanden, habe ich aber selbst noch nicht gebraucht und probiert. Ich frage mich aber auch, was ich an den Wechselrichter schreiben sollte. Bisher hab ich noch nichts gefunden. Zudem gibt es eine Warnung in der Protokollbeschreibung, dass die Werte in einem EEPROM gespeichert werden, der nur eine begrenzte Anzahl Schreibzyklen zuläßt. Wenn man zu oft daran rumändert, kann das zu irreparablen Schäden führen. Also sollte man von automatisch ausgeführten Änderungen lieber die Finger lassen.
    Gruß, Helge

Ohne ein NDA mit Solax gibt es keinen Schreibzugriff.
Die Adressen sind nämlich nicht gleich, d.h. man schreibt die Werte in andere Register als man sie ausliest.
Ohne die Adressen führt das ins Nirvana.
Also keine Sorge - schreiben geht so einfach nicht :wink:

Hm. Da wirkt das NDA offensichtlich nicht genug, oder Dein Wissen ist veraltet und man bekommt das jetzt auch ohne NDA. Ich finde mehrere komplette Protokollbeschreibungen, inklusive der Schreibbefehle und Register, im Netz. U.A. auch auf der weiter oben verlinkten Github-Seite.

Hi,
Magst du evtl mal dein Script teilen? Ich frage meinen WR seit Langem via Rest ab und as geht an sich auch - ich würde mir aber auch gerne mal modbus ansehen.

Hallo an Alle,

mal einfach ein Danke an Alle für die Informationen und Hilfe hier. Besonders an @Maeffjus für seine Geduld - Ansonsten ist die Anlage nun installiert und den WR kann ich auch auslesen.

Danke und Grüße,
MaLu

1 „Gefällt mir“