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. Skripten / Logik
  4. Node-Red
  5. Modbus RTU Nachkommastellen variieren ständig

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Modbus RTU Nachkommastellen variieren ständig

Geplant Angeheftet Gesperrt Verschoben Node-Red
2 Beiträge 2 Kommentatoren 157 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
    MarcelV
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich bin nach ganz am Anfang mit Nodered und versuche mich gerade in Modbus.
    Ich habe 2 Modbuszähler die per RS485 verbunden sind und über einen Waveshare RS485/TCP IP Adapter ausgelesen werden.
    Es werden immer 2 Register mit FC4 ausgelesen und als Gleitkomma Float-Wert mit be in den Buffer/Parser geschickt!Screenshot 2025-02-01 102653.png
    Soweit funktioniert alles, nur wundere ich mich warum die Werte manchmal mit 14 Nackommastellen dann wieder nur mit 1. und dann wieder auch ohne Nachkommastelle ausgegeben werden. Wenn nur 1 Nachkommastelle kommt, ist diese auch immer 0,5. Alles völlig zufällig.
    Screenshot 2025-02-01 101937.png

    Kann mir jemand sagen warum das so ist?

    mickymM 1 Antwort Letzte Antwort
    0
    • M MarcelV

      Hallo,
      ich bin nach ganz am Anfang mit Nodered und versuche mich gerade in Modbus.
      Ich habe 2 Modbuszähler die per RS485 verbunden sind und über einen Waveshare RS485/TCP IP Adapter ausgelesen werden.
      Es werden immer 2 Register mit FC4 ausgelesen und als Gleitkomma Float-Wert mit be in den Buffer/Parser geschickt!Screenshot 2025-02-01 102653.png
      Soweit funktioniert alles, nur wundere ich mich warum die Werte manchmal mit 14 Nackommastellen dann wieder nur mit 1. und dann wieder auch ohne Nachkommastelle ausgegeben werden. Wenn nur 1 Nachkommastelle kommt, ist diese auch immer 0,5. Alles völlig zufällig.
      Screenshot 2025-02-01 101937.png

      Kann mir jemand sagen warum das so ist?

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @marcelv Ich kann Dir nicht sagen, warum das so ist - entweder kommt das schon so an oder es ist allgemein bekannt, dass Javascript und das ist ja der Unterbau von NodeRed bei der Division solche Ungenauigkeiten aufweist.

      Hier findest Du einige solche Beispiele.

      Um das ganze zu normalisieren musst Du halt runden auf die gewünschte Zahl. Hier das falsche Rechnen von Javascript wenn Du 5.30/0.1 teilst.

      91708128-9ab3-4714-a25b-b1ea9026e1bb-image.png

      Hier zum Test:

      [
         {
             "id": "6d825db117977676",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "$round(payload, 3)\t",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 490,
             "y": 6560,
             "wires": [
                 [
                     "fbdb916f6d2eae7a"
                 ]
             ]
         },
         {
             "id": "cbdde4b5e1744372",
             "type": "function",
             "z": "7e6af0015415146d",
             "name": "Division 5.30/0.1",
             "func": "msg.payload = 5.30/0.1;\nreturn msg;",
             "outputs": 1,
             "timeout": 0,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 330,
             "y": 6480,
             "wires": [
                 [
                     "6884d1879fbacb54",
                     "6d825db117977676"
                 ]
             ]
         },
         {
             "id": "6884d1879fbacb54",
             "type": "debug",
             "z": "7e6af0015415146d",
             "name": "JS Error",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 540,
             "y": 6480,
             "wires": []
         },
         {
             "id": "421036d3582817fa",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "true",
             "payloadType": "bool",
             "x": 110,
             "y": 6480,
             "wires": [
                 [
                     "cbdde4b5e1744372"
                 ]
             ]
         },
         {
             "id": "fbdb916f6d2eae7a",
             "type": "debug",
             "z": "7e6af0015415146d",
             "name": "gerundet",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 720,
             "y": 6560,
             "wires": []
         }
      ]
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      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

      680

      Online

      32.6k

      Benutzer

      82.1k

      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