NEWS
Modbus adapter
-
So hab auch noch was zu gepackt…Hoffe am Wochenende läuft das denn endlich [emoji23] [emoji23] [emoji23]
Gesendet von meinem Pixel mit Tapatalk
-
Hi,
kannst mir einer von euch bei mbusd <-> Iobroker helfen? Also im Prinzip bei RTU over TCP?
Ich habe auf einem zusätzlichen PI mbusd installiert und in iobroker einen weiteren Modbus Adapter so konfiguriert:
Mbusd habe ich so gestartet:
mbusd -v 2 -p /dev/ttyUSB0 -s 9600 -m 8N1 -P 502
In meinem Zähler sehe ich wenn der Modbus Adapter läuft auch das Kommunikations Symbol aber ich bekomme einfach keine Werte.
Im iobroker log kommt das:
inMem 2017-01-19 12:00:55.827 debug message modbus.1.* modbus.1.info.pollTime val=301, ack=true, ts=1484823655827, q=0, from=system.adapter.modbus.1, lc=1484823655827 inMem 2017-01-19 12:00:55.827 debug message modbus.1.* modbus.1.holdingRegisters.544_Strom_L1 val=, ack=true, ts=1484823655819, q=0, from=system.adapter.modbus.1, lc=1484823655819 inMem 2017-01-19 12:00:55.525 debug message modbus.1.* modbus.1.info.connection val=true, ack=true, ts=1484823655521, q=0, from=system.adapter.modbus.1, lc=1484823655521 modbus.1 2017-01-19 12:00:55.518 info Connected to slave 192.168.178.67 modbus.1 2017-01-19 12:00:55.409 info starting. Version 0.4.7 in /opt/iobroker/node_modules/iobroker.modbus, node: v4.7.2 modbus.1 2017-01-19 12:00:55.398 debug statesDB connected modbus.1 2017-01-19 12:00:55.387 debug objectDB connected
Ich weiß nicht was ich zum Auslesen der Holding register eintragen muss.
Als ich den Zähler mit USB/RS-485 Adapter an meinem WIN7 PC hatte konnte ich die Uhrzeit z.B. mit diesen Einstellungen auslesen:
Im Modbus Adapter muss aber noch ein Eintrag bei "Typ" bei den Registern erfolgen und da habe ich keine Idee was ich auswählen muss.
Habt ihr vielleicht eine Idee?
Anbei die Modbus Beschreibung des Zählers den ich gerne auslesen möchte.
Danke und Gruß
-
Ich hab es rausbekommen.
So funktioniert es:
Gruß
-
Hallo,
erst mal nur auf die schnelle, in der Beschreibung sind die Adressen in Hex, im IOBroker brauchst du sie dezimal.
In deinen Beispiel FE34 Datum/Uhrzeit entspricht Adresse 65076.
Die Netzfrequenz sollte demnach bei Adresse 653 als float angezeigt werden.
Sollte es noch nicht funktionieren melde dich noch einmal.
Schöne Grüße
ThomasD
-
Hallo zusammen,
vielen Dank an alle die an ioBroker aktiv mitwirken, sieht sehr spannend aus.
Ich möchte mein Haus mit einer Wago PFC100 750-8100 steuern, übergeordnet soll IOBroker über Modbus TCP mit der Wago kommunizieren.
Ich habe bereits erfolgreich testweise ein Ausgang schalten können aber es läuft noch nicht so wie ich es mir vorstelle.
Die Buttons werden über diskrete Ausgänge gesendet und Schalten indirekt die Ausgänge. Nun möchte ich den status der Ausgänge abfragen das gelingt mir nur über Eingangsregister. Ich würde aber stattdessen Diskrete Eingänge (also binär) verwenden.
In der Wago habe ich verschiedene Einstellungen versucht, die schlägt mir dann auch Adressen vor z.B. wenn Variable RW als Coil deklariert ist, wird Adresse >=32768 vorgeschlagen, als RO wird >= 0 vorgeschlagen. Mit den diskreten Ausgängen und Register klappt das auch wunderbar.
Könnt ihr mir bitte sagen was ich wo wie genau eintragen muss? Danke.
Anbei als Screenshots meine Einstellungen:
Und ein Auszug aus dem Wago Handbuch:
-
Hallo ich habe auch meine Steuerung auf einer Industrie Modbus Variante aufgebaut.
Möchte nun auch die den I/O Broker nach und nach einführen.
Welcher Abfragezyklus ist damit möglich?
Ich muss 6 32bit Register oder 12 16bit Register auslesen.
-
@Christian L.:Hallo ich habe auch meine Steuerung auf einer Industrie Modbus Variante aufgebaut.
Möchte nun auch die den I/O Broker nach und nach einführen.
Welcher Abfragezyklus ist damit möglich? `
Hängt von deinem Rechner ab und natürlich von deiner Steuerung.Sollte empirisch ermittelt werden. Ich kann mir gut vorstellen, dass IoB auf dem PC auch 50ms schaffen kann. (Bei deiner Menge)
-
Hallo zusammen,
vielen Dank an alle die an ioBroker aktiv mitwirken, sieht sehr spannend aus.
Ich möchte mein Haus mit einer Wago PFC100 750-8100 steuern, übergeordnet soll IOBroker über Modbus TCP mit der Wago kommunizieren.
Ich habe bereits erfolgreich testweise ein Ausgang schalten können aber es läuft noch nicht so wie ich es mir vorstelle.
Die Buttons werden über diskrete Ausgänge gesendet und Schalten indirekt die Ausgänge. Nun möchte ich den status der Ausgänge abfragen das gelingt mir nur über Eingangsregister. Ich würde aber stattdessen Diskrete Eingänge (also binär) verwenden.
In der Wago habe ich verschiedene Einstellungen versucht, die schlägt mir dann auch Adressen vor z.B. wenn Variable RW als Coil deklariert ist, wird Adresse >=32768 vorgeschlagen, als RO wird >= 0 vorgeschlagen. Mit den diskreten Ausgängen und Register klappt das auch wunderbar.
Könnt ihr mir bitte sagen was ich wo wie genau eintragen muss? Danke.
Anbei als Screenshots meine Einstellungen:
Bildschirmfoto 2017-01-21 um 00.37.38.png
Bildschirmfoto 2017-01-21 um 00.37.55.png
Bildschirmfoto 2017-01-21 um 00.38.05.png
Und ein Auszug aus dem Wago Handbuch:
Bildschirmfoto 2017-01-20 um 23.22.49.png `
WER hat schon WAGO im Betrieb??
Geht das? Kann jemand How-To erstellen? Ich warte immer noch auf meinem Slave. Und es wird kein WAGO sein.
Bitte Wissen teilen.
-
Auf was für einen Slave wartest du den?
-
@Christian L.:Auf was für einen Slave wartest du den? `
http://www.ebay.de/itm/291616203435?_tr … EBIDX%3AIT -
also ich habe jetzt ein HUB und Wireshark bersorgt. Leider werde ich daraus immer noch nicht schlau.
Egal wo ich was in der Variable steuer, es wird immer das gleiche gesendet.
Auszug Wireshark:
Einstellung IOBroker:
Einstellung Wago:
Hat jemand eine Idee? Bitte um Hilfe.
Vielen Dank im voraus.
-
Ok das Problem mit den diskreten Eingängen hat sich erledigt. Ich verstehe zwar nich warum aber nachdem ich mit verschiedenen höheren Zahlen probiert habe, klappt das jetzt.
Haut jetzt alles wie es soll hin.
-
OK.
Nach dem ersten starten das ich das Device auswählen.
Modbus_RTU_Device.JPG
Wenn ich das gemacht habe, Speicher und beende kommt das im log:
! ````
host.openmediavault 2017-01-17 14:55:27.723 info Restart adapter system.adapter.modbus.1 because enabled
host.openmediavault 2017-01-17 14:55:27.723 error instance system.adapter.modbus.1 terminated with code 0 (OK)
modbus.1 2017-01-17 14:55:27.715 info terminating
modbus.1 2017-01-17 14:55:27.695 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
modbus.1 2017-01-17 14:55:27.695 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
modbus.1 2017-01-17 14:55:27.695 error at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:322:16)
modbus.1 2017-01-17 14:55:27.695 error at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/index.js:246:12)
modbus.1 2017-01-17 14:55:27.695 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20)
modbus.1 2017-01-17 14:55:27.695 error at Decoder. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
modbus.1 2017-01-17 14:55:27.695 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8)
modbus.1 2017-01-17 14:55:27.695 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
modbus.1 2017-01-17 14:55:27.695 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
modbus.1 2017-01-17 14:55:27.695 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
modbus.1 2017-01-17 14:55:27.695 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:312:9)
modbus.1 2017-01-17 14:55:27.695 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1253:35)
modbus.1 2017-01-17 14:55:27.695 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1365:21
modbus.1 2017-01-17 14:55:27.695 error at /opt/iobroker/node_modules/iobroker.modbus/main.js:1332:13
modbus.1 2017-01-17 14:55:27.695 error at clear (/opt/iobroker/node_modules/iobroker.modbus/main.js:1328:22)
modbus.1 2017-01-17 14:55:27.695 error at Object.main.start (/opt/iobroker/node_modules/iobroker.modbus/main.js:1740:25)
modbus.1 2017-01-17 14:55:27.695 error TypeError: Cannot read property 'on' of null
modbus.1 2017-01-17 14:55:27.694 error uncaught exception: Cannot read property 'on' of null
modbus.1 2017-01-17 14:55:27.693 error Cannot open port "/dev/ttyUSB1" [9600]: TypeError: Cannot read property 'complete' of undefined>! Ich weiß nur nicht warum der Port nicht geöffnet werden kann. >! Und wenn ich jetzt die Instanz wieder öffne, ist der Port Eintrag wieder weg bzw. nicht mehr sichtbar. >! Im Log kommt ständig: >! ```` openmediavault 2017-01-17 15:07:07.966 info host.openmediavault Restart adapter system.adapter.modbus.1 because enabled openmediavault 2017-01-17 15:07:07.966 error host.openmediavault instance system.adapter.modbus.1 terminated with code 0 (OK) modbus.1 2017-01-17 15:07:07.939 error modbus.1 TypeError: Cannot read property 'on' of null at Object.main.start (/opt/iobroker/node_modules/iobroker.modbus/main.js:1740:25) at clear (/opt/iobroker/node_modules/iobroker.modbus/mai modbus.1 2017-01-17 15:07:07.939 error modbus.1 uncaught exception: Cannot read property 'on' of null modbus.1 2017-01-17 15:07:07.937 error modbus.1 Cannot open port "/dev/ttyUSB1" [9600]: TypeError: Cannot read property 'complete' of undefined
Mal alle USB Devices abgezogen und nur den USB-RS485 Adapter angeschlossen.
Dann sehe ich das der ttyUSB0 wird. Aber auch wenn ich den als Port auswähle kommt die gleiche Fehlermeldung. `
Ich habe das gleiche Problem.
mein Log sieht so aus:
`host.raspi3 2017-02-01 01:46:15.092 info Do not restart adapter system.adapter.modbus.0 because disabled or deleted host.raspi3 2017-02-01 01:46:15.084 error instance system.adapter.modbus.0 terminated with code 3 (Adapter disabled or invalid config) host.raspi3 2017-02-01 01:45:50.362 info "system.adapter.modbus.0" disabled host.raspi3 2017-02-01 01:45:50.361 info object change system.adapter.modbus.0 host.raspi3 2017-02-01 01:45:49.076 info instance system.adapter.javascript.0 terminated with code 0 (OK) javascript.0 2017-02-01 01:45:49.016 info Adapter is disabled => stop host.raspi3 2017-02-01 01:45:48.993 info stopInstance system.adapter.javascript.0 killing pid 30477 host.raspi3 2017-02-01 01:45:48.992 info stopInstance system.adapter.javascript.0 host.raspi3 2017-02-01 01:45:48.988 info "system.adapter.javascript.0" disabled host.raspi3 2017-02-01 01:45:48.987 info object change system.adapter.javascript.0 host.raspi3 2017-02-01 01:45:41.861 info Restart adapter system.adapter.modbus.0 because enabled host.raspi3 2017-02-01 01:45:41.860 error instance system.adapter.modbus.0 terminated with code 0 (OK) modbus.0 2017-02-01 01:45:41.795 info terminating modbus.0 2017-02-01 01:45:41.750 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) modbus.0 2017-02-01 01:45:41.750 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) modbus.0 2017-02-01 01:45:41.750 error at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:322:16) modbus.0 2017-02-01 01:45:41.750 error at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/index.js:246:12) modbus.0 2017-02-01 01:45:41.750 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20) modbus.0 2017-02-01 01:45:41.750 error at Decoder. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) modbus.0 2017-02-01 01:45:41.750 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8) modbus.0 2017-02-01 01:45:41.750 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) modbus.0 2017-02-01 01:45:41.750 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) modbus.0 2017-02-01 01:45:41.750 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12) modbus.0 2017-02-01 01:45:41.750 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:312:9) modbus.0 2017-02-01 01:45:41.750 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1253:35) modbus.0 2017-02-01 01:45:41.750 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1365:21 modbus.0 2017-02-01 01:45:41.750 error at /opt/iobroker/node_modules/iobroker.modbus/main.js:1332:13 modbus.0 2017-02-01 01:45:41.750 error at clear (/opt/iobroker/node_modules/iobroker.modbus/main.js:1328:22) modbus.0 2017-02-01 01:45:41.750 error at Object.main.start (/opt/iobroker/node_modules/iobroker.modbus/main.js:1740:25) modbus.0 2017-02-01 01:45:41.750 error TypeError: Cannot read property 'on' of null modbus.0 2017-02-01 01:45:41.736 error uncaught exception: Cannot read property 'on' of null modbus.0 2017-02-01 01:45:41.720 error Cannot open port "/dev/ttyUSB0" [9600]: TypeError: Cannot read property 'complete' of undefined modbus.0 2017-02-01 01:45:40.406 info starting. Version 0.4.7 in /opt/iobroker/node_modules/iobroker.modbus, node: v4.7.2 ... ... modbus.0 2017-02-01 01:44:25.958 info List of port: [{"comName":"/dev/ttyAMA0"},{"comName":"/dev/ttyUSB0","manufacturer":"FTDI","serialNumber":"FTDI_FT232R_USB_UART_A603O55Y","pnpId":"usb-FTDI_FT232R_USB_UART_A603O55Y-if00-port0","vendor[/code]` Der rs-485 Adapter stammt aus dem Laden mit dem blauen C. Wie kann ich mich nützlich machen, damit das Problem behoben werden kann?
-
Bluefox wollte sich die Hardware besorgen und dann untersuchen. Glaube bis dahin können wir nicht viel machen außer einen Workaround zu nutzen.
Gesendet von iPhone mit Tapatalk Pro
-
Ich habe mir das auf einem PI installiert
Den USB-RS485 Adapter an den pi und das dann über den iobroker Modbus Adapter per TCP angesprochen.
Gesendet von iPhone mit Tapatalk Pro
-
Aha; verstehe die Idee. Muss ich am Abend testen…
Ich könnte auch vom pi die Daten an node-red senden oder per js vom alten python crawler pollen.
Ist eh etwas trickig, da ich 2 modbus Zähler hab. Das lässt sich aktuell noch nicht mit dem Adapter instanzieren.
Mal sehen wie's weiter geht. Habe nun gesehen, das auch schon ein SmartMeter Adapter gibt.
Wenn der Modbus könnte ! oder man die zwei linken kann ... -> Es hört nie auf :lol:
-
Du kannst doch auch zwei Modbus Adapter installieren
Gesendet von iPhone mit Tapatalk Pro
-
Könnt ich schon; aber ob die dann mit dem einen USB-Adapter und dem einen Bus-Kabel so richtig klar kommen?? :roll:
-
Also wenn du das über mbusd von rs485 zu TCP machst kannst du jeder Instanz eine andere Id geben.und die einzeln abfragen.
Hab so 3 slaves angesprochen. War bei mir aber instabil also mbusd ist ganz gerne Mal ausgestiegen.
Und jede Instanz will ca 30mb RAM.
Bei mir werden es 20-30 slaves wenn alles aus gebaut ist. Werde dann wohl 2-3 Pi nehmen. Dann ist auch nicht alles platt wenn Mal einer ausfällt.
Gesendet von meinem Pixel mit Tapatalk
-
Leider kann ich das zZ noch nicht testen, da bei mir der modbus Adapter nicht läuft.
Jedoch habe ich mir ein paar Gedanken dazu gemacht.
Installieren von mehreren Instanzen des Adapters gegen die gleiche Schnittstelle macht womöglich Probleme.
Möglicherweise ist das (mit @Bluefox 's Hilfe) auch nicht nötig. Der Adapter hat ev. eine kleine Designschwäche. -> :idea:
Da die Client-Adresse mit der Connection nichts zu tun hat, sondern im modbus-Paket zur Adressierung verwendet wird, könnte mann diesen Parameter auch bei jedem einzelnen Datenpunkt einstellen. Somit wäre es möglich so viele Clients anzusprechen bis der Bus platzt (mit nur einer Instanz). Eine weitere Instanz wäre dann nur Nötig, wenn ein zusätzlicher USB-Adapter von Nöten wäre.