NEWS
Modbus Adapter - Unterstützung für RTU over TCP
-
Komisch,
ich hab mir die Wireshark-Mitschnitte mal angeschaut von
broker-live und sim-live. Den Inhalt kann ich leider nicht wirklich interpretieren,
aber die ersten Pakete scheinen ja wirklich identisch zu sein, nur das der
Adapter nach dem 10. Paket anscheinend irgendwie nicht mehr weitermacht
Hast du evtl noch eine Idee für mich was ich noch testen könnte oder wie ich an der Stelle weiterkommen kann?
Auf der Gegenstelle (COM-Server) habe ich leider überhaupt keine Diagnosemöglichkeiten :evil:
-
Komisch,
ich hab mir die Wireshark-Mitschnitte mal angeschaut von
broker-live und sim-live. Den Inhalt kann ich leider nicht wirklich interpretieren,
aber die ersten Pakete scheinen ja wirklich identisch zu sein, nur das der
Adapter nach dem 10. Paket anscheinend irgendwie nicht mehr weitermacht
Hast du evtl noch eine Idee für mich was ich noch testen könnte oder wie ich an der Stelle weiterkommen kann?
Auf der Gegenstelle (COM-Server) habe ich leider überhaupt keine Diagnosemöglichkeiten :evil: `
Ich habe mal den Traffic angeschaut. Es währe einfacher, wenn du in beiden Fällen gleiche Register lesen wurdest. Du liest:-
Input Registers bei LIve
-
Holding Registers bei Simulator.
Ist das so gewollt?
Unit ID stimmt bei Live?
Live system schickt nicht mal einen Antwort. Einfach schweigt auf der Applikationsebene.
-
-
oh, da ist dann irgendwas an der Konfiguration danebengegangen.
Wenn alles läuft würd ich gerne sowohl HoldingRegister lesen / schreiben (Adresse 0 und 1)
und die InputRegister 0 und 3 lesen.
Fürs erste bin ich jetzt nochmal zurückgegangen auf ein einziges InputRegister (0).
Soll ich nochmal neue Mitschnitte erzeugen?
Ich bin gerade dabei Webstorm zu installieren und mal schauen ob ich irgendwie Debugging zum laufen Bekomme.
Ich bin eigentlich .NET Entwickler, aber die node.js Tools für Visual Studio stürzen bei mir ständig ab
-
oh, da ist dann irgendwas an der Konfiguration danebengegangen.
Wenn alles läuft würd ich gerne sowohl HoldingRegister lesen / schreiben (Adresse 0 und 1)
und die InputRegister 0 und 3 lesen.
Fürs erste bin ich jetzt nochmal zurückgegangen auf ein einziges InputRegister (0).
Soll ich nochmal neue Mitschnitte erzeugen?
Ich bin gerade dabei Webstorm zu installieren und mal schauen ob ich irgendwie Debugging zum laufen Bekomme.
Ich bin eigentlich .NET Entwickler, aber die node.js Tools für Visual Studio stürzen bei mir ständig ab
`
Ich wollte die Pakete vergleichen. Das währe schon praktisch wenn du absolut gleiche Konfigurationen bei sim und live hättest. Achte aber bitte auf UnitID. Ich denke da konnte auch was nicht passen. -
ok, ich mache nochmal neue Aufzeichnungen mit erstmal nur einem inputregister an Adresse 0,
bei meiner Lüftung ist laut Dokumentation die SlaveID = 1, das ist doch die UnitID, oder?
Bei dem COM-Umsetzer davor kann ich da leider nichts konfigurieren.
Bei dem ModbusPoll Client kann ich gar keine UnitID angeben, und bei dem Modbus Slave kann ich einen Haken
(Ignore UnitID setzen, den hab ich jetzt mal extra NICHT gesetzt)
-
So, jetzt nochmal die 4 Wireshark-Mitschnitte.
Ich hoffe ich hab immer die richtige Konfiguration verwendet.
Verhalten immer noch das selbe, UnitID ist bei mir auf 1 gesetzt.
Hoffentlich kannst du irgendetwas erkennen, für mich sieht das am Anfang alles gleich aus,
nur das es bei der "Live" Kommunikation irgendwie nicht mehr weitergeht
-
Und mir ist gerade wieder was aufgefallen:
Beim LIVE-System steht 201 auf dem Register (stellt eine Temperatur * 10 dar, also 20.1°)
Auf der Simulation steht auf dem Register 15 (hab ich dann mal probehalber auf 20 und wieder auf 15 gesetzt um zu sehen ob wertänderungen
ankommen). Da hab ich im iobroker die 15 bzw 20 gesehen.
Als ich dann umkonfiguriert hab auf das Live-System kam auch einmal die 201 im iobroker an!!! aber dann keine zyklischen refreshes mehr
-
Konnte was finden. Kannst du probieren?
-
Ja ich probiere nachher aus, bin allerdings grad unterwegs
-
SUPER!!! LESEN GEHT!!!!
Hab gleich Schreiben von Holding Register getestet, da gibt's noch Probleme:
host-lxccuhost2 2016-10-21 20:57:07.333 info Restart adapter system.adapter.modbus.0 because enabled host-lxccuhost2 2016-10-21 20:57:07.331 error instance system.adapter.modbus.0 terminated with code 0 (OK) modbus-0 2016-10-21 20:57:07.271 info terminating TypeError: 2016-10-21 20:57:07.245 error at TCP.onread (net.js:526:21) TypeError: 2016-10-21 20:57:07.245 error at Socket.Readable.push (_stream_readable.js:127:10) TypeError: 2016-10-21 20:57:07.245 error at readableAddChunk (_stream_readable.js:165:9) TypeError: 2016-10-21 20:57:07.245 error at emitReadable (_stream_readable.js:404:5) TypeError: 2016-10-21 20:57:07.245 error at emitReadable_ (_stream_readable.js:408:10) TypeError: 2016-10-21 20:57:07.245 error at Socket.EventEmitter.emit (events.js:92:17) TypeError: 2016-10-21 20:57:07.245 error at Socket. (_stream_readable.js:746:14) TypeError: 2016-10-21 20:57:07.245 error at Socket.EventEmitter.emit (events.js:95:17) TypeError: 2016-10-21 20:57:07.245 error at Object. (/opt/iobroker/node_modules/iobroker.modbus/lib/modbus-tcp-rtu-client.js:135:66) TypeError: 2016-10-21 20:57:07.245 error Object ��d has no method 'join' uncaught 2016-10-21 20:57:07.238 error exception: Object ��d has no method 'join' TypeError: 2016-10-21 20:57:07.224 error at TCP.onread (net.js:526:21) TypeError: 2016-10-21 20:57:07.224 error at Socket.Readable.push (_stream_readable.js:127:10) TypeError: 2016-10-21 20:57:07.224 error at readableAddChunk (_stream_readable.js:165:9) TypeError: 2016-10-21 20:57:07.224 error at emitReadable (_stream_readable.js:404:5) TypeError: 2016-10-21 20:57:07.224 error at emitReadable_ (_stream_readable.js:408:10) TypeError: 2016-10-21 20:57:07.224 error at Socket.EventEmitter.emit (events.js:92:17) TypeError: 2016-10-21 20:57:07.224 error at Socket. (_stream_readable.js:746:14) TypeError: 2016-10-21 20:57:07.224 error at Socket.EventEmitter.emit (events.js:95:17) TypeError: 2016-10-21 20:57:07.224 error at Object. (/opt/iobroker/node_modules/iobroker.modbus/lib/modbus-tcp-rtu-client.js:135:66) TypeError: 2016-10-21 20:57:07.224 error Object has no method 'join' uncaught 2016-10-21 20:57:07.217 error exception: Object has no method 'join' modbus-0 2016-10-21 20:57:07.182 info Connected to slave modbus-0 2016-10-21 20:57:06.171 info Disconnected from slave 192.168.2.20 modbus-0 2016-10-21 20:57:06.165 error Cannot write [0]: {"err":"timeout"} modbus-0 2016-10-21 20:56:49.819 info Connected to slave modbus-0 2016-10-21 20:56:49.609 warn Serial is not available
-
Kannst du lib/modbus-tcp-rtu-client.js die Zeile 135 modifizieren
this.logError('Wrong CRC for frame: ' + data.toArrayBuffer().join(', '));
? Da ist komische Antwort.
-
Hab die Zeile ausgebessert, dann Adapter gestoppt und neu gestartet:
Dabei habe ich 2 Werte geschrieben, der erste ist tatsächlich angekommen am Gerät,
aber in der admin-Anzeige blieb er auf dem alten Wert (vermutlich weil keine Bestätigung kam?),
das muss der Log-Eintrag mit dem Timeout gewesen sein.
Dann hat sich der Adapter automatisch neu verbunden und den gesetzten Wert korrekt zurückgelesen,
dann wollte ich den 2. Wert schreiben und die Exceptions sind aufgetreten.
bekomme jetzt diese Fehlermeldung:
host-lxccuhost2 2016-10-22 10:27:07.360 info Restart adapter system.adapter.modbus.0 because enabled host-lxccuhost2 2016-10-22 10:27:07.359 error instance system.adapter.modbus.0 terminated with code 0 (OK) uncaught 2016-10-22 10:27:07.299 error exception: Object ��� has no method 'toArrayBuffer' TypeError: 2016-10-22 10:27:07.287 error at TCP.onread (net.js:526:21) TypeError: 2016-10-22 10:27:07.287 error at Socket.Readable.push (_stream_readable.js:127:10) TypeError: 2016-10-22 10:27:07.287 error at readableAddChunk (_stream_readable.js:165:9) TypeError: 2016-10-22 10:27:07.287 error at emitReadable (_stream_readable.js:404:5) TypeError: 2016-10-22 10:27:07.287 error at emitReadable_ (_stream_readable.js:408:10) TypeError: 2016-10-22 10:27:07.287 error at Socket.EventEmitter.emit (events.js:92:17) TypeError: 2016-10-22 10:27:07.287 error at Socket. (_stream_readable.js:746:14) TypeError: 2016-10-22 10:27:07.287 error at Socket.EventEmitter.emit (events.js:95:17) TypeError: 2016-10-22 10:27:07.287 error at Object. (/opt/iobroker/node_modules/iobroker.modbus/lib/modbus-tcp-rtu-client.js:135:66) TypeError: 2016-10-22 10:27:07.287 error Object has no method 'toArrayBuffer' uncaught 2016-10-22 10:27:07.277 error exception: Object has no method 'toArrayBuffer' modbus-0 2016-10-22 10:27:07.237 info Connected to slave modbus-0 2016-10-22 10:27:06.226 info Disconnected from slave 192.168.2.20 modbus-0 2016-10-22 10:27:06.221 error Cannot write [1]: {"err":"timeout"} modbus-0 2016-10-22 10:26:45.150 info Connected to slave modbus-0 2016-10-22 10:26:44.876 warn Serial is not available
-
Ich habe Fehler gemacht es muss
this.logError('Wrong CRC for frame: ' + pdu.toArrayBuffer().join(', '));
sein
-
Jetzt kommt folgender Fehler:
host-conentfst08 2016-10-22 14:38:19.903 error instance system.adapter.modbus.0 terminated with code 0 (OK) modbus-0 2016-10-22 14:38:19.887 info terminating TypeError: 2016-10-22 14:38:19.882 error at TCP.onread (net.js:538:20) TypeError: 2016-10-22 14:38:19.882 error at Socket.Readable.push (_stream_readable.js:126:10) TypeError: 2016-10-22 14:38:19.882 error at readableAddChunk (_stream_readable.js:163:16) TypeError: 2016-10-22 14:38:19.882 error at Socket.emit (events.js:107:17) TypeError: 2016-10-22 14:38:19.882 error at Object. (D:\_\node_modules\iobroker.modbus\lib\modbus-tcp-rtu-client.js:135:65) TypeError: 2016-10-22 14:38:19.882 error undefined is not a function uncaught 2016-10-22 14:38:19.882 error exception: undefined is not a function modbus-0 2016-10-22 14:38:19.857 info Connected to slave modbus-0 2016-10-22 14:38:18.846 info Disconnected from slave 192.168.2.20 modbus-0 2016-10-22 14:38:18.845 error Cannot write [1]: {"err":"timeout"} modbus-0 2016-10-22 14:37:26.468 info Connected to slave modbus-0 2016-10-22 14:37:26.318 info starting. Version 0.4.4 in D:/_/node_modules/iobroker.modbus host-conentfst08 2016-10-22 14:37:25.733 info instance system.adapter.modbus.0 started with pid 21708
-
Ich habe auf dem git noch mal was gefixt.
Allerdings, das ist nur debug Ausgabe, die ich noch mal analysieren muss um auf die Lösung zu kommen.
Es wäre sehr praktisch, wenn du mal WebStorm Umgebung installieren konntest.
Oder TeamViewer?
-
ich versuch mal Webstorm hier vernünftig zum Laufen zu bringen!!!
Bin allerdings heute und morgen dann weg, vielleicht könnten wir echt
nächste Woche mal eine TeamViewer Sitzung machen, dann würdest du direkt das Live-Verhalten sehen
(und ich würd was über Webstrom und Debugging lernen).
Das wäre echt cool!!!
Ich setz mal alles auf und meld mich
-
Hi, ich bin auch langsam wieder auf dem weg an meiner haussteueung zu arbeiten. Nach dem ich ja aussversehen alle meine arduino Sketche gelöscht habe muss ich langsam mal wieder von vorne anfangen.
Habt ihr schon mal versucht auf dem weg mit dem com Server auch mal mehrere Rtu slaves abzufragen und zu beschreiben ?
Iobroker agiert ja jetzt als rtu master und liest und schreib die jeweiligen Register.
Das war auch damals genau mein Problem weil wenn der arduino master war dann konnte ich zwar problemlos alles per TCP oder matt zu io broker schicken aber aber zurück war das Problem.
Wenn jetzt nur noch io broker der master ist dann steht meiner eigenen slaves nix mehr im Wege ausser ich selbst
Gesendet von meinem AEON mit Tapatalk
-
Hi,
ich war jetzt leider beruflich unterwegs und muss gleich wieder los, konnte aber mal kurz testen.
Bei mir ist das Verhalten beim Schreiben unterschiedlich, aktuell erhalte ich eine Timeout Fehlermeldung,
anschliessend tut sich nichts mehr (Poll Timeout)
modbus-0 2016-10-25 07:26:18.811 warn Poll error count: 1 code: {"err":"timeout"} modbus-0 2016-10-25 07:26:08.793 info Connected to slave modbus-0 2016-10-25 07:26:07.960 info starting. Version 0.4.4 in D:/_/node_modules/iobroker.modbus host-conentfst08 2016-10-25 07:26:00.381 info instance system.adapter.modbus.0 started with pid 8868
Beim zweiten Versuch (Neustart des Adapters) habe ich wieder einen Timeout, da allerdings einen Write-Timeout,
anschliessend erfolgte aber eine Exception und daraufhin ein automatischer Neustart:
<code>host-conentfst08 2016-10-25 07:33:02.956 info Restart adapter system.adapter.modbus.0 because enabled host-conentfst08 2016-10-25 07:33:02.956 error instance system.adapter.modbus.0 terminated with code 0 (OK) modbus-0 2016-10-25 07:33:02.939 info terminating TypeError: 2016-10-25 07:33:02.934 error at TCP.onread (net.js:538:20) TypeError: 2016-10-25 07:33:02.934 error at Socket.Readable.push (_stream_readable.js:126:10) TypeError: 2016-10-25 07:33:02.934 error at readableAddChunk (_stream_readable.js:163:16) TypeError: 2016-10-25 07:33:02.934 error at Socket.emit (events.js:107:17) TypeError: 2016-10-25 07:33:02.934 error at Object. (D:\_\node_modules\iobroker.modbus\lib\modbus-tcp-rtu-client.js:103:29) TypeError: 2016-10-25 07:33:02.934 error at Function.Buffer.concat (buffer.js:215:9) TypeError: 2016-10-25 07:33:02.934 error undefined is not a function uncaught 2016-10-25 07:33:02.934 error exception: undefined is not a function modbus-0 2016-10-25 07:33:02.904 info Connected to slave modbus-0 2016-10-25 07:33:01.895 info Disconnected from slave 192.168.2.20 modbus-0 2016-10-25 07:33:01.895 error Cannot write [1]: {"err":"timeout"} modbus-0 2016-10-25 07:32:41.349 info Connected to slave modbus-0 2016-10-25 07:32:41.164 info starting. Version 0.4.4 in D:/_/node_modules/iobroker.modbus [code][/code]</code>
Wenn du mal Zeit / Lust hast könnten wir mal abends eine TeamViewer Session machen. Ich hab mir
jetzt Webstorm installiert, komm aber nicht so recht weiter. Bin abends immer so ab 18 Uhr eigentlich zu Hause
wenn berufl. nix dazwischenkommt
-
Hab sogar zu dem Verhalten jetzt mal einen Breakpoint in Webstorm hinbekommen:
Es war die Adresse 1, Holding Register (Unsigned 16Bit BigEndian), aber den Wert weis ich nicht mehr,
ist eine Temperatur, irgendetwas zwischen 15 und 20:
Webstorm Breakpoint:
Und hier der Wert von pdu:
-
Also auf dem git gibt es neue Version. Da habe ich auch was für seriel geändert.