NEWS
Modbus adapter
-
Erstmal vielen Dank für die schnellen Antworten. Ich habe auf debug gestellt. und Aliases benutzen aktiviert. Es kommt folgendes:
Wenn ich die 40000 weglasse und wie in der anleitung nur die Register 1 eingebe kommen nochmal andere Fehlermeldungen (Instanz bleibt aber zumindest grün):
Kann man anhand der Anleitung darauf schließen, welche Einstellungen im Modbus Adapter einzustellen sind?
Ich folgere anhand der Angabe "REAL4 is a Format of singular IEEE-754 number, also called FLOAT" dass ich Float einstellen muss.
Bin ich bei Holding-Register überhaupt richtig?
MFG
Matthias -
@w04g005 Bitte keine Screenshots posten. Kann ich mobil nicht lesen und auch nicht zitieren.
Mach eine Terminalsession mit z.B. Putty auf, schaue damit ins log und kopiere den Text hier in Code Tags rein
-
2022-09-30 08:21:28.899 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.modbus.1 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION) 2022-09-30 08:21:30.154 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.echarts.0 started with pid 3298 2022-09-30 08:21:31.332 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.modbus.1 started with pid 3352 2022-09-30 08:21:33.022 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.web.0 started with pid 3371 2022-09-30 08:21:35.054 - ^[[32minfo^[[39m: backitup.0 (3279) starting. Version 2.4.10 in /opt/iobroker/node_modules/iobroker.backitup, node: v14.20.0, js-co> 2022-09-30 08:21:35.170 - ^[[34mdebug^[[39m: modbus.1 (3352) Redis Objects: Use Redis connection: 127.0.0.1:9001 2022-09-30 08:21:35.337 - ^[[34mdebug^[[39m: modbus.1 (3352) Objects client ready ... initialize now 2022-09-30 08:21:35.417 - ^[[32minfo^[[39m: backitup.0 (3279) [iobroker] backup was activated at 02:40 every 1 day(s) 2022-09-30 08:21:35.441 - ^[[34mdebug^[[39m: modbus.1 (3352) Objects create System PubSub Client 2022-09-30 08:21:35.445 - ^[[34mdebug^[[39m: modbus.1 (3352) Objects create User PubSub Client 2022-09-30 08:21:35.624 - ^[[34mdebug^[[39m: modbus.1 (3352) Objects client initialize lua scripts 2022-09-30 08:21:35.681 - ^[[34mdebug^[[39m: modbus.1 (3352) Objects connected to redis: 127.0.0.1:9001 2022-09-30 08:21:35.840 - ^[[34mdebug^[[39m: modbus.1 (3352) Redis States: Use Redis connection: 127.0.0.1:9000 2022-09-30 08:21:35.953 - ^[[34mdebug^[[39m: modbus.1 (3352) States create System PubSub Client 2022-09-30 08:21:35.957 - ^[[34mdebug^[[39m: modbus.1 (3352) States create User PubSub Client 2022-09-30 08:21:36.108 - ^[[34mdebug^[[39m: modbus.1 (3352) States connected to redis: 127.0.0.1:9000 2022-09-30 08:21:36.318 - ^[[32minfo^[[39m: echarts.0 (3298) starting. Version 1.0.12 in /opt/iobroker/node_modules/iobroker.echarts, node: v14.20.0, js-cont> 2022-09-30 08:21:36.390 - ^[[34mdebug^[[39m: modbus.1 (3352) Plugin sentry Initialize Plugin (enabled=true) 2022-09-30 08:21:38.263 - ^[[32minfo^[[39m: modbus.1 (3352) starting. Version 5.0.4 in /opt/iobroker/node_modules/iobroker.modbus, node: v14.20.0, js-control> 2022-09-30 08:21:38.794 - ^[[34mdebug^[[39m: modbus.1 (3352) Initialize Objects for disInputs: [] 2022-09-30 08:21:38.796 - ^[[34mdebug^[[39m: modbus.1 (3352) Initialize Objects for coils: [] 2022-09-30 08:21:38.797 - ^[[34mdebug^[[39m: modbus.1 (3352) Initialize Objects for inputRegs: [] 2022-09-30 08:21:38.800 - ^[[34mdebug^[[39m: modbus.1 (3352) Initialize Objects for holdingRegs: [{"_address":"40001","name":"flow","description":"flow","uni> 2022-09-30 08:21:38.804 - ^[[34mdebug^[[39m: modbus.1 (3352) Add holdingRegisters.40001_flow: {"_id":"holdingRegisters.40001_flow","type":"state","common":{"> 2022-09-30 08:21:39.035 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.cloud.0 started with pid 3432 2022-09-30 08:21:39.886 - ^[[34mdebug^[[39m: modbus.1 (3352) connect to serial /dev/ttyUSB0 with 9600 2022-09-30 08:21:39.905 - ^[[32minfo^[[39m: web.0 (3371) starting. Version 4.3.0 in /opt/iobroker/node_modules/iobroker.web, node: v14.20.0, js-controller: 4> 2022-09-30 08:21:39.932 - ^[[32minfo^[[39m: modbus.1 (3352) Connected to slave 2022-09-30 08:21:39.936 - ^[[34mdebug^[[39m: modbus.1 (3352) [DevID_1] Poll start --------------------- 2022-09-30 08:21:39.943 - ^[[34mdebug^[[39m: modbus.1 (3352) [DevID_1/holdingRegs] Poll address 40001 - 2 registers 2022-09-30 08:21:40.222 - ^[[31merror^[[39m: modbus.1 (3352) Error response: ba 2022-09-30 08:21:40.247 - ^[[31merror^[[39m: modbus.1 (3352) unknown function code: 0x7e, 0x3f 2022-09-30 08:21:40.272 - ^[[31merror^[[39m: modbus.1 (3352) Error response: 8a 2022-09-30 08:21:40.309 - ^[[31merror^[[39m: modbus.1 (3352) Error response: ff 2022-09-30 08:21:40.451 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fe 2022-09-30 08:21:40.504 - ^[[31merror^[[39m: modbus.1 (3352) Error response: e1 2022-09-30 08:21:40.525 - ^[[31merror^[[39m: modbus.1 (3352) Error response: e2 2022-09-30 08:21:40.621 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fe 2022-09-30 08:21:40.646 - ^[[31merror^[[39m: modbus.1 (3352) Error response: f6 2022-09-30 08:21:40.665 - ^[[31merror^[[39m: modbus.1 (3352) Error response: 7e 2022-09-30 08:21:40.884 - ^[[31merror^[[39m: modbus.1 (3352) unknown function code: 0x19, 0xea 2022-09-30 08:21:40.923 - ^[[31merror^[[39m: modbus.1 (3352) Wrong CRC for frame: 8,4,0,128,244 2022-09-30 08:21:40.943 - ^[[31merror^[[39m: modbus.1 (3352) Error response: ff 2022-09-30 08:21:41.021 - ^[[31merror^[[39m: modbus.1 (3352) Error response: 7e 2022-09-30 08:21:41.057 - ^[[32minfo^[[39m: web.0 (3371) socket.io server listening on port 8082 2022-09-30 08:21:41.076 - ^[[32minfo^[[39m: web.0 (3371) http server listening on port 8082 2022-09-30 08:21:41.372 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fc 2022-09-30 08:21:42.027 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fc 2022-09-30 08:21:42.198 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.info.0 started with pid 3498 2022-09-30 08:21:42.253 - ^[[32minfo^[[39m: host.Messkoffer instance system.adapter.text2command.0 started with pid 3504 2022-09-30 08:21:42.461 - ^[[31merror^[[39m: modbus.1 (3352) Error response: 3e 2022-09-30 08:21:42.745 - ^[[31merror^[[39m: modbus.1 (3352) Wrong CRC for frame: 252,5,241,255,240,240,240,252 2022-09-30 08:21:42.773 - ^[[31merror^[[39m: modbus.1 (3352) unknown function code: 0x0, 0x6c 2022-09-30 08:21:42.784 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fe 2022-09-30 08:21:42.795 - ^[[31merror^[[39m: modbus.1 (3352) Error response: fc 2022-09-30 08:21:42.817 - ^[[31merror^[[39m: modbus.1 (3352) Error response: ff 2022-09-30 08:21:42.826 - ^[[31merror^[[39m: modbus.1 (3352) Error response: 9e 2022-09-30 08:21:42.858 - ^[[31merror^[[39m: modbus.1 (3352) Error response: ff
Das kommt jetzt z.B.! Kann man hier irgendwie auf den Fehler schließen? Ich verstehe hier nur böhmische Dörfer.
MFG
Matthias -
Hallo zusammen!
Ich habe ein SDM630 von Eastron und dazu ein Modbus WLAN Gateway von eBay. link
Ich hab den Modbus Adapter in der Version 5.0.4 installiert.
Bei den EInstellung ist die Instanz Modbus Master, IP vom Gateway ist die 192.168.188.70 und Port 502. ID ist auf 1Ich habe Einträge im Eingangsregister sowie im Holding Register probiert. Dabei auch die 3000er sowie 4000er Register versucht.
Er holt sich einmalig beim Adapterstart die Werte und dann erst wieder nach den 60s die ja den Standart unter „ Wartezeit bis zum erneuten verbinden“ entsprechen.
Dazwischen kommen keine Werte, da anscheinend immer wieder die Verbindung zum Slave unterbrochen wird.
Wenn ich hier die zeit auf 5s einstelle bekommen ich zwar alle 5s neue Werte, aber entsprechend startet auch der Adapter wieder neu.Irgendwas ist hier Faul. Über MQTT welches das Gateway unterstützt bekomme ich alle 5s zuverlässig Werte.
Auch über die Weboberfläche des Gateway bekomme ich Werte, nur Modbus macht hier Probleme.Ich habe den Adapter mal auf „Debug“ gestellt und bekomme folgende Meldungen:
modbus.0 2022-10-01 13:42:24.321 info Disconnected from slave 192.168.188.70 modbus.0 2022-10-01 13:42:24.321 debug Closing client on purpose. modbus.0 2022-10-01 13:42:23.320 debug Cleaning up request fifo. modbus.0 2022-10-01 13:42:23.320 debug Clearing timeout of the current request. modbus.0 2022-10-01 13:42:23.320 debug Socket closed with error modbus.0 2022-10-01 13:42:23.314 debug [DevID_2/holdingRegs] Poll address 0 DONE modbus.0 2022-10-01 13:42:23.308 debug [DevID_2/holdingRegs] Poll address 0 - 88 registers modbus.0 2022-10-01 13:42:23.308 debug [DevID_2] Poll start --------------------- modbus.0 2022-10-01 13:42:23.307 info Connected to slave 192.168.188.70 modbus.0 2022-10-01 13:41:23.260 info Disconnected from slave 192.168.188.70 modbus.0 2022-10-01 13:41:23.259 debug Closing client on purpose. modbus.0 2022-10-01 13:41:22.259 debug Cleaning up request fifo. modbus.0 2022-10-01 13:41:22.259 debug Clearing timeout of the current request. modbus.0 2022-10-01 13:41:22.259 debug Socket closed with error modbus.0 2022-10-01 13:41:22.254 debug [DevID_2/holdingRegs] Poll address 0 DONE modbus.0 2022-10-01 13:41:22.247 debug [DevID_2/holdingRegs] Poll address 0 - 88 registers modbus.0 2022-10-01 13:41:22.247 debug [DevID_2] Poll start --------------------- modbus.0 2022-10-01 13:41:22.246 info Connected to slave 192.168.188.70 modbus.0 2022-10-01 13:40:22.243 info Disconnected from slave 192.168.188.70 modbus.0 2022-10-01 13:40:22.243 debug Closing client on purpose. modbus.0 2022-10-01 13:40:21.242 debug Cleaning up request fifo. modbus.0 2022-10-01 13:40:21.242 debug Clearing timeout of the current request. modbus.0 2022-10-01 13:40:21.242 debug Socket closed with error modbus.0 2022-10-01 13:40:21.234 debug [DevID_2/holdingRegs] Poll address 0 DONE modbus.0 2022-10-01 13:40:21.228 debug [DevID_2/holdingRegs] Poll address 0 - 88 registers modbus.0 2022-10-01 13:40:21.227 debug [DevID_2] Poll start --------------------- modbus.0 2022-10-01 13:40:21.227 info Connected to slave 192.168.188.70
Dabei sind die Meldungen „Socket closed with error“ und „ Clearing timeout of the current request“ auffällig.
Hätte hier jemand noch eine Idee was ich probieren könnte?
Vielen Dank!LG Pierre
-
@sidm Da würde ich auf Dein RS485 <-> LAN TCP Interface oder Einstellungsfehler tippen.
Denn der Anverwandte SDM120 läuft bei mir prima, wie ich in jenem Thread beschrieben habe. Auch 2 laufen damit gut.
Normalerweise hole ich die Daten alle 30 Sekunden, weil das für meine Anwendung reicht. Ich habe jetzt mal testweise auf 3sec, also 3000ms gestellt und das geht.
Ich nutze Interfaces von USRIOT.
In einem anderen Thread hat ein user berichtet, daß auch der SDM72 so läuft. Er wird o.g. Thread um seine Erfahrungen ergänzen.Edit:
Beim mir Modbus 5.0.4
Läuft bei Dir MQTT parallel mit Zugriff auf denselben TCP Server? Wie viel Anfragen kann dieser Server gleichzeitig bedienen? -
@klassisch Danke für deine Antwort!
Das ist auch meine Vermutung und habe Parallel schon mal den Hersteller/Verkäufer angefragt. Die Antwort steht dazu noch aus!
Vielleicht kann ja trotzdem jemand was mit LOG anfragen?
Ich werde auf jeden Fall berichten, wenn es etwas neues dazu gibt!Ich habe es mit eingeschalteten MQTT sowie ausgeschaltet probiert. Bei Beiden habe ich das gleiche verhalten.
-
@sidm Bin jetzt nicht der große Modbus-Adapter Experte - eher sehr weit ab davon. Aber vielleicht kannst Du ja mal die Einstellungen im Adapter und im Interface prüfen bzw. die Parallelaktivitäten wie MQTT oder Webinterface stoppen. Vielleicht ist das Ding überlastet oder kann immer nur einen Zugang gleichzeitig offen halten.
Jedenfalls schnurrt mein SDM120 mit dem USRIOT Interface und dem Modbus Adapter auch bei 3000ms klaglos.
Oder ist der SDM630 damit überfordert? Kenne den nicht und er ist auch die nächsten 8 Monate nicht lieferbar. -
@klassisch Nicht Lieferbar? Schau mal bei Amazon! Da ist er sogar günstiger als sonstwo und sofort lieferbar!
Das Webinterface selber, kann man nicht abschalten, bzw. Gibt es keine Einstellung/Option dafür.
Wie gesagt MQTT habe ich im Gateway abgeschaltet und das war auch im Default auf aus.
Als Modbus dann nicht ging, habe ich einfach mal MQTT ausprobiert und das liefert mir zuverlässig alle 5s die Werte.In den Einstellungen vom Modbus Adapter habe ich schon verschiedene Zeiten ausprobiert, aber der Adapter verliert immer wieder die Verbindung.
Ich habe schon mit dem Sacha aus der Facebook „IoBroker SmartHome und IOT“ Gruppe geschrieben und Telefoniert.
Dieser hat die gleiche Kombination wie ich und dort geht es einwandfrei.Wir sind die Einstellung nochmal durchgegangen und konnten keine Abweichungen feststellen.
-
@sidm Probleme mit der RS485 Verkabelung? Eher nicht, dann würde MQTT auch nicht funktionieren.
WLAN-Thema? eher auch nicht, MQTT geht ja.
Seltsame Sache, wenn es andernorts so geht.Hat der Facebook Kollegen den SDM630 aus der selben Quelle wie Du? Vielleicht gibt es dort kleine Unterschiede.
-
@klassisch
Habe gerade diesen Thread gesehen und vielleicht kann wer von Euch mich bezüglich meiner Frage informieren:Ich möchte gerne nachfolgend beschriebe Einrichtung vornehmen, bin mir aber nicht sicher ob das möglich ist!
Router TP Link Archer 600, daran angeschlossen per LAN:
PowerLan adapter Devolo dLAN 1200+ mit gleicher SSID plus 2 Adapter dLAN 1200+ WiFi ac
und
TP Link Deco M4 als Router (Haupt Deco) mit eigener SSID plus 3 Decos => Mesh SystemIst bei dieser Ausführung auch einen Master und ein Slave, wie im Adapter-Info beschrieben, konfigurierbar oder sind zusätzliche Maßnahmen erforderlich?
-
@opa75 Nachtrag; Ich möchte mit den beiden Einrichtungen meine Geräte über einen Iobroker steuern. Geht das überhaupt?
-
@opa75 Offen gestanden habe ich jetzt die Verbindung zu Modbus nicht verstanden. Das scheint eine Frage zur Netzwerkkonfiguration zu sein.
-
@klassisch Meine Frage ist, kann man Iobroker, installiert auf einem Raspy 4, mit 2 verschieden WLAN IP und SSID, Geräte verwalten.
Ich habe gelesen, dass man mit Master und Slave sowas machen kann.Sind dafür meine Geräte geeignet?
-
Ich hab jetzt mal den Stick und das Gerät an meinen PC angeschlossen und hier klappt das Abrufen der Daten wunderbar.
Folgende Einstellungen hab ich dort gewählt. (leider ein screenshot)
Protocol: Modbus RTU
Adressing convention: Register adress (starting from 0)
Bitrate: 9600
Parity: NONE
Stop bits: 1
DTR: Active
RTS: Active
Timeout: 1000ms
Delay between polls: 10ms
Device ID: 1
Holding Registers
Adress: 33 (hab ich jetzt mal beispielsweise ausgewählt)
Length: 10
Display options: 32bit sw. floatJetzt würde mich interressieren, was ich korrekterweise im ioBroker einstellen muss.
DTR /RTS finde ich z.B. gar nichtWelchem TYPE entspricht 32 bit sw. float?
Muss ich als Register bei Holding immer die 40000 voranstellen oder wirklich die 1 oder eben 33?
MFG
Matthias
-
@w04g005 sagte in Modbus adapter:
Muss ich als Register bei Holding immer die 40000 voranstellen oder wirklich die 1 oder eben 33?
Ich tippe mal, daß die Frage mit den alias zu tun hat. Siehe Erklärung in einem frühen Post https://forum.iobroker.net/post/31957 vom Entwickler.
-
@opa75 sagte in Modbus adapter:
Ich habe gelesen, dass man mit Master und Slave sowas machen kann.
Es könnte sein, daß hier verschiedene Themen vermengt werden.
Wir sind hier noch immer im Modbus Thread. Modbus hat Master und Salve. Der Master kotrolliert den Modbus, die Slaves werden durch den Master gesteuert. Im ioBroker Modbus Adapter kann man einstellen, ob diese Instanz als Master agieren soll (häufigster Fall, wenn z.B. Zähöer abgefagt werden) oder als Slave (wenn es im entsprechenden Modbus bereits einen Master gibt und ioBroker diesem zuarbeitet). Das war jetzte eine Sache, der Modbus. Der stammt aus den Siebzigern und und dessen Architektur hat mit ioBroker erst mal nichts zu tun.Jetzt kommen wir zu einer anderen Sache, dem ioBroker.
ioBroker kann eine Multi-Host Architektur aufbauen und verwendet dafür ebenfalls den Begriff Master und Slave. Aber das hat nichts mit Modbus zu tun. Ich nutze das nicht (weil ich die zusätzliche Komplexität bei Updates vermeide) und kann deshalb nur näherungsweise erklären. Der ioBroker Master ist die "zentrale Anlaufstelle" des ioBroker und läuft auf dem "Hauptrechner", ioBroker Slaves läufen meist auf kleineren Rechnern sozusagen als Satelliten. Oft, um z.B. einen an einem anderen Ort befindliches Gerät (oder einen Bus), welches über USB angebunden wird, über Ethernert anzubinden. Das wird von manchen Usern verwendet, um z.B. einen Smartmeter-Lesekopf mit USB oder einen Modbus <-> USB Konverter in den ioBroker einzubinden. Ich kann dazu nicht so viel sagen, weil ich diese Themen für mich anders löse (mit speziellen Serial <-> Lan Konvertern, die ich wie ein Stück Hardware behandle).Ob man Master und Slave auf ein und demselben Rechner laufen lassen kann weiß ich nicht. Vielleicht mit VM, Containern etc. Ich sehe aber darin keinen Vorteil. Das wäre dann eine Frage in einem anderen Unterforum, z.B. "ioBroker Allgemein" wert.
Meine Frage ist, kann man Iobroker, installiert auf einem Raspy 4, mit 2 verschieden WLAN IP und SSID, Geräte verwalten.
Das wäre auch eine Frage für das Unterforum "ioBroker Allgemein". Ich bin weder Netzwerk- noch Raspi-Spezialist. Ich betreibe ioBroker auf einem alten Win Laptop. Da kann man prinzipiell per WLAN und LAN, also mit 2 verschiedenen IPs, einmal mit und einmal ohne SSID zugreifen. In der Praxis habe ich das WLAN abgeschaltet, weil Ethernetkabel stabiler ist. Ich greife also im Alltag über eine IP und ohne SSID darauf zu. Natürlich kann der Zugriff auch von einem Gerät aus meinem WLAN heraus erfolgen. Aber das richtet ja das Netzwerk und der Router.
-
@klassisch Besten Dank für diese ausführliche Antwort. Jetzt verstehe ich den Zusammenhang etwas besser, aber es sind noch Fragen offen.
Vielleicht finde ich, durch gezieltere Fragestellung, weiter Informationen im Forum. -
Grüß euch,
ich habe schon länger eine Wago PFC200(slave) und einen RPI4(master) im Einsatz.
Bis jetzt hab ich alles soweit zu meiner Zufriedenheit hinbekommen. Jetzt will ich aber an die Wago eine paar Byte übergeben (Positionen für die Rollläden setzen) und mir folgendes aufgefallen:
Ich ändere z.b den Wert der Adresse 32005_byOGRollZoeBSetPos
welcher als unsigned 8-bit (big-endian) konfiguriert ist von 0 auf 255
und es ändert sich der Wert der Adresse 32005_byOGRollZoeSSetPos
welcher dann der little-endian ist dann auf 0 (und umgekehrt)Das bedeutet für mich, das man little-endian und big-endian nicht getrennt behandeln kann?!
Habe ich da einen Verständnis Fehler oder muss ich das anders machen?
Ich habe noch Fotos, vielleicht kann jemand erkennen ob ich da einen kompletten schwachsinn beieinander habe.
Iobroker Seite:
Wago e!Cockpit Seite:
Gruß
Patrick -
@marsmännchen
Ich habe eine WAGO 750-880 im Einsatz, evtl. kann ich dir weiterhelfen.
Ich verstehe noch nicht ganz was du mit Big/Little Endian machen willst.
Lt. deinem Screenschot aus dem ioBroker hast du die Adresse 32005 zweimal belegt. Der Unterschied bei Big Endian und Little Endian ist die Byte-Reihenfolge wenn mehrere Bytes übertragen werden, z.B. einem 32-Bit-Wert. Da du nur ein Byte hast, ist das irrelevant. Erklärung Big/Little-Endian
Ich kenne mich mit e!Cockpit nicht aus, ich habe Codesys im Einsatz. -
@dolomiti
ja die Adressen hatte ich oft 2mal belegt. Kann mich nicht erinnern warum, ich denke ich hab zu Codesyszeiten noch mit 16-bit gearbeitet. Der Fehler existiert also schon lange, nur wollte ich jetzt erst anfangen von IoBroker die Rolladenpositionen zu setzen.Habe das nun geändert, aber jetzt werden auch Coils in die Wago von Iobroker geschrieben.
Das heißt quasi wenn ich Position für Rollläden im Raum X setze dann gehen Lampen in den Räumen Y an.
Seltsam diese Adressierung.
Zum Beispiel diese Bereiche:
der HoldingRegister 32009
beschreibt gleichzeitig die Coils (diskreteAusgänge) 32912-32919:
Wie kann das nur möglich sein?