ModbusAttr : Reading 64bit hex formatieren

Begonnen von Mike73, 02 November 2017, 20:28:29

Vorheriges Thema - Nächstes Thema

Mike73

Hallo zusammen,

ich versuche von einem Modbus-Gerät einen 64Bit -Wert ( ROMCODE eines angeschlossenen 1wire-Sensors) zu lesen und darzustellen.

das Listing des Devices sieht so aus:

Internals:
   BUSY       1
   DEF        6 10 192.168.3.72:502 TCP
   DEST       192.168.3.72:502
   DeviceName 192.168.3.72:502
   FD         31
   INTERVAL   10
   IODev      ZContr
   LASTOPEN   1509648323.46095
   LeadingZeros 1
   MODBUSID   6
   ModuleVersion 3.7.0 - 20.8.2017
   NAME       ZContr
   NOTIFYDEV  global
   NR         126
   NTFY_ORDER 50-ZContr
   PARTIAL
   PROTOCOL   TCP
   REQUESTHEX 003a00000006060200030001
   STATE      opened
   TRIGGERTIME 1509651039.83311
   TRIGGERTIME_FMT 2017-11-02 20:30:39
   TYPE       ModbusAttr
   devioLoglevel 3
   nextOpenDelay 60
   QUEUE:
     HASH(0x28b17f0)
     HASH(0x28bf060)
     HASH(0x28c1470)
     HASH(0x28b16a0)
     HASH(0x28be910)
   READINGS:
     2017-11-02 20:30:17   1W-DevCount     1
     2017-11-02 20:30:17   1W-ROM-1        000000000000fe28
     2017-11-02 20:30:16   LaufZeit        20
     2017-11-02 20:30:17   SperrZeit       15
     2017-11-02 20:30:17   ZTrigger        0
     2017-11-02 20:30:16   runF            0
     2017-11-02 19:45:23   state           opened
   REQUEST:
     ADR        0003
     FCODE      2
     FRAME      :
     LEN        1
     MODBUSID   6
     OPERATION  read
     PROTOCOL   TCP
     READING    runF
     TID        58
     TYPE       d
     VALUE      0
     DEVHASH:
   defptr:
     6:
   gotReadings:
     1W-ROM-1   000000000000fe28
   helper:
     buffer
     lid        6
     lrecv      1509651017.43614
     lsend      1509651029.84018
   lastRead:
     c0008      1509651017.08168
     d0003      1509651016.84678
     h40001     1509651016.96514
     h40002     1509651017.31743
     h41000     1509651017.19971
     h41001     1509651017.43789
Attributes:
   dev-c-defPoll 1
   dev-d-defPoll 1
   dev-h-defPoll 1
   obj-c0008-reading ZTrigger
   obj-c0008-set 1
   obj-d0003-reading runF
   obj-h40001-reading LaufZeit
   obj-h40001-set 1
   obj-h40002-reading SperrZeit
   obj-h40002-set 1
   obj-h41000-reading 1W-DevCount
   obj-h41001-format %.16x
   obj-h41001-len 4
   obj-h41001-reading 1W-ROM-1
   obj-i30001-reading 1W-VAL-1
   room       Heizung
   userattr   dev-c-defPoll dev-d-defPoll dev-h-defPoll obj-c0008-reading obj-c0008-set obj-c1008-reading obj-c1008-set obj-d0001-reading obj-d0002-reading obj-d0003-reading obj-h40001-reading obj-h40001-set obj-h40002-reading obj-h40002-set obj-h41000-reading obj-h41001-format obj-h41001-len obj-h41001-reading obj-h41001-setexpr obj-h41001-unpack obj-i0001-reading obj-i30001-reading
   


Das Reading 1W-ROM-1  wird zwar mit 16 Stellen dargestellt, der Teil "fe28" ist auch korrekt, nur müsste der ganz links im MSB stehen. Die übrigen 6 Bytes fehlen und ich weiß nicht, wo die sind ...

Der ROMCode steht in den Registern korrekt zur Verfügung, das habe ich mit einem ModbusMonitor überprüft. Es scheint, dass trotz der Längenangabe "obj-h41001-len 4" nur 1  Register = 16Bit gelesen werden. Kann das sein? Woran liegt's?

Für Tipps und Hilfe vorab schon vielen Dank  :)

Mike