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

Hallo Zusammen,
ich würde gerne meinen Solax-Wechselrichter mittels Modbus RTU über TCP abfragen.
Ich benutze dazu einen Exsys EX-6051, im Modus TCP-Server.
Soweit so gut, ich bekomme Antworten vom Wechselrichter.

Allerdings, war ich nur schlau genug an die Modbus-Instanz mit CSCK_SendText einen Schnipsel Hex zu senden und Antworten zu bekommen. Dazu habe ich das Beispiel aus der Hersteller-Doku genommen.

Ich bin aber natürlich faul und würde gerne sehr viel Krempel abfragen.
Dazu sehe ich, IPS kann auch Modbus „sprechen“.

Was ich aber nicht so genau verstanden habe, bzw weiß:

Gibt eine eine Möglichkeit, dass ich die Register einfach schnell und automatisch der Reihe nach abfrage? Es gibt ja einerseits einen Modbus-Gateway, wo man Datenblöcke konfigurieren kann, oder halt eine Modbus-Instanz.
Aber ich sehe bei der Instanz nur die Möglichkeit einen Datenpunkt abzufragen.

Dazu würden es wirklich sehr, sehr, sehr viele Instanzen werden wenns nur einen Punkt pro Instanz gibt.

Was ist denn das was man als Expertenoption bei dem Gateway angeben kann? Das finde ich nicht dokumentiert.

Ach noch etwas: Ich muss bei IPS die HEX-Adresse aus der Schnittstellendoku in eine Dezimalzahl umwandeln, oder? (also im Feld für die Adresse)

Danke & Gruß,
Maeffjus

SolaxPower External Communication Protocol X1&X3 Hybrid -G4 ModbusRTU V3.14- public version.pdf (2,6 MB)

Hallo Meffjus,

das selbe habe ich gerade auch vor und stehe vor dem gleichen Problem wie du auch.

Da gibt es eine Dokumentationslücke im Handbuch.

Einerseits wird dort geschrieben, dass man zunächst ein Modbus Device anlegen soll und dieses dann später einem Modbus Gateway zuordnen soll. Und ja das funktioniert auch. Aber nur für Einzelwerte!
Wenn ich z.B. die Seriennummer aus meinem Wechslerichter auslesen will, wird mir diese in 10 unsigned Word’s im ASCII Format zurückgeliefert. (Kann ich im Debug des Gateways sehen)
Aber natürlich steht in der Instanzvariablen nur der erste Wert als Integer!?

Dann habe ich im Gateway genau wie du es auch beschrieben hast die Datenblöcke gefunden und welche eingetragen. Denn nur dort kann man eintragen das die erwartete Antwort mehr als ein Wert ist!
Und wie schon geschrieben im Debug sehe ich das 10 Werte abgefragt werden und der Wechselrichter auch 10 Werte zurückgibt. (Und es ist tatsächlich seine Seriennummer) Also so weit so gut.

Aber was ich nicht verstehe und nicht gefunden habe ist, wie ich die Datenblöcke aus dem Gateway den einzelnen Modbus Instanz Devices zuordnen kann!? Übrigens auch mit einem Cutter habe ich experimentiert und bin gescheitert. Den kann man nämlich nicht an ein Gateway anbinden sondern nur an eine Schnittstelle. (Wahrscheinlich weil ein Gateway auch ein Splitter ist)

Hast du eine Lösung gefunden oder weiß jemand wie man das machen muss?
Ich hätte erwartet, dass man bereits bei der Modbus Device Instanz angeben kann wieviele Werte zurückgeliefert werden sollen. Aber das wäre wohl zu einfach…

Beste Grüße
Ralf

Hey Ralf,
sorry für die späte Antwort! Ich war im Urlaub und hatte mal ein paar Tage keine Lust auf IPS :wink:
Also mir ist es nur für die High und Low bytes aufgefallen. Man liest ja eig. nur eins davon aus.
Aber es geht auch beides, dann musst du z.B. ein 8 bit high und ein 8 bit low abrufen indem du von der Adresse 16 bit als Wert liest. Dann hast Du beides zusammen.
Das musst du dann umwandeln und aufteilen.

Für mich ist das aber nicht wichtig, denn ich lese tatsächlich nur die paar Dinge von denen automatisch das korrekte ausgegeben wird.

Zum Schreiben kann ich zumindest soviel sagen, dass die High und Low-bytes vom Lesen in separate Adressen geschrieben werden. (Diese sind übrigens NICHT gleich den Leseadressen)

Gruß,
Maeffjus