NEWS
ModBus RTU auf ModBus TCP über DR302
-
@klassisch sagte in ModBus RTU auf ModBus TCP über DR302:
@homoran der usriot ist ein TCP server
Bei dem klopfen die clients (z.B iobroker) an und holen daten -
@klassisch dann muss iobroker als client eingestellt sein.
(ist bei mir ein master!) -
Client in Error state kommt wenn die Verbindung zum Usriot steht, aber das Endgerät nicht oder nicht richtig antwortet
Immer erst mit einem Register anfangen
Jeder Fehler führt zum Abbruch mit unspezifischer Fehlermeldung
A B Leitungen probeweise kreuzen
Ist beim Endgerät Modbus überhaupt aktiviert? -
@homoran master im Modbus aber client im TCP
Du hast ja USB Karte und damit entfällt bei Dir der TCP Pfad.
Damit siehst Du nur den Modbus RS485. Da ist der ioBroker Adapter der Master und Deine Endgeräte die Slaves. Der Master fragt die reihum ab.Bei Mudbus über TCP ist die TCP Strecke zwischengeschaltet. Der Mudbus wird sozusagen Huckepack über TCP transportiert.
Und bei TCP ist der USRIOT der Server, bei dem die Clients anfragen. Der Server bedient dann die Clients und liefert Ergebnisse zurück. Das können mehrere Clients sein, die fragen.
Bei meinen Implementierungen von RFLInk über TCP (virtueller COM) und smartmeter (RS485 vom Hager Lesekopf) über TCP habe ich das schon so gemacht. -
@klassisch said in ModBus RTU auf ModBus TCP über DR302:
t beim Endgerät Modbu
Ich denke, dass an dem Growatt WR irgendwas mit dem ModBus noch nicht hinhaut - ich teste mal bissel rum. Sobald ich eine Lösung habe, gebe ich hier bescheid.
DANKE schonmal, für die vielen Rückmeldungen
-
@pep ich bin momentan an derselben Stelle. Ich versuche einen GROWATT MIC tl-x 2500 auszulesen. Ich bekomme mich auch auf den Waveshare RS485 - ETH Adapter verbunden, aber bekomme keine Daten aus dem WR. Konntest du dein Problem mittlerweile lösen?
-
@sneida sagte in ModBus RTU auf ModBus TCP über DR302:
aber bekomme keine Daten aus dem WR
und keine Meldungen im debug-log?
-
Hier mal meine Settings
2023-04-27 14:10:30.395 info Disconnected from slave 192.168.0.6 modbus.0 2023-04-27 14:10:29.594 warn Poll error count: 5 code: "App Timeout" modbus.0 2023-04-27 14:10:29.395 error Client in error state. modbus.0 2023-04-27 14:10:29.394 error Request timed out. modbus.0 2023-04-27 14:10:29.394 warn Error: undefined modbus.0 2023-04-27 14:10:25.295 warn Poll error count: 4 code: "App Timeout" modbus.0 2023-04-27 14:10:24.393 info Connected to slave 192.168.0.6
-
@sneida hast du die Logstufe der Instanz auf debug gestellt?
im log ist kein einziger debug Eintrag. -
modbus.0 2023-04-27 17:05:23.371 info Disconnected from slave 192.168.0.6 modbus.0 2023-04-27 17:05:23.371 debug Closing client on purpose. modbus.0 2023-04-27 17:05:22.372 debug Cleaning up request fifo. modbus.0 2023-04-27 17:05:22.372 debug Clearing timeout of the current request. modbus.0 2023-04-27 17:05:22.372 debug Socket closed with error modbus.0 2023-04-27 17:05:22.371 warn Poll error count: 3 code: {"err":"timeout","timeout":5000} modbus.0 2023-04-27 17:05:22.371 error Client in error state. modbus.0 2023-04-27 17:05:22.371 error Request timed out. modbus.0 2023-04-27 17:05:22.370 warn Error: undefined modbus.0 2023-04-27 17:05:17.371 debug [DevID_1/inputRegs] Poll address 0 - 2 registers modbus.0 2023-04-27 17:05:17.370 debug [DevID_1] Poll start --------------------- modbus.0 2023-04-27 17:05:17.370 info Connected to slave 192.168.0.6
-
@sneida hmm, da gilt erst einmal
@klassisch sagte in ModBus RTU auf ModBus TCP über DR302:
Client in Error state kommt wenn die Verbindung zum Usriot steht, aber das Endgerät nicht oder nicht richtig antwortet
Immer erst mit einem Register anfangen
Jeder Fehler führt zum Abbruch mit unspezifischer Fehlermeldung
A B Leitungen probeweise kreuzen
Ist beim Endgerät Modbus überhaupt aktiviert? -
@pep
Soweit ich das verstehe, musst du, wenn du im DR302 die Option "Modbus TCP" auswählst, im ioBroker Modbus Adapter bei den Verbindungseinstellungen "TCP" auswählen. Du hast "RTU over TCP" ausgewählt.
Alternativ sollte es auch gehen, wenn du die Einstellung im ioBroker bei "RTU over TCP belässt" und im DR302 den Haken bei Modbus TCP raus nimmst. -
@homoran ich habe im ersten Schritt die Kabel vertauscht. Lange Rede, kurzer Sinn. Es läuft. Entgegen der normalen Belegung im Modbus A/A' B/B' (differentiales Signal, also theoretisch egal) hat wohl entweder bei der Dokumentation bei Waveshare oder bei GROWATT etwas verwechselt.
-
@sneida Danke für die Rückmeldung! Ja, bei A/B RS485 ist die Welt zweigeteilt. Die meisten EU-Energiegerätehersteller haben eine andere Auslegung der Norm als die Halbleiterhersteller. Die Chinesischen Konverterhersteller wie USRIOT, Waveshare halten sich an die Datenblätter der Halbleiterhersteller. Bei Chinesischen Energiegeräten weiß man es nicht so recht. Die SDM120, 630, 72 halten sich auch an die Halbleiterhersteller. Dein Chinesischer Wechselrichter macht es also anders.
Deshalb muß man im Zweifel auch vertauschen testen. -
@klassisch
Hast du noch einen Tipp für mich: Ich erhalte in allen Holdingregistern, die ich ausprobiere keine Daten (0, Null). Ich habe Register zwischen 01-124 und 1000-1024 ausprobiert.Einstellung ShareWave und ioBroker sollten passen (Konfiguration wie hier ohne Fehler im Debug Mode).
Kabel habe ich auch schon vertauscht.
Wechselrichter ist Growatt SPF 3000 TL.Sobald ich auf das Input Register gehe, wird er einen Fehler "ReadInputRegisters: Invalid FC77". Das zeigt, dass grundsätzlich die Kommunikation funktioniert, oder?
-
@nico-lai sagte in ModBus RTU auf ModBus TCP über DR302:
allen Holdingregistern, die ich ausprobiere keine Daten (0, Null)
hast du da polling aktiviert?
-
@nico-lai sagte in ModBus RTU auf ModBus TCP über DR302:
@klassisch
Hast du noch einen Tipp für mich:Sorry, mit Growatt kenne ich mich leider nicht aus.
Bei meinem Victron mußte man Modbus erst freischalten.
Bei meinem Fronius Gen24 kann nur der Installateur den HW-Modbus freischalten.Vielleicht hast Du zufällig noch ein anderes Modbus-Gerät wie z.B. einen SDM120 oder so zu Hause. Dann könntest Du zumindest mal den Rest testen.
In schwierigen Fällen nehme ich zuerst einen RS485 USB Stick und mein Notebook. Darauf dann QModMaster https://sourceforge.net/projects/qmodmaster/
Mit dem QModmaster kann man etwas mehr sehen.Und der USB Stick eliminiert die ganzen Themen mit den Konvertern wie dem DR302.
Wenn QModMaster was plausibles erbringt, ziehe ich mit dem Stick auf meinem ioBroker Rechner (ebenfalls Win) um. Wenn dann auch noch was kommt, wird der LAN Konverter eingebunden. -
@klassisch sagte in ModBus RTU auf ModBus TCP über DR302:
Bei meinem Victron mußte man Modbus erst freischalten.
aber auch da kommt bei den Holding registern nur ein NULL zurück, nachdem die Änderung übernommen wurde.
Hab lange gesucht, bis ich irgendwo einen Screenshot gefunden hatte, in dem bei polling ein Haken war.
Bei Victron hatte ich bis dahin die gleichen Register noch mal unter Inputregister eingetragen um an die Werte zu kommen, bei Daikin ging das genau so wenig. Bei beiden klappt es aber mit polling. -
@homoran Ah, Du meinst die Chrckmarks bei "Abfrage"
Das hatte ich anscheinend intutiv eingetragen.
-
@klassisch sagte in ModBus RTU auf ModBus TCP über DR302:
Du meinst die Chrckmarks bei "Abfrage"
Ja!
ich weiß nicht wie ich auf polling komme, bei mir heisst es (jetzt??) auch Abfrage.