Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Auslesen einzelner Bits über Modbus-Adapter

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Auslesen einzelner Bits über Modbus-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Magnus 0 last edited by

      Hallo Zusammen,

      ich versuche aktuell meine Heizung via Modbus TCP an ioBroker anzubinden.

      Prinzipiell funktioniert das auch, d. h. Verbindung zur Heizung habe ich und auch Werte kann ich auslesen bzw. kommen im ioBroker wie erwartet an.

      Ein Problem habe ich aber, bei dem ich mir nun schon seit Tagen nicht weiterkomme.

      Erstmal kurz ein Beispiel, was bei mir funktioniert.

      Generell unterstützt die Heizung nur Funktionscode 03 (Read Holding Registers). Mir liegt eine Liste des Herstellers vor, auf der das Mapping abgedruckt ist.

      Bspw. steht in Adresse 00011 die Kesseltemperatur in °C. Das habe ich auch entsprechend im Modbus-Adapter eingetragen und funktioniert super.

      Jedoch ist es so, dass etliche Störungen und Fehler der Heizung nicht einzeln in einer Adresse stehen, sondern bis zu 16 Fehler in einer Adresse.

      Es ist dann beschrieben, welches Bit welche Störung signalisiert. Beispiel:

      Adresse 00002 Bit 0 = Türschalter
      Adresse 00002 Bit 1 = Fallschacht
      Adresse 00002 Bit 2 = Bunkeröffnung
      Adresse 00002 Bit 3 = zu wenig Unterdruck

      usw. --> Jede Adresse hat 16 Bits (0-15), es sind aber nicht überall alle Bits belegt.

      Nun habe ich heute Früh mal die Störung "Fallschacht" an der Heizung ausgelöst / simuliert.

      Bei der über FC03 (Read Holding Registers) ausgelesene Adresse 00002 stand dann unter Objekte die Zahl 2.

      So aus binärer Sicht würde das ja bedeuten, dass das Bit 1 den Wert 1 hat, würde also passen.

      D. h. ich müsste das Ganze dann immer entsprechend umrechnen.

      Gibt es da nicht eine andere Möglichkeit, sodass ich mehrere Objekte habe und dahinter immer nur ein einzelnes Bit steckt?

      Weil ich denke die Umrechnung wäre zu kompliziert, gerade weil es ja auch sein kann, dass nicht nur ein Bit einer Adresse 1 sein kann, sondern auch mehrere.

      Wie ihr vielleicht merkt, bin ich da noch ein Neuling. Ich würde mich sehr freuen, wenn mir hier jemand kurz eine Hilfestellung geben könnte.

      Vielen Dank euch!

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Magnus 0 last edited by

        @magnus-0 sagte: welches Bit welche Störung signalisiert.

        Siehe Funktion checkBit(val, bit).

        M 1 Reply Last reply Reply Quote 0
        • M
          Magnus 0 @paul53 last edited by

          @paul53

          Vielen Dank für die schnelle Rückmeldung.

          Ich muss sagen, ich kene mich da leider noch nicht so genau aus, aber mithilfe des Namens "checkBit" bin ich auf folgenden Beitrag / Kommentar / Hinweis von @GombersIOB gestoßen:

          Auswertung Bits Modbus-Register

          Ich habe mir den Screenshot von @GombersIOB angesehen, jedoch glaube ich, dass das bei mir nicht funktioniert.

          Was passiert nämlich, wenn mehrere Bits eines Registers auf 1 gehen? Dann funktioniert das Ganze nicht mehr, oder?

          paul53 Homoran 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @Magnus 0 last edited by paul53

            @magnus-0 sagte: wenn mehrere Bits eines Registers auf 1 gehen?

            In einer Schleife kann man alle 16 Bit prüfen.

            Blockly_temp.JPG

            return !!(val >> bit & 1);
            
            M 1 Reply Last reply Reply Quote 0
            • M
              Magnus 0 @paul53 last edited by

              @paul53 Ok, Danke für die Rückmeldung.

              Das muss ich mir in Ruhe die Tage mal anschauen, die Geschichte mit Bit / Dezimal usw. ist nicht so meins. Aber schaue ich mir mal an.

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

                @magnus-0 sagte in Auslesen einzelner Bits über Modbus-Adapter:

                wenn mehrere Bits eines Registers auf 1 gehen?

                wieso nicht. ist doch ein binäres Mäuseklavier mit 16 dipswitches auch

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

                Support us

                ioBroker
                Community Adapters
                Donate

                475
                Online

                31.7k
                Users

                79.6k
                Topics

                1.3m
                Posts

                3
                6
                392
                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