Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Modbus RS485 Tutorial/Einstieg gesucht

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Modbus RS485 Tutorial/Einstieg gesucht

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      klassisch Most Active @WolfgangFB last edited by klassisch

      @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.

      1 Reply Last reply Reply Quote 0
      • Ralla66
        Ralla66 Most Active @WolfgangFB last edited by Ralla66

        @wolfgangfb

        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 0x07

        In 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.

        1 Reply Last reply Reply Quote 0
        • I
          ichbinblue2010 last edited by

          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.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @ichbinblue2010 last edited by

            @ichbinblue2010 sagte in Modbus RS485 Tutorial/Einstieg gesucht:

            Ich hab mir auch so ein Ding zugelegt.

            was bitte?

            @ichbinblue2010 sagte in Modbus RS485 Tutorial/Einstieg gesucht:

            Wenn man das Ding unter Spannung nimmt, erschien bei mir Ad070 und das ist die Adresse.

            wo erscheint das?

            @ichbinblue2010 sagte in Modbus RS485 Tutorial/Einstieg gesucht:

            Siehe da ich kann das Gerät auslesen.

            und was können wir dir helfen?

            https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

            1 Reply Last reply Reply Quote 0
            • W
              WolfgangFB last edited by

              @ralla66
              Ich greife das Thema nochmal auf.
              Ich habe mir jetzt ein SDM230 Energiemeßgerät besorgt und damit zumindest erste Erfolge erzielt.
              Ich habe mir auf Github das Programm QModMaster besorgt und nacchdem ich einen 100 Ohm Widerstand in die Leitung geschaltet habe (bin davor davon ausgegangen, dass bei 40 cm Leitungslänge kein Widerstnd notwendig ist) hat sich der Stromzähler mit dem Programm verbuden (Anzeige im Gerätedisplay) und ich konnte einen scan der "Holding Registers" machen.
              holding.jpg
              Jetzt die Frage: Wie geht es weiter? Im Modbus Adapter muss ich ja die Register eintragen. Wie komme ich aus den gescannten Holding Registern auf die Registernummern? Ich konnte auch keinerlei Änderung der Register erkennen, auch wenn eine Last zugeschaltet worder ist oder nicht.

              Ich habe dann nochal das DDM18SD angeschlossen, als Adresse habe ich 13 und 19 (evtl. ist die Anzeige 013 ja hexadezimal) eingetragen, aber in QModMaster kommt immer nur ein Timeout.

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @WolfgangFB last edited by

                @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                auf die Registernummern

                di stehen in der Bedienungsanleitung des SDM

                W 1 Reply Last reply Reply Quote 0
                • W
                  WolfgangFB @Homoran last edited by

                  @homoran sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                  @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                  auf die Registernummern

                  di stehen in der Bedienungsanleitung des SDM

                  Dummerweise stehen die da nicht. Da steht nur, wie man die Adresse, Parität etc. ändern kann, mehr leider nicht.

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @WolfgangFB last edited by

                    @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                    Dummerweise stehen die da nicht.

                    doch!
                    https://stromzähler.eu/media/pdf/0e/ca/1d/SDM230-Modbus.pdf

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      WolfgangFB @Homoran last edited by

                      @homoran sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                      @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                      Dummerweise stehen die da nicht.

                      doch!
                      https://stromzähler.eu/media/pdf/0e/ca/1d/SDM230-Modbus.pdf

                      Ooooh, danke, damit werde ich es später probieren. Beim Zähler selbst ist nur ein ca. Din-A3 Blatt großes gefaltetes "User Manual V1.8" dabei.

                      Auf Seite 20 des Manuals V1.4 sehe ich, dass man wohl mehrere Modbus Geräte in Reihe schalten kann.
                      Beim Modbus Adapter kann man zwar "mehrere Geräte IDs" aktivieren, aber unter "Allgemein" "Geräte ID" kann ich nur eine ID angeben. Wie gebe ich da mehrere Geräte ein?
                      Beim SDM230 kann man ja die seriellen Parameter wie Baudrate, Parität ändern sowie die ID ändern. Beim DDM180 (falls ich für den auch so eine Anleitung finde) scheinen diese Parameter fest vorgegeben zu sein (jedenfalls gibt es keinen Knopf auf dem Zähler wo ich etwas ändern kann und beim Einschalten steht "Add 013" was wohl die Adresse ist).
                      Ich vermute mal, dass man keine zwei Geräte zusammenschalten kann, die entweder (fest) die gleiche Adresse haben oder (fest) unterschiedliche seriellen Parameter haben.

                      Homoran 2 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @WolfgangFB last edited by

                        @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                        dass man wohl mehrere Modbus Geräte in Reihe schalten kann.
                        Beim Modbus Adapter kann man zwar "mehrere Geräte IDs" aktivieren, aber unter "Allgemein" "Geräte ID" kann ich nur eine ID angeben. Wie gebe ich da mehrere Geräte ein?

                        nicht in Reihe!!!
                        die müssen parallel geschaltet werden. Ist ja ein Bus.

                        wenn du mehrere IDs aktivierst erscheint eine Spalte ID

                        Die Geräte müssen aber vor der Anbindung an den Bus richtig konfiguriert sein.

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @WolfgangFB last edited by

                          @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                          falls ich für den auch so eine Anleitung finde

                          finden setzt Suchen voraus!

                          @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                          Beim DDM180

                          den finde ich gar nicht.

                          @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                          scheinen diese Parameter fest vorgegeben zu sein

                          mag sein, dürfte der Nummer nach auch extrem lowcost sein.

                          Dann müssen alle anderen im Bus auf die selben Übertragungsparameter eingestellt werden

                          W 1 Reply Last reply Reply Quote 0
                          • W
                            WolfgangFB @Homoran last edited by

                            @homoran sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                            @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                            falls ich für den auch so eine Anleitung finde

                            finden setzt Suchen voraus!

                            Ich habe gesucht.
                            Gefunden habe ich bisher folgendes:
                            https://www.aggsoft.com/serial-data-logger/tutorials/modbus-data-logging/noname-ddm18sd-mmd18sd.htm

                            Da weiß ich aber noch nicht wie ich aus dem Modbus Offset auf die Adressen komme.

                            https://www.re-innovation.co.uk/docs/talking-to-a-ddm18sd-energy-meter/

                            Da scheint es jemand geschafft zu haben, wie die Adressen lautet sehe ich darin aber auch nicht.

                            In
                            https://github.com/re-innovation/DDM_Energy_Meter

                            fangen die Adressen auch bei 0 an.

                            https://github.com/digimp/DDM18SD

                            hat etwas mit Tasmota gemacht.

                            https://registry.platformio.org/libraries/reaper7/SDM

                            Macht das auch irgendwie ohne diese Adressen.

                            Aber auf
                            https://www.aggsoft.com/serial-data-logger/tutorials/modbus-data-logging/eastron-sdm230.htm

                            Finde ich auch die Adressen des 230 als Offset und hier kenne ich ja die Absolutadressen.
                            Der Strom des 230 ist ja 30007 und als 2Offset" wird 6 angegeben. Beim DDM118 ist der Offset für den Strom 8, kann ich dann einfah daon ausgehen, dass die Adresse dann 30009 ist?

                            Bei einigen anderen Zählern habe ich noch Low und High Adressen gefunden. Kann man die in "Gesamtadressen" umrechnen?

                            Homoran 2 Replies Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @WolfgangFB last edited by Homoran

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              Beim DDM118

                              ist das der vorhin als

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              DDM180

                              bezeichnete, den ich nirgends finden konnte?

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              Da weiß ich aber noch nicht wie ich aus dem Modbus Offset auf die Adressen komme.

                              was ist das jetzt?
                              Wo hast du Offset her?
                              Wie willst du alleine aus einem Offset eine Adresse erraten?

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              fangen die Adressen auch bei 0 an.

                              wäre möglich. muss aber nicht

                              üblich für Inputregister
                              Adresse 1 offset 30001 -> 30002
                              das kann aber auch +/- 1 sein

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              Der Strom des 230 ist ja 30007 und als 2Offset" wird 6 angegeben

                              wo steht das denn?

                              @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                              Kann man die in "Gesamtadressen" umrechnen?

                              gib einfach die Adressen aus der Liste ein und gut ist

                              EDIT:
                              Das hier sind jetzt dreiphasige Zähler
                              Screenshot_20230619-175039_Firefox.jpg

                              1 ist SDM630 und 2 ist SDM72

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @WolfgangFB last edited by

                                @wolfgangfb gibt es noch eine Antwort auf

                                @homoran sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                Beim DDM118

                                ist das der vorhin als
                                @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                DDM180

                                bezeichnete, den ich nirgends finden konnte?

                                ich kann unter beiden Bezeichnungen keine Stromzähler finden.

                                1 Reply Last reply Reply Quote 0
                                • W
                                  WolfgangFB last edited by

                                  @homoran
                                  So, ich war jetzt insgesamt ziemlich erfolgreich.
                                  Zuerst habe ich mich um den SDM230 gekümmert (von dem stehen ja die Adressen in der Doku).
                                  In der Konfiguration vom Modbus Adapter habe ich folgende Einstellungen gemacht:

                                  modbus_allgemein.jpg

                                  Den Port habe ich über den Befehl

                                  pi@raspberrypi:~ $ ls -l /dev/serial/by-id
                                  insgesamt 0
                                  lrwxrwxrwx 1 root root 13 19. Jun 21:13 usb-FTDI_FT232R_USB_UART_AB0LZNDF-if00-port0 -> ../../ttyUSB2
                                  lrwxrwxrwx 1 root root 13 10. Mai 13:19 usb-Silicon_Labs_WiMOD_iM871A-usb_00919907-if00-port0 -> ../../ttyUSB1
                                  

                                  herausgefunden.

                                  Zuerst gab es keine Verbindung, dann habe ich zusätzlich den empfohlenen Widerstand ib die Leitung gelötet (100 Ohm, 120 habe ich nicht gehabt). Dann hat der Adapter auch gleich auf gelb und dann auf grün geschaltet. In die Objekte geschaut, die Datenpunkte sind da, aber keine Werte (alle 0), wieder in die Instanzen geschaut und der Adapter war auf einmal gelb. Dann die beiden Kabel am RS485 auf USB Adapter getauscht und der erste Erfolg war da, der Adapter blieb grün und die Werte vom Stromzähler wurden übermittelt (wobei Blind und Wirkleistung meiner Meinung nach vertauscht sind, eine alte Glühbirne mit Wolframfaden hat meiner Meinung nach keine Blind sondern nur Wirkleistung, es wird aber nur Blindleistung angezeigt).

                                  Das ist für mich der erste echte Knackpunkt dass der Adapter kurzzeitig grün anzeigt, und dann nach ein paar Sekunden auf gelb springt. Wenn man bei grün sofort denkt "alles OK" leigt man falsch.

                                  Was mich auch verwundert ist, dass es auch die Polarität des Anschlusses ankommt. Ich hätte jetzt gedacht, da es bei RS485 nur um die Spannungsdifferenz zwischen A und B geht, dass die Polarität egal ist, aber ok.

                                  Dann als nächstes versucht einen DDS548 anzuschprechn.
                                  dds548.jpg

                                  Den also an die gleiche Leitung gehängt und zusätzlich bei den Objekten die Spannung 30001 mit der Adresse 12 anzuzeigen. Erstes Ergebnis: Adapter bleibt rot.
                                  Dann eine zweite Instanz des Modbus Adapters instlliert und nur diesen Zähler eingerichtet. Ergebnis: Adaper wird gelb, dann grün und dann wieder gelb.
                                  Also wieder die Adern vertauscht und der Adapter wurde grün! Wenn also auf dem gesamten Bus nur ein einziger Zähler falsch angeschlossen ist wird der Adapter rot bleiben. Also am besten erestmal jedes Gerät für sich richtig einrichten und dann kann man auch mehrere IDs in einer Instanz auslesen.
                                  Da ich zu diesem Zähler absolut nichts braucbares im Netz gefunden habe, habe ich mal mit den Werten aus

                                  https://github.com/re-innovation/DDM_Energy_Meter/blob/main/Test%20Code/sdm_simple_test_libraries/SDM.h

                                  aus dem Abschnitt REGISTERS LIST FOR DDM DEVICE experimentiert (DDS gibt es dort nicht).
                                  Dort steht z.B.

                                  #define DDM_PHASE_1_VOLTAGE                           0x0000                    //  V           |    1    |
                                  #define DDM_PHASE_1_CURRENT                           0x0008                    //  A           |    1    |
                                  #define DDM_PHASE_1_POWER                             0x0012                    //  W           |    1    |
                                  #define DDM_PHASE_1_REACTIVE_POWER                    0x001A                    //  VAr         |    1    |
                                  #define DDM_PHASE_1_POWER_FACTOR                      0x002A                    //              |    1    |
                                  #define DDM_FREQUENCY                                 0x0036                    //  Hz          |    1    |
                                  #define DDM_IMPORT_ACTIVE_ENERGY                      0x0100                    //  kWh         |    1    |
                                  #define DDM_IMPORT_REACTIVE_ENERGY                    0x0400                    //  kVArh       |    1    |
                                  

                                  also habe ich mal zu allen Werten 30001 dazugezählt (also 30009 für den Strom) und siehe da, das ganze funktioniert.

                                  Jetzt zum Problemkind DDM18SD

                                  ddm18.jpg

                                  Da musste ich die Parität von "none" auf "even" ändern. Da die Github Seite ja nur von DDM devices spricht habe ich einfach mal die gleichen Adressen wie beim DDS genommen und auch das hat funktioniert.

                                  Jetzt weiß ich nur noch nicht, wie ich bei diesem Gerät intern die Parität ändern kann. Beim SDM230 git es die Adresse "40019 Write the network port parity/stop bits for MODBUS
                                  Protocol". Aber selbst wenn ich diese Adresse für DDM Devices kennen würde, wie schreit man da etwas? Kann ich die bei "Diskrete Ausgänge" alegen und dann ändern? Das muss ich noch herausfinden.

                                  Was mir noch beim DDM18 aufgefallen ist, ist dass das ganze nicht sonderlich stabil ist. Mal war der Adapter minutenlang grün und schön die Werte angezeigt, dass ist er wieder mal 5 Minuten auf gelb gegangen und hat nichts aktualisiert, dann ging er plötzlich wieder.
                                  Die Maximale Kabellänge soll ja im Kilometerbereich liegen und da bin ich weit davon entfernt.

                                  Homoran K 3 Replies Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @WolfgangFB last edited by

                                    @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                    Was mich auch verwundert ist, dass es auch die Polarität des Anschlusses ankommt.

                                    siehe von mir verlinkte Anleitung.

                                    @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                    dass der Adapter kurzzeitig grün anzeigt, und dann nach ein paar Sekunden auf gelb springt.

                                    dann hat er Verbindung, läuft aber in ein Timeout und bekommt nichts zurück.
                                    steht dann aber im log

                                    @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                    Da musste ich die Parität von "none" auf "even" ändern

                                    dann kannst du ihn nicht am selben Bus betreiben.

                                    W 1 Reply Last reply Reply Quote 0
                                    • K
                                      klassisch Most Active @WolfgangFB last edited by klassisch

                                      @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                      Was mich auch verwundert ist, dass es auch die Polarität des Anschlusses ankommt. Ich hätte jetzt gedacht, da es bei RS485 nur um die Spannungsdifferenz zwischen A und B geht, dass die Polarität egal ist, aber ok.

                                      Hatte ich Dir doch schon am 31.05. https://forum.iobroker.net/post/808027 geschrieben.

                                      Es gibt mittlerweile aber tatsächlich Bausteine von TI, die eine Vertauschung erkennen und korrigieren. Sind aber nicht in den billigen Zählern eingebaut. Wahrscheinlich auch nicht in den teuren.

                                      1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @WolfgangFB last edited by

                                        @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                        wie schreit man da etwas?

                                        steht in der Anleitung

                                        @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                        40019 Write t

                                        40000er sind Holdingregister

                                        1 Reply Last reply Reply Quote 0
                                        • W
                                          WolfgangFB @Homoran last edited by

                                          @homoran sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                          @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                          Was mich auch verwundert ist, dass es auch die Polarität des Anschlusses ankommt.

                                          siehe von mir verlinkte Anleitung.

                                          Welche Anleitung meinst Du? Die des SDM230?

                                          @wolfgangfb sagte in Modbus RS485 Tutorial/Einstieg gesucht:

                                          dass der Adapter kurzzeitig grün anzeigt, und dann nach ein paar Sekunden auf gelb springt.

                                          dann hat er Verbindung, läuft aber in ein Timeout und bekommt nichts zurück.
                                          steht dann aber im log

                                          Ich könnte mir vorstellen, dass es anderen so wie mir ergeht, ich sehe "grün", freue mich, dass alles klappt und klicke auf den nächsten Brower-Tab mit den Objekten und wundere mich, dass da nichts passiert, deshalb habe ich diesen (aus meiner Sicht vorhandenen) Stolperstein hier erwähnt.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          730
                                          Online

                                          31.7k
                                          Users

                                          79.8k
                                          Topics

                                          1.3m
                                          Posts

                                          8
                                          39
                                          2715
                                          Loading More Posts
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          The ioBroker Community 2014-2023
                                          logo