NEWS
Modbus Adapter - Unterstützung für RTU over TCP
-
Hi,
ich hab gestern schon im Modbus-Thread von Nightwatcher bezüglich RTU over TCP angefragt.
Sorry das ich den Thread dazu missbraucht hab, daher mach ich mal einen eigenen auf, um da
nicht 2 Dinge in einem Thread zu vermischen.
@Bluefox: Bezüglich des Features "RTU over TCP" hab ich gestern mal meinen Testaufbau aktiviert.
Ich hab eine Westaflex-Steuerung die ModbusRTU über RS485 spricht. Daran hängt ein WUT 58631
(COM-Server von W&T), also ein Converter der das Ding in mein Ethernet-Netzwerk bringt.
Der Converter wandelt nun TCP Anfragen in RTU Anfragen um, allerdings muss das Protokoll
als Modbus RTU over TCP erfolgen.
Als Client verwende ich aktuell zum Test Modbus Poll, der kann RTU over TCP.
Ich habe eine Wireshark-Aufzeichnung erstellt.
Falls du wirklich das Feature implementieren möchtest, kann ich dir die Wireshark-Aufzeichnung zur
Verfügung stellen. Weiterhin könnte ich eine Beschreibung für ein Testsystem (Windows) erstellen
wie man die gleiche Kommunikation simulieren könnte (mit ModbusPoll als Master und ModbusSlave als Slave)
auf einem Rechner.
Ich möchte Holding Registers lesen u schreiben und Input Registers und Coils lesen. `
Da von git keine Reaktion kommt, werde ich vermutlich selbst implementieren.Deswegen wireshark - ja
Anleitung - ja
-
super, das wär echt klasse,
ich schreib alles zusammen und stelle es hier ein
-
Eine Frage zu Wireshark:
kann es sein das er Modbus-Pakete nur erkennt, wenn ich über den Default-Modbus Port 502 kommuniziere?
Meine "Live" Umgebung arbeitet mämlich auf Port 8000, ich erstell aber den Testaufbau mit Port 502 wg Wireshark
-
Eine Frage zu Wireshark:
kann es sein das er Modbus-Pakete nur erkennt, wenn ich über den Default-Modbus Port 502 kommuniziere?
Meine "Live" Umgebung arbeitet mämlich auf Port 8000, ich erstell aber den Testaufbau mit Port 502 wg Wireshark `
Ja. Das ist so. Man kann aber im WS sagen, dass Port 8000 als Modbus dekodiert werden muss. -
Ah, das mit dem Wireshark und der Porteinstellung muss ich mir anschauen,
DANKE für die Info.
Mir ist aufgefallen das Wireshark auch RTU over TCP nicht kann, sprich er erkennt die
Pakete nicht als Modbus-Pakete
Ich hab jetzt den Aufbau mit Port 502 gemacht, sollte ja kein Problem sein.
Ich habe ein Zip-File mit den Tests beigefügt. Es steht alles im ReadMe.txt drin
(falls was nicht läuft oder unverständlich sein sollte, bitte fragen)
Danke auf jeden Fall schonmal für deine Mühe
-
Ah, das mit dem Wireshark und der Porteinstellung muss ich mir anschauen,
DANKE für die Info.
Mir ist aufgefallen das Wireshark auch RTU over TCP nicht kann, sprich er erkennt die
Pakete nicht als Modbus-Pakete
Ich hab jetzt den Aufbau mit Port 502 gemacht, sollte ja kein Problem sein.
Ich habe ein Zip-File mit den Tests beigefügt. Es steht alles im ReadMe.txt drin
(falls was nicht läuft oder unverständlich sein sollte, bitte fragen)
Danke auf jeden Fall schonmal für deine Mühe
TestRTUoverTCP.zip `
Du hast sehr geholfen.Ich habe implementiert und konnte mit dem Simulator kommunizieren.
48_2016-10-19_17_00_03-modbus_slave_-_mbslav1.mbs.png -
Wahnsinn!!!
Das probiere ich heut abend gleich live aus wenn ich zu Hause bin.
Kann ich mir da einfach die aktuelle Version des modbus Adapters von Github installieren
oder muss ich irgendetwas beachten
-
Wahnsinn!!!
Das probiere ich heut abend gleich live aus wenn ich zu Hause bin.
Kann ich mir da einfach die aktuelle Version des modbus Adapters von Github installieren
oder muss ich irgendetwas beachten `
Einfach vom git installieren -
ähm, blöd gefragt, aber ich mach einfach ein
npm install iobroker.modbus auf der Konsole (raspi)?
Ich hab eine ältere Installation und werde die erstmal auf den aktuellsten Stand bringen
-
ähm, blöd gefragt, aber ich mach einfach ein
npm install iobroker.modbus auf der Konsole (raspi)?
Ich hab eine ältere Installation und werde die erstmal auf den aktuellsten Stand bringen `
cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.modbus/tarball/master --production
-
Hast du den Pfad zu github?
dann gib ihn hier ein:
Das Octocat Icon ist das dritte Icon oben links im Reiter AdapterGruß
Rainer
-
Danke, ich denke ich hab jetzt die aktuelle Version am laufen.
als Adapter-Version wird mir 0.4.1 angezeigt.
Die Kommunikation geht leider noch nicht, ich bin noch am prüfen woran es liegt.
Was mir aber schonmal aufgefallen ist:
- Der W&T COM-Server der bei mir die Umsetzung von TCP auf Seriell vor der Lüftungsanlage macht lässt immer nur
eine Verbindung zu einer Zeit zu. Wenn ich mit dem ModbusPoll Tool disconnecte sehe ich das in der Weboberfläche des COMServers,
wenn ich aber den modbus-Adapter von ioBroker deaktiviere, geht leider die Verbindung nicht weg, ich muss ioBroker komplett beenden
(iobroker stop) und neu starten (iobroker start)
Es wäre schön wenn der Disconnect beim deaktivieren der modbus-instanz erfolgen würde, sonst kann er sich nach z.B. einer Konfigurationsänderung
nicht mehr verbinden
Im Log sehe ich folgendes:
host-lxccuhost2 2016-10-19 23:17:20.948 info stopInstance system.adapter.modbus.0 killing pid 1075 host-lxccuhost2 2016-10-19 23:17:20.947 info stopInstance system.adapter.modbus.0 host-lxccuhost2 2016-10-19 23:17:20.942 info object change system.adapter.modbus.0
Liegt es evtl daran das der Adapter-Prozess gekillt wird und sich somit nicht sauber abmelden kann?
-
Noch was fällt mir auf:
ich habe total häufig das Verhalten, das die modbus-Instanz rot ist und mir anzeigt:
Verbunden mit host: falsch
Lebenszeichen: falsch
Verbunden mit modbus: wahr
d.h. ich habe eine Verbindung zum Slave (zeigt mit auch der COMServer an), aber nicht zum host?
Habe eine SingleHost-Installation auf einem Raspi, im Log steht nix auffälliges:
modbus-0 2016-10-19 23:10:38.060 info Connected to slave modbus-0 2016-10-19 23:10:37.784 warn Serial is not available modbus-0 2016-10-19 23:10:37.729 info starting. Version 0.4.1 in /opt/iobroker/node_modules/iobroker.modbus host-lxccuhost2 2016-10-19 23:10:33.910 info instance system.adapter.modbus.0 started with pid 1075 host-lxccuhost2 2016-10-19 23:10:33.856 info "system.adapter.modbus.0" enabled
Zusatzinfo:
da ich ja immer iobroker komplett beende und neu starte wg. dem connect zum slave ist mir folgendes aufgefallen:
Nach dem start von iobroker wird der Adapter grün und bleibt es auch, so lange bis ich auf den Tab "Objekte" wechsle um mir
die Datenpunkte des modbus Adapters anschaue, wenn ich dann zurückwechsle auf "Instanzen" ist er rot…
-
Hi,
ich versuche gerade von der Arbeit aus nebenbei etwas zu testen und bin per VPN
zu mir nach Hause eingewählt. Hab hier eine ioBroker-Windows-Installation und wollt das
da mal testen, aber die Verbindung nach Hause scheint etwas zäh zu sein.
Mit ModbusPoll kann ich kommunizieren, aber mit dem adapter bekomme ich:
warn Poll error count: 1 code: {"err":"timeout"}
Kann ich im Adapter einen Timeout einstellen?
Poll delay hab ich auf 5000 ms
Reconnect-Zeit auf 60000 ms
Pulsetime auf 5000
Max Lese Request-Länge: 20 register
-
Hi,
ich versuche gerade von der Arbeit aus nebenbei etwas zu testen und bin per VPN
zu mir nach Hause eingewählt. Hab hier eine ioBroker-Windows-Installation und wollt das
da mal testen, aber die Verbindung nach Hause scheint etwas zäh zu sein.
Mit ModbusPoll kann ich kommunizieren, aber mit dem adapter bekomme ich:
warn Poll error count: 1 code: {"err":"timeout"}
Kann ich im Adapter einen Timeout einstellen?
Poll delay hab ich auf 5000 ms
Reconnect-Zeit auf 60000 ms
Pulsetime auf 5000
Max Lese Request-Länge: 20 register `
Sieht so aus, als ob ich vergessen habe timeout in der Konfiguration-Dialog anzuzeigen.Du kannst timeout momentan direkt im Objekt system.adapter.modbus.0 einstellen.
-
ok, danke für die Info, kannst du mir bitte kurz nen tip geben wie / wo ich das einstelle?
über die admin oberfläche oder in irgendeiner datei?
-
ok, danke für die Info, kannst du mir bitte kurz nen tip geben wie / wo ich das einstelle?
über die admin oberfläche oder in irgendeiner datei? `
Admin. Reiter Objekte und dann auf Stift rechts klicken. -
bei mir ist leider kein stift beim adapter
habe nur admin adapter und modbus adapter im test laufen,
alles auf aktuellem stand, modbus vom github
-
bei mir ist leider kein stift beim adapter
habe nur admin adapter und modbus adapter im test laufen,
alles auf aktuellem stand, modbus vom github
Capture.JPG `
Es ist auch nicht das Objekt, was ich genannt habe.Schalte bitte Experten Modus ein (das Knopf mit dem Person)
-
ah, cool, danke…
Ich glaub ich hab jetzt das richtige objekt und finde da unter:
native->params folgendes:
{ "type": "tcp", "bind": "192.168.2.20", "port": "502", "comName": "", "baudRate": "9600", "dataBits": "8", "stopBits": "1", "parity": "none", "deviceId": "1", "slave": "0", "showAliases": false, "directAddresses": false, "round": "2", "poll": "5000", "recon": "60000", "pulsetime": "5000", "maxBlock": "20", "disInputsOffset": "10001", "coilsOffset": "1", "inputRegsOffset": "30001", "holdingRegsOffset": "40001" }
muss ich da etwas mit timeout einfügen?