NEWS
Modbus RS485 Tutorial/Einstieg gesucht
-
@wolfgangfb Hast Du eine Doku zu dem Stromzähler? Die bräuchten wir schon...
Den USB Stick an den Rechner stecken und dann musst Du den Modbus Adapter (Broker/Client) installieren und konfigurieren. Hier trägst Du die IP ein und stellst auf Modbus via RTU ein. Den Rest vermutlich so lassen, dann müsste er sich schon einmal mit dem Zähler verbinden (2 grüne Kreise in der Instanz). Um Daten lesen zu können brauchen wir dann die Beschreibung welche Register ausgelesen werden können.
-
So, ich habe den USB Stick in den Raspberry gesteckt, auf dem auch IO Broker läuft. Als IP habe ich die IP des Raspberry eingetragen. Beim Zigbee Stick musste ich explizit das Device angeben, hier wird das nicht benötigt?
Bei Verbindungsparameter habe ich bei "TCP/Serielle RTU" die Auswahl zwischen TCP, Serial und RTU over IP. Hier habe ich "RTU over IP" gewählt (das einzige wo RTU vorkommt). Der Adapter bleibt gelb, Verbunden mit Hots grün, Lebenszeichen grün, Verbunden mit Gerät oder Dienst rot. -
@wolfgangfb Mach das mal lieber(die Abfrage als TCP-IP)nicht. Dein USB-Stick steckt an dem Raspi mit dem IO-Broker. Da du dann seriell abfragst, sollten deine Einstellungen in etwa so aussehen:
Die Register, die du abfragen musst stehen in der Beschreibung vom Zähler.
Meist sind dies dann Holding-Register -
@wolfgangfb @Radi hat Recht. Da das Teil direkt im Rechner steckt, braucht man kein TCP, sondern direkt über serielle, als die das eingebunden wird ansprechen.
-
@joergh @wolfgangfb Bitte noch die Einstellungen für die serielle Schnittstelle und das Gerät beachten. Die Baudrate sollte im Handbuch stehen. Die Geräteadresse (ID) wird wahrscheinlich nicht wie in meinem Beispiel die 2 sondern die 1 sein. Einen Screenshot, wie die Register abgfragt werden hänge ich auch noch an. Aber die Adressen musst du auf deinen Zähler anpassen. Das sind mit Sicherheit andere Register als bei mir.
So sehen meine Registerabfragen aus. -
Hi, ich komme leider nicht weiter. Ich habe wie gesagt den WINGONEER CH340E (5,99 bei Amazon) und finde dazu keine Anleitung im Netz.
pi@raspberrypi:~ $ ls -l /dev/serial/by-id insgesamt 0 lrwxrwxrwx 1 root root 13 19. Mai 12:51 usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB1
Aber egal was ich bei den Verbindungsparametern einstelle, der letzte Punkt (Verbunden mit Gerät oder Dienst) bleibt rot.
Bei Port habe ich /dev/ttyUSB1 eingetragen, aber was ich als Baudrate und Geräte ID eintragen soll ist mir nicht klar.
Alternaativ: Welchen Adapter verwendit Ihr bei dem die Parameter bekannt sind?
-
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
Hi
Ich habe eine Stromzähler DDM1850Die Suche ergibt eine Makita ....
@joergh sagte in Modbus RS485 Tutorial/Einstieg gesucht:
@wolfgangfb Hast Du eine Doku zu dem Stromzähler? Die bräuchten wir schon...???
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
@radi
Hi, ich komme leider nicht weiter.siehe oben ...
aber was ich als Baudrate und Geräte ID eintragen soll ist mir nicht klar.
siehe oben ..
Wir brauchen schon die richtig Typenbezeichnung von deinem Stromzähler , bzw. eine Anleitung wo die Modbus-Register dazu drin stehen , inkl. der Bautraten , sonst stocherst du nur rumm ..
-
OK, meine Augen sind nicht mehr so gut. Der Zähler heißt DDM18SD
https://www.re-innovation.co.uk/docs/talking-to-a-ddm18sd-energy-meter/Alternativ liegt hier noch ein SINOTIMER DDS548MR zu dem ich aber auch keine Anleitung im Netz finde.
Aber: Ich bekomme ja schon den USB Adapter nicht eingebunden.
Ist die Baudrate vom Zähler oder vom USB Adapter abhängig? -
@wolfgangfb
Für den DDM18SD habe ich auch die Register gefunden:
-
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
Aber: Ich bekomme ja schon den USB Adapter nicht eingebunden.
Aber egal was ich bei den Verbindungsparametern einstelle, der letzte Punkt (Verbunden mit Gerät oder Dienst) bleibt rot.
Der wird erst Grün , wenn die Verbindung ( steht ) / auch richtig das Register abgefragt wird.
zu dem ich aber auch keine Anleitung im Netz finde.
Sorry ,dabei kann ich dir nicht helfen .
-
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
habe ich auch die Register gefunden:
Ich mache es immer so :
https://forum.iobroker.net/topic/51804/erledigt-modbusfrage-mit-waveshare-rs485-to-eth-b/28
teste erst mit einem Windows Programm .... dann mit ioBroker .
-
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
lrwxrwxrwx 1 root root 13 19. Mai 12:51 usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB1
Aber egal was ich bei den Verbindungsparametern einstelle, der letzte Punkt (Verbunden mit Gerät oder Dienst) bleibt rot. Bei Port habe ich /dev/ttyUSB1 eingetragen, aber was ich als Baudrate und Geräte ID eintragen soll ist mir nicht klar. Alternaativ: Welchen Adapter verwendit Ihr bei dem die Parameter bekannt sind?
Wenn er schonmal zwei grüne anzeigt, heisst dass, dass er sich mit dem Zähler verbindet. Der letzte wird erst grün, wenn eine erfolgreiche Abfrage eines oder mehrerer Register stattgefunden hat. Also liegt es nun vermutlich an den Registereinstellungen. Was sagt denn Dein Logfile im Debug Modus?
-
@joergh sagte in Modbus RS485 Tutorial/Einstieg gesucht:
Wenn er schonmal zwei grüne anzeigt, heisst dass, dass er sich mit dem Zähler verbindet.
Der Adapter zeigt auch zwei mal grün wenn überhaupt kein USB Stick mit dem Raspi verbunden ist. Von daher würde ich da keine Rückschlüsse ziehen.
Wie würden denn die Einstellungen aussehen wenn ich z.B. die Leistung abfragen will? Wo trage ich das ein? Diskrete Eingänge? Ausgänge wohl kaum. Eingangsregister oder Holdingregister? Low-Byte ist 0x1a, High Byte ist 0. Ist die Adresse dann 6656 (0x1a00) oder 26 (0x1a) oder etwas ganz anderes? -
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
@joergh sagte in Modbus RS485 Tutorial/Einstieg gesucht:
Wenn er schonmal zwei grüne anzeigt, heisst dass, dass er sich mit dem Zähler verbindet.
Der Adapter zeigt auch zwei mal grün wenn überhaupt kein USB Stick mit dem Raspi verbunden ist. Von daher würde ich da keine Rückschlüsse ziehen.
Wie würden denn die Einstellungen aussehen wenn ich z.B. die Leistung abfragen will? Wo trage ich das ein? Diskrete Eingänge? Ausgänge wohl kaum. Eingangsregister oder Holdingregister? Low-Byte ist 0x1a, High Byte ist 0. Ist die Adresse dann 6656 (0x1a00) oder 26 (0x1a) oder etwas ganz anderes?Hmmm, ok, ist mir auch neu. Bei TCP muss er eine Verbindung herstellen können, kann an der seriellen Emulation liegen...zur seriellen Schnittstelle hat er die Verbindung ja schon aufbauen können...
Die Einstellungen stehen in der Beschreibung die Du oben gepostet hast. Da die Qualität ziemlich schlecht ist, kann ich es kaum lesen. Was ich sehen kann ist, dass er zwei Arten von Registern hat, Data (Holding) Register (0x04) - read only und Parameter Register (0x03) - read & write.
Wenn die Leistung in Data Register 0x001a ist, dann ist das Register 26. Das musst Du dann eintragen bei Holding Register vorne als Adresse des Registers, dann die restlichen Paramter dahinter korrekt setzen und "Abfrage" nicht vergessen...Aliases muss aus sein.Sieht dann so aus (bei mir sind aber alle Adressen ab 40000):
-
Da die Qualität ziemlich schlecht ist
Müsste das sein , habe es mal für Ihn gegoogelt .
https://de.aliexpress.com/item/33003316323.htmlNaja .... , Made in CE
-
@glasfaser sagte in Modbus RS485 Tutorial/Einstieg gesucht:
@wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:
habe ich auch die Register gefunden:
Ich mache es immer so :
https://forum.iobroker.net/topic/51804/erledigt-modbusfrage-mit-waveshare-rs485-to-eth-b/28
teste erst mit einem Windows Programm .... dann mit ioBroker .
Ich habe mir dieses Programm besorgt. In der Gerätesteuerung habe ich gefunden, dass Com3 ein USB Device ist. Das habe ich eingetragen und auf Connect gedrückt, es kam auch keine Fehlermeldung.
Wenn ich den Stromzähler startet kommt im Display zuerst "AD 0013" "b 9600" "C 1000", ich vermute dass 13 eine Adresse ist, b9600 eine Baudrate, was C1000 ist weiß ich nicht.
In dem Programm selbst kommt aber immer die Medlung "Modbus time out"
Grundsätzliche Frage: Ich habe den Ausgang A des Stromzählers mit Pin A des RS485 Adapters verbunden und B mit B. Ist das richtig? Oder muss wie bei RS232 RX und TX vertauscht werden?
Was schließe ich an "gnd" an?
n der Doku des Stromzählers steht: Serielle Parameter 9600 Even 1, stelle ich das auch im Modbus Simulator under "Modbus RTU" ein? -
@wolfgangfb
Ich antworte mir mal selbst.
Ich bin immer noch nicht weiter und würde einfach gerne wissen, ob bei Radzio Modbus Master Simulator die Meldung "Modbus message timeout" daher kommt, das der Stick oder die seriellen Parameter nicht stimmen oder ob es auch sein kann, dass der Stick zwar erkannt wird aber nur die Adresse nicht gelesen werden (weil z.B. falsch eingegeben) -
@wolfgangfb Du hast A mit A und B mit B verbunden?
Kreuze mal die Leitungen.
Hintergrund: Die Zählerindustrie (zumindest die Europäische) interpretiert die etwas umständliche (bzw. sehr abstrahierte) RS485 Spec sehr streng. Die Halbleiterindustrie in sich geschlossen gleich - aber gerade anders herum. Und die meisten Stickhersteller schließen sich der Halbleiterindustrie an, weil sie sich am Datenblatt orientieren. -
Versuche erst einmal die communication wie im Beispiel oben hinzubekommen.
Also mit Windows PC und Realterm oder Hterm. So brauchst du erst einmal nur die CRC berechnen.
Dann ergibt dies wie aus dem Beispiel oben,
Baud 9600
Parity Even
Stopbit 1
Hardwarecontroll RTS/CTS
Comport des Sticks
Die Adresse ist 13 dec in hex ist 0D
Calculator CRC-16 Modbus:
0D0400000002 (Processed data x0d 0x04 0x00 0x00 0x00 0x02 )
Ergibt 0x0771
Gedreht 0x71 0x07
Gesendet per Realterm wird dann :
0x0d 0x04 0x00 0x00 0x00 0x02 0x71 0x07In den Windows Einstellungen ist zu prüfen ob der Stick und der Treiber erkannt wurde.
Nachtrag, in der Beschreibung steht :
Die codierung format, parität (auch parität) und daten übertragung modus (acht daten bits, one stop bit) erfüllen die MODBUS-RTU standard anforderungen.
Vermute die 02 ist das Low Byte Check Digit, dann wäre das Baud 9600 8n1. -
Hallo
Ich hab mir auch so ein Ding zugelegt. Hatte anfänglich auch Probleme damit. Wenn man das Ding unter Spannung nimmt, erschien bei mir Ad070 und das ist die Adresse. Das Problem warum bei mir keine Kommunikation zustande gekommen ist war, das die Parität auf "Even" eingestellt war. Hab dann mit dem Programm "Modbus Poll" die Änderungen vorgenommen Parität auf "nein" (zu verschickender Wert 2). Jetzt die Hexwerte der Adressen umwandeln und plus 1. Siehe da ich kann das Gerät auslesen.