Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Auslesen einzelner Bits über Modbus-Adapter

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    998

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    695

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Auslesen einzelner Bits über Modbus-Adapter

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
6 Beiträge 3 Kommentatoren 730 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Magnus 0
    schrieb am zuletzt editiert von
    #1

    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!

    paul53P 1 Antwort Letzte Antwort
    0
    • M Magnus 0

      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!

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

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

      Siehe Funktion checkBit(val, bit).

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      M 1 Antwort Letzte Antwort
      0
      • paul53P paul53

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

        Siehe Funktion checkBit(val, bit).

        M Offline
        M Offline
        Magnus 0
        schrieb am zuletzt editiert von
        #3

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

        paul53P HomoranH 2 Antworten Letzte Antwort
        0
        • M Magnus 0

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

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @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);
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          M 1 Antwort Letzte Antwort
          0
          • paul53P 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 Offline
            M Offline
            Magnus 0
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0
            • M Magnus 0

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

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @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

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              666

              Online

              32.6k

              Benutzer

              82.0k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe