Modbus TCP UI16bit Werte ins Negative umrechnen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • michael287
    LoxBus Spammer
    • 13.11.2016
    • 366

    #1

    Modbus TCP UI16bit Werte ins Negative umrechnen

    Hallo zusammen, ich bräuchte hier mal eure Hilfe.
    Habe seit vielen Monaten eine Zehnder KWL per Modbus TCP Gateway in Loxone integriert.
    Aktuell möchte ich die Temperaturen in der Anlage in Grafana visualisieren, was auch alles klappt.

    Nun zum Problem.
    Integer Werte sind ja regulär von 0 - 65535 zugelassen.

    Eine Ausnahme wird hier beschrieben:
    Negative numbers (INT16 = short) Some manufacturers allow negative values for some registers. Instead of an allowed integer range 0-65535, a range -32768 to 32767 is allowed. This is implemented as any received value in the upper range (32768-65535) is interpreted as negative value (in the range -32768 to -1).
    http://minimalmodbus.readthedocs.io/en/master/modbusdetails.html

    Es wird also die Hälfte der Range genutzt, um negative Werte darzustellen.


    So wie ich das sehe, ist dies bei meinem Gateway der Fall, also 0 Grad Außentemperatur werden als 32768 weitergegeben.
    Ist in Grafana auch so zu sehen, was natürlich sehr unschön ist, da es die X-Achse und die Statistik damit unlesbar macht...

    Meine Frage lautet nun.
    Seht ihr eine Möglichkeit, ankommende Werte in Loxone umzurechnen?
    Also Beispiel: 32768 = 0 und so weiter....

    Vielen Dank schon vorab für Ideen!

  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11250

    #2
    Du brauchst nur 32768 abziehen.
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11250

      #3
      Bzw, sehe gerade, dass du eh Den Datentyp einstellen kannst:
      unsigned integer —> signed integer
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • michael287
        LoxBus Spammer
        • 13.11.2016
        • 366

        #4
        Aus dem Datenblatt des Gateways entnehme ich die Modbusadresse inklusive Vorgaben für unsigned integer:

        Code:
         [TABLE="border: 1"]
        [TR]
        [TD]Tintake status[/TD]
         			[TD]register[/TD]
         			[TD]R[/TD]
         			[TD]99[/TD]
         			[TD]4x00100[/TD]
         			[TD]uint16[/TD]
         			[TD]1[/TD]
         		[/TR]
        [/TABLE]
        Habe jetzt eben in der Abluft auch einen komischen Wert von 1806 festgestellt.
        Eigentlich ist es 21
        Im Normalbetrieb fällt das nicht auf, da es nur kurz ist, trotzdem merkwürdig.
        Bin mir auch nie sicher, was ich bezüglich Read Holding register etc einstellen soll.
        Im Moment hilft abziehen nichts, da nur 0,0 reinkommt, hängt jetzt wohl mit falschen einstllungen zusammen.

        Kommentar

        • michael287
          LoxBus Spammer
          • 13.11.2016
          • 366

          #5
          Uhu, jetzt läuft es, danke dir!
          Habe alles auf Befehl 3 Read holding register und signed integer gestellt...!

          Muss mich da wohl noch mal in die Unterschiede reinfuchsen!

          Danke trotzdem!
          Jetzt muss ich nur noch die hässlichen 65535 Werte wieder aus InfluxDB rausbekommen. Hast du dazu evtl auch eine Idee?

          Viele Grüße

          Kommentar


          • Christian Fenzl
            Christian Fenzl kommentierte
            Kommentar bearbeiten
            Nö, keine Influx-Erfahrung...

          • michael287
            michael287 kommentierte
            Kommentar bearbeiten
            ok, Danke. Habe jetzt einfach eine neue DB erstellt. War ja noch nicht viel drin...
        Lädt...