Ankündigung

Einklappen
Keine Ankündigung bisher.

Modbus TCP und float32 Werte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Modbus TCP und float32 Werte

    Hallo Leute,

    nach einigem hin und her habe ich nun die Modbus Verbindung am laufen. Bei der Überprüfung ist mir aufgefallen, dass die Nachkommastellen nicht richtig übertragen werden. Getestet habe ich mit nur einem Real Wert. Es werden 8 Byte übertragen.

    In der Steuerung (SPS) ist der Wert unverändert bei: 333.444.
    Im Debug Log auf dem openHAB Server sieht das Ganze aber so aus:

    23:07:13.390 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.70245361328125
    23:07:13.912 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 332.116424560546875
    23:07:14.447 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.1436767578125
    23:07:15.050 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.5147705078125
    23:07:15.607 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.903564453125
    23:07:16.210 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 332.146636962890625
    23:07:16.791 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 332.27587890625
    23:07:17.423 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.72564697265625
    23:07:17.952 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.76837158203125
    23:07:18.672 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 332.584259033203125
    23:07:19.241 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 333.82574462890625

    Hat irgendwer eine Idee?

    OpenHAB Version 1.8.1
    Modbus Binding 1.8.1

    Gruß Timo

    #2
    Hallo Leute,

    den Fehler mit den springenden Nachkomma Stellen habe ich gefunden. Es wurde von zwei Seiten auf die gleiche Adresse geschrieben. War wohl sehr spät gestern.

    Jetzt habe ich ein neue Problem. Die Nachkommastellen werden auf oder abgerundet.
    Die SPS schreibt den Wert 120,70. Siehe Bild

    Bild_286.jpg

    Im Simulationstool, das parallel liest steht der gleiche Wert. Siehe Bild Adresse 40003:
    Bild_285.jpg

    Im Debug Log des OpenHAB Server stimmt der Wert jedoch nicht mehr:
    21:23:23.967 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 120.5
    21:23:24.520 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 120.5
    21:23:25.039 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 120.5
    21:23:25.549 [INFO ] [runtime.busevents :26 ] - Wasserverbrauch state updated to 120.5

    Kommentar


      #3
      Hallo Leute,

      das Problem konnte ich nun auch beheben durch die Verwendung eines Real Array für den Sendebaustein auf SPS-Seite.

      Nun gibt es aber das Problem, das der OpenHAB Server das erste und zweite Item lesen kann, das Lesen des dritten Items schlägt jedoch fehl. Mit einem Testtool habe ich mich auf die SPS verbunden und konnte alle 3 Werte ohne Einschränkung lesen.

      Die Konfiguration des Modbus Binding ist wie folgt:

      ############################### Modbus Binding ########################################
      #
      # sets refresh interval to Modbus polling service.
      # Value in milliseconds (optional, defaults to 200)
      modbusoll=500

      # hostort (mandatory)
      modbus:tcp.slave1.connection=192.168.2.15

      # The data type, can be "coil" "discrete" "holding" "input"
      modbus:tcp.slave1.type=holding

      # The slave id (optional, defaults to '1')
      modbus:tcp.slave1.id=1

      # The slave start address (optional, defaults to '0')
      modbus:tcp.slave1.start=0

      # The number of data item to read
      # (optional, defaults to '0' - but set it to something meaningful)
      modbus:tcp.slave1.length=32

      # Value type, required for combined registers (details: http://www.simplymodbus.ca/FAQ.htm#Types)
      # Can be "bit", "int8", "uint8", "int16", "uint16", "int32", "uint32", "float32"
      # (optional, defaults to 'uint16')
      modbus:tcp.slave1.valuetype=float32

      Die Konfiguration der Items ist wie folgt:

      /*ModBus Daten */
      Number Wasserverbrauch "aktueller Wasserverbrauch [%.3f m³]" (KG_HAR, ModBus) {modbus="slave1:0"}
      Number Stromverbrauch "aktueller Stromverbrauch [%.3f KWh]" (KG_HAR, ModBus) {modbus="slave1:1"}
      Number Betriebsstunden "aktueller Betriebsstunden WP [%.3f h]" (KG_HAR, ModBus) {modbus="slave1:2"}
      Hat jemand eine Idee?
      Zuletzt geändert von Eifelbiker; 18.02.2016, 13:20.

      Kommentar

      Lädt...
      X