Ask Your Question

Revision history [back]

The Modbus dissector shows Modbus addresses as sent over the wire, these are always 0 based and the function code used indicates the I/O type.

Modbus requests indicate the starting bit number or register and the number of bits or registers to read. For write requests the Write Single Coil (5) and Write Single Register (6) commands obviously write a single bit\register, for the multiple equivalents a count of bits or registers is also sent. There is no direct representation of all the registers being accessed.

When dissecting Modbus requests, the dissector adds the filter modbus.reference_num for the starting reference, either a bit number for digitals, or a register for analogs and for multiple values adds the filter modbus.bit_cnt or modbus.word_cnt for the number of digitals or analogs respectively.

Using these values the range of registers read\written can be calculated.

The Modbus dissector shows Modbus addresses as sent over the wire, these are always 0 based and the function code used indicates the I/O type.

Modbus requests indicate the starting bit number or register and the number of bits or registers to read. For write requests the Write Single Coil (5) and Write Single Register (6) commands obviously write a single bit\register, for the multiple equivalents a count of bits or registers is also sent. There is no direct representation of all the registers being accessed.

When dissecting Modbus requests, the dissector adds the filter modbus.reference_num for the starting reference, either a bit number for digitals, or a register for analogs and for multiple values adds the filter modbus.bit_cnt or modbus.word_cnt for the number of digitals or analogs respectively.

Using these values the range of registers read\written can be calculated.calculated. In your example 3 analog output registers starting at 8416 are being read, i.e 8416, 8417, 8418.