Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Modbus TCP: Wert in Holdingregister schreiben

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Modbus TCP: Wert in Holdingregister schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      digidax last edited by digidax

      Hallo zusammen,

      ich schreibe mit einem script einen dezimalwert in ein Holding register.
      Der Wert erscheint im entsprechenden Datenpunk, wird kurz grün. Im Modbus debug log tauchen keine Fehler auf, nur im Modbus Gerät scheint nichts anzukommen.
      Oder muss ich noch etwas aktivieren, dass wenn ein Wert geschrieben wurde, dieser dann per ModbusTCP an das Gerät übertragen wird?

      Gibt es einen Möglichkeit das Debug der Modbus Instanz (aktuell silly) noch zu erweitern, um zu sehen, welcher HEX Befehl an das Gerät übertragen wurde?

      lg Frank

      1 Reply Last reply Reply Quote 0
      • D
        digidax last edited by digidax

        Ich habe mal mit TCP dump mitgeloggt. Im Dump taucht immer nur "Read Holding Regsiter" auf. Kein Write, obwohl ich im IO Broker Log

        States user redis pmessage modbus.1.*/modbus.1.holdingRegisters.72801_RTC:{"val":569154562081819400,"ack":true,"ts":1668494771239,"q":0,"c":"script.js.test_datum","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1668494771239}
        

        stehen habe.

        Wert lesen (Read Holding Register) funktioniert nur das Schreiben nicht.

        Einstellung Register:

        {
          "_id": "modbus.1.holdingRegisters.72801_RTC",
          "type": "state",
          "common": {
            "name": "",
            "role": "value",
            "type": "number",
            "read": false,
            "write": true,
            "def": 0,
            "unit": ""
          },
          "native": {
            "regType": "holdingRegs",
            "address": 32800,
            "deviceId": 1,
            "type": "uint64be",
            "len": 4,
            "offset": 0,
            "factor": "1",
            "poll": false
          },
          "acl": {
            "object": 1636,
            "state": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator"
          },
          "from": "system.adapter.modbus.1",
          "user": "system.user.admin",
          "ts": 1668494751525
        }
        

        PlatformBetriebssystem:linux
        Architektur:arm
        CPUs:4
        Geschwindigkeit:1200 MHz
        Modell:ARMv7 Processor rev 4 (v7l)
        RAM:926 MB
        System-Betriebszeit:90 T. 14:54:37
        Node.js:v16.15.1
        time:1668495277518
        timeOffset:-60
        Adapter-Anzahl:444
        NPM:8.11.0
        Datenträgergröße:14.1 GB
        Freier Festplattenspeicher:10.3 GB
        Betriebszeit:66 T. 23:56:38
        Aktive Instanzen:7
        Pfad:/opt/iobroker/
        aktiv:true
        _nodeCurrent:16.15.1
        _nodeNewest:16.18.1
        _nodeNewestNext:16.18.1
        _npmCurrent:8.11.0
        _npmNewest:8.11.0
        _npmNewestNext:8.19.2

        Adapter Modbus, Installierte Version: 5.0.5

        ? 1 Reply Last reply Reply Quote 0
        • ?
          A Former User @digidax last edited by

          @digidax
          Haken bei "CW" ?

          Wenn ja ? bin ich raus.
          Modbus hat zuviel Lebenszeit gefressen 🙂

          D 1 Reply Last reply Reply Quote 0
          • D
            digidax @Guest last edited by

            @dreistein ja, auch mit CW gesetzt, trotzdem kein TCP traffic.

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @digidax last edited by

              @digidax
              Ich bin ja doch neugierig:

              Warum wird das Register 72801 in die Adresse 32800 geschrieben ?
              Und du bist sicher das der Wert an eine gerade Adresse geschrieben werden soll ?
              Und was ist das für ein Gerät ?

              D 1 Reply Last reply Reply Quote 0
              • D
                digidax @Guest last edited by digidax

                @dreistein

                Das ist ein PV Wechselrichter. Auslesen vom Holding Register klappt wunderbar.

                Das zu schreibende Regsiter hat laut Doku die Adresse 8020 hex. Das entspricht 32800 dez.
                Da ich im Adapter Alias aktiviert haben muss ich 40001 addieren und komme auf 72801 dez.
                Mit den so errechneten Werten funktioniert jedenfalls das Lesen aus dem Holding Register.

                laut Doku ist diese Adresse mit eine Wortlänge von 4 schreibbar. In dieser Adresse wird Datum und Uhrzeit gesetzt. z.B. 2015-1-2 10:11:12 müsste mit 07DF 01 02 0A 0B 0C 00 geschrieben werden.

                Selbst wenn es das falsche Regsiter wäre oder das Gerät es nicht verarbeiten könnte, weil es falsche Werte sind, müsste doch im TCP Dump ein Schreibbefehl geloggt werden. Möglich wäre laut Doku:

                0x03:Read multiple registers
                0x06:Write single register
                0x10:Write multiple registers

                Ich sehe aber nur 0x03 Kommunikation (lesen) während CW aktiviert ist und ich per MQTT die Werte aktualisiere, die Objekte werden grün und im Modbus Log von IO Broker sehe ich, dass angeblich Daten übertragen werden, nur im TCP Dump taucht davon nix auf.
                5124feff-93bb-4195-af4f-5c30e81566b3-grafik.png

                Schön, dass ich Dein Interesse geweckt habe und Danke fürs damit beschäftigen.
                Ja, auch ich habe schon wegen Mobus ein Teil meiner Haarpracht eingebüßt. 😁 😁 😁

                D 1 Reply Last reply Reply Quote 0
                • D
                  digidax @digidax last edited by digidax

                  Ich habe gerade mal einen Test gemacht und schreibe in Adresse 53893 (-40001= 13892 dez = 3644 hex ) des Holding Registers, das funktioniert komischerweise.

                  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

                  690
                  Online

                  32.3k
                  Users

                  81.0k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  863
                  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