NEWS
Modbus adapter
-
Das scheint tatsächlich die Lösung zu sein!
Mein Stromzähler lässt sich nun auch auslesen. Ich hatte zwischenzeitlich ein Gateway (mbusd) dazwischen um diesen "bug" in iobroker zu umgehen. Dort kann man exakt diese Zeit auch konfigurieren. Das hilft natürlich nicht bei TCP Verbindungen.Möglicherweise ist eine Konfiguration aber auch nicht notwendig. Ich glaube das die Wartezeit von 100ms grundsätzlich funktionieren wird.
Irgendwie will nur ein Host in meiner Multihost Umgebung die neue Version nicht nutzen. Dort wird noch wie vor nicht gewartet. Keine Ahnung warum. Upload habe ich bereits gemacht...
Willst Du das auf Github auch mal für Bluefox als PR bereitstellen? Dann kann er es ja leicht hinzufügen oder es notfalls noch verbessern.
Edit: Zu früh gefreut... Ich habe jetzt doch nach einiger Zeit wieder Verbindungsabbrüche. Schade. Mit dem Gateway hat es völlig schmerzfrei funktioniert.
Edit: Ich habe nun selbst auch einen Fork gemacht und Deine Änderungen gemerged. Ich habe nun allerdings 500ms eingestellt, da dies beim Gateway auch so war. Test läuft, ich bin gespannt...
-
Nachdem 500ms auch keine Veränderung gebracht haben, bin ich nun wieder zu meiner Gateway Lösung gewechselt. Das bringt mir jedenfalls bei den seriellen Schnittstellen eine störungsfreie Kommunikation. Für Modbus TCP habe ich noch keine Lösung.
Fakt ist aber, dass der Adapter nicht sauber funktioniert. Jedenfalls nicht mit jedem Gerät!
-
-
Hallo...
nach langer Zeit habe ich heute mal den Modbus-Adapter upgedatet.
Von 1.1.1 auf 3.0.0
Seitdem läuft Modbus TCP nicht mehr.
Adapter ist zwar grün, schmeiß aber die Meldung list of port undefined und meine SPS reagiert nicht mehr.
Ist das Problem lösbar oder muss ich auf den alten Adapter zurück? -
Hallo,
ich "kämpfe" auch schon ein paar Tage mit dem Modbus. Hier soll ein DHV 4013 Stromzähler abgefragt werden. Der erste USB-Adapter ging wegen ständiger Fehler zurück an Amazon. Der zweite lief so halbwegs. Der dritte läuft "zu Fuß" per Terminal und seriell per Node-Red. Mit dem Modbus- Adapter vom iobroker leider ständig Timeouts. 5 Register klappen, ab dem 6. hagelt es Fehler.Danach fängt sich der Port nicht mehr. Ich musste dann erst per USB-reset den USB - Seriell Adapter zurücksetzen. Das geht per Script, ist aber wohl nicht die feine englische Art.
Unter Node-Red bekomme ich jetzt die gewünschten Werte übertragen. Dem Modbus-Adapter vom iobroker könnte eine Option, welche die Pause zwischen den Abfragen einstellbar macht, nicht schaden.
-
Hallo
kämpfe gerade mit den Diskreten Eingängen
möchte meine Ladestation (PhönixContact EM-CP-PP-ETH) per modbus-TCP abfragen
Diskrete-Ausgänge Holding-Registers / Eingangsregister Abfragen funktionieren einwandfrei.
Sobald ich bei Diskrete Eingänge etwas einstelle, bleibt der Adapter bei Gelb stehen
Fehlermeldung:modbus.0 2019-08-04 16:36:10.914 warn Poll error count: 5 code: {"errorCode":130,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"} modbus.0 2019-08-04 16:36:09.910 warn Poll error count: 4 code: {"errorCode":130,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"} modbus.0 2019-08-04 16:36:08.905 warn Poll error count: 3 code: {"errorCode":130,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"} modbus.0 2019-08-04 16:36:07.901 warn Poll error count: 2 code: {"errorCode":130,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"} modbus.0 2019-08-04 16:36:06.897 warn Poll error count: 1 code: {"errorCode":130,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"}
muss ich das noch irgendwo etwas einstellen????
per qModMaster funktioniert die Abfrage -
Das deutet auf ein Adressproblem hin. Unter www.simplymodbus.ca findet sich folgender Hinweis:
The data address received in the query is not an allowable address for the slave. More specifically, the combination of reference number and transfer length is invalid. For a controller with 100 registers, a request with offset 96 and length 4 would succeed, a request with offset 96 and length 5 will generate exception 02.
Du versuchst anscheinend auf eine "verbotene" Adresse zuzugreifen.
Hast du schon mal einen Mitschnitt mit Wireshark gemacht. Damit kann man recht gut sehen was ioBroker fragt und der Slave antwortet. Du kannst den Mitschnitt auch gerne hier posten und ich versuche zu helfen.Gruß
Dolomiti -
@Dolomiti
wie kann es sein, wenn im qModMaster genau diese Adressen funktionieren.
der Wireshark muss dann auf dem iobroker laufen oder -
Ich hatte an anderer Stelle auch schon mal das Problem, dass ich die Adresse +1 oder -1 eingeben musste. Manche Geräte/Programme fangen bei Null andere bei Eins an zu zählen.
Es wäre zum mitschneidern am einfachsten, wenn Wireshark auf dem ioBroker laufen würde, ansonsten musst du einen Switch haben, der an einem Port alles mitsniffen kann. So habe ich es bisher gemacht. -
so wie es aussieht, habe ich den Fehler gefunden.
hier muss der Haken gesetzt sein:
seitdem läuft es
Dank trotzdem
-
@Bluefox Mal eine Frage. Kann man diesen Wasserzähler damit auslesen? Habe diesen von den Stadtwerken bekommen.
Habe mal gelesen, dass man nur einen kompatiblen USB Stick zum empfangen der Daten benötigt. Ich frage mich nur wie ich das Hardwareseitig umsetze.
https://www.kamstrup.com/de-de/wasserzaehlerloesungen/intelligente-wasserzaehler/multical-21
-
Ich brauche wieder einmal eure Hilfe.
Will von ein CMI von TA die Analog Werte auslesen.
Da müsste ja im Iobroker Master als Typ im Adapter eingestellt werden, oder?Nur bekomme ich keine Verbindung, wenn ich es so einstelle
Stelle ich den Typ auf Slave, kann ich eine Verbindung herstellen, wenn ich die IP auf 0.0.0.0 ändere
Nur kommen keine Werte von der CMI an. Habe einen Punkt unter Eingangsregister, sowie Holding Registers angelegt.
Übersehe ich was?
Unter Fhem kann ich per Modbus einwandfrei auf die CMI zugreifen.
-
Hallo.
Könnte mir mal bitte wer weiterhelfen.
Habe diesen Strom/Energyzähler :
http://www.algodue.com/uem80.htmlverbunden habe ich ihn mit einem usb-485 adapter am raspberry.
Habe auch ein Datenblatt zu den Modbus, aber für mich ist das leider nur "Spanisch"
Am PC mit der Orginalen Software des Herstellers kann ich mir die Daten des Zählers ansehen.Habe schon so ziemlich alle typen im Eingangs und Holding register durchprobiert aber leider ohne erfolg.
Hat irgendwer einen tipp für mich? würde mich sehr freuen
danke -
Wieso im Modbus Adapter IP = 10.0.0.21 und darunter (denke ist FHEM) 10.0.0.6 ?
-
Du hast also von der Bezeichnung her wirklich den hier: UEM80-4D R for RS485 Modbus RTU/ASCII communication?
Kommuniziert die "Originale SW" des Herstellers auch über Modbus mit dem Zähler?
Mal etwas probiert bei z.B. Holding oder Eingangsregister einzutragen?
Stimmen die Kommunikations Einstellungen mit dem was im Zähler konfiguriert ist über ein ?
-
@wendy2702
Die 10.0.0.6 ist die Adresse vom IOB, die 10.0.0.21 ist die Adresse vom CMI.Das zweite Bild ist von der CMI, dort ist die 10.0.0.6 eingetragen, damit die CMI weis wohin sie die Daten schicken soll
Fehler gefunden, man sollte auf der CMI Seite auch die richtige Adresse einstellen, hatte aus versehen eine 10 statt einer 1 stehen.
Läuft nun.
Aber ich muß den Modbus-Adapter auf Slave einstellen und die IP 0.0.0.0 verwenden, dann funktioniert es. -
@wendy2702
Ja habe den UEM80-4D R for Mudbus RTU/ASCII
Ja mit der Orginal SW kann ich die Daten auslesen am PCHolding bzw Eingangsregister habe ich eingegenben.
bekomme aber immer:
bin mir nicht sicher bezüglich der Adressen, aber wenn ich das Datenblatt richtig verstehe,
müsste bzw fängt er im register 0 an mit einem wort länge 2 wo der wert
"V1 • L-N voltage phase 1" hinterlegt sein muss. (also die Spannung von L1)
Kommunikation einstellungen müssten eigentlich passen.
9600 ist auch die Baud die am PC läuft
verbunden bin ich mit einem usb 485 Kabel
-
Adresse 0 kann nicht sein.
Versuche mal 4096
-
@wendy2702 said in Modbus adapter:
4096
mir ist was anderes aufgefallen:
sollte bei der port auswahl nicht /dev/ttyUSB0 für den adapter auftauchen?
-
okay habe mal ein neues system aufgesetzt und siehe das es läuft.
keine ahnung warum er beim alten system den dev/ttyUSB0 nicht gefunden hat.So aber nun würde mich mal interessieren wie du auf die adresse 4096 kommst die übringends funktioniert.
auch drüber 4098, 4100, 4102,.... bekomme ich werte.
Ich versteh im moment nur nicht den zusammenhang zu der aufgeführten liste bei der doku.Edit:
Okay, sorry stand auf der Leitung sind ja Hex werte 1000HEX = 4096 Dezimal