Solaredge Wechselrichter mit Mod-Bus RTU auslesen

Hallo zusammen,

ich habe leichte Startschwierigkeiten meine Wechselrichter über Modbus RTU auszulesen.

Der Hardware-Aufbau ist wie folgt: ein Digitus USB/RS485 Converter, an diesem hängen zwei Solaredge Wechselrichter. Diese Wechselrichter sind für das SunSpec-Protokoll (=ModBus Schnittstelle) über die eingebaute RS485 - Schnittstelle konfiguriert. Die Modbus-Adressen sind auf 1 und 2 eingestellt, Geschwindigkeit 9600 Baud.
Ich habe Mod-Bus Gerät, Splitter und Schnittstelle angelegt und konfiguriert.

Die Lese/Schreib-Adresseb des IPS-Modbus-Geräts hab ich konfigutiert lt. der IPS-Modbusanleitung und den mit dem Wechselrichter mitgelieferten Registern (siehe auch PDF im Anhang, Seite 3)
-> d.h müsste ich mit einer Lese/SchreibAdresse „0“ (weil Adresse 40001 - 40001 lt. Modbus RTU/TCP — IP-Symcon :: Automatisierungssoftware) und Datentyp „Dword“ lt. den Registern im PDF einen Wert „0x53756E53“ oder Demimal 1400204883 zurückbekommen.

Leider bekomme ich im Debugger den Wert „41 AA 5D 6B 95 19 3E 00“ zurück, die Variable im Objektbaum wird natürlich nicht beschrieben.

Was mache ich falsch? - Danke für eure Anteilnahme!

Gruß
Bikasso
Firmwareversion für SunSpec (1).pdf (420 KB)

Unabhängig von den Adressen. Du kannst nur ein Gerät pro Schnittstelle anschließen. Hatte das auch schon mal bemängelt.
IPS synchronisiert die zwei Splitter für Gerät 1 und 2 nicht, so dass diese sich nachher bei den Abfragen gegenseitig stören :frowning:
Michael

Hallo Michael,

vielen Dank für die aufschlussreiche Info! Ich hab ein Gerät abgeklemmt, jetzt kommen die richtigen Daten an und meine Variablen werden gefüllt. Splitter hatte ich übrigens nur einen angelegt, also liegts wahrscheinlich nicht wie vermutet an der Synchronisation.

Es wundert mich allerdings dass IPS nicht mit mehr als einem Gerät am Bus klar kommt, da dies meiner Meinung eine Grundlegende Funktion wäre und sonst mit IPS ja auch (fast) alles möglich ist.

Frage an die Entwickler: tut sich in diesem Sektor etwas?
Ich würde lieber mein Geld in eine neue Subskription stecken als in einen neuen Adapter :wink:

Gruß
Andreas

Dann liegt es aber auch an deinen Geräten. Doppelten Busabschluß oder Adresse. A oder B Anschluss vertauscht oder ein Gerät auf andere Baudrate eingestellt.
Ich brauch kein Gerät ab klemmen. Darf halt nur die Leseanfrage einzeln z.b. per Script stellen. Dann kommen sich auch zwei Splitter nicht in die Quere.
Ist aber auch eher schlecht.
Hier warte ich auch dringend auf Abhilfe durch das IPS-Team.
Michael

Hallo Michael,

du hattest recht, ein Wechselrichter war wirklich auf eine falsche Baudrate eingestellt (obwohl ich mir sicher war dass ich dies richtig eingestellt hatte).

Bei dem zweiten Punkt, dass sich die Splitter in die Quere kommen stimme ich dir nicht (mehr) zu.
Ich habe aus meinen 2 Geräten fortwährend eine Variable ausgelesen und habe mir den Datenfluss einige Zeit angesehen. Dort sieht man dass die Empfangsdaten von der COM-Schnittstelle an beide Splitter weitergegeben werden und die Datensätze auch von beiden Splittern zusammengebaut werden. Jedoch wird der zusammengebaute Datensatz nur weiterverarbeitet wenn die Adresse des Datensatzes mit der Adresse des jeweiligen Splitters zusammenpasst.

Hier ein Beispiel:
[ATTACH=CONFIG]30392

Das ist der Splitter mit Adresse 1 im Debugmodus.
Man sieht das der Buffer mit erstem Byte = „02“ ignoriert wird. Jedoch sobald Empfangsdaten von Gerät mit Adresse 1 enspricht erstem Byte = „01“ kommen, verrichtet der Splitter seine Tätigkeit: Zeile „Received“.

Ich denke also dass in dieser Ecke IPS korrekt funktioniert.:loveips:

Gruß
Bikasso

snap.jpg

Naja, von wie vielen Registern (Modbus-Instanzen) und welchen Abfrageinterval reden wir ?

Die Leseanfragen kollidieren dann irgendwann, bei zu vielen Registern und zu kleinen Intervallen.
Daten empfangen ist kein Problem, das regeln ja, wie du beschrieben hast, die Splitter anhand der Geräteadresse.
Aber beim schreiben kann es vorkommen, dass beide Splitter gleichzeitig versuchen Daten zu senden. Da kommt dann nur Müll raus :frowning:
Bzw. die Geräte antworten dann auch nicht, weil der Datensatz defekt ist.

Michael

Bei diesem Test waren es nur 2 Instanzen mit einem Sendeabstand von 1s, also sehr überschaubar.
Ich hätte die Meldung im Debugger „Waiting for transmit“ so gedeutet, dass der Splitter brav wartet bis die Com-Schnittstelle frei ist, dass kein Blödsinn rauskommt.
Ich werd mal alle auszulesenden Register anlegen, mal sehen ob die Daten passen. Ich bin derweil guter Dinge :slight_smile:

Das wird nix…
Siehe Paresys Antwort:
https://www.symcon.de/forum/showthread.php?p=256424
Michael