ModBus: Data types

Data type

Description

INT16

Integer in the range from -32768 to 32767.
The number range actually used for a data point may vary.

UINT16

Unsigned integers in the range from 0 to 65535.
The number range actually used for a data point may vary.

ENUM

Is a list. Only one of the values listed in the parameters can be set.

BOOL

A Boolean value is a parameter with exactly two states (0 – false and 1 – true). Generally, all values greater than zero are classified as true.

BITMAP*

Is an array of 16 Boolean values (bits). Values are indexed from 0 to 15. The number read from or written to the register is the sum of all bits with the value 1 multiplied by 2 to the power of its index.

  • Bit 0: 20 = 1
  • Bit 1: 21 = 2
  • Bit 2: 22 = 4
  • Bit 3: 23 = 8
  • Bit 4: 24 = 16
  • Bit 5: 25 = 32
  • Bit 6: 26 = 64
  • Bit 7: 27 = 128
  • Bit 8: 28 = 256
  • Bit 9: 29 = 512
  • Bit 10: 210 = 1024
  • Bit 11: 211 = 2048
  • Bit 12: 212 = 4096
  • Bit 13: 213 = 8192
  • Bit 14: 214 = 16384
  • Bit 15: 215 = 32768

BITMAP32

Is an array of 32 Boolean values (bits). Please check Bitmap for the calculation details.

* Example for clarification:
Bit 3, 6, 8, and 15 are 1. All others are 0. The sum is then 23+26+28+215 = 8+64+256+32768 = 33096. It is also possible to do the calculation the other way round. Based on the bit with the highest index, check whether the read number is greater than/equal to the power of two. If this is the case, bit 1 is set and the power of two is deducted from the number. Then the check with the bit with the next lower index and the recently calculated residual number is repeated until bit 0 is obtained or the residual number is zero. Example for clarification: The read number is 1416. Bit 15 will be 0, since 1416 < 32768. Bits 14 to 11 will also be 0. Bit 10 will be 1, since 1416 > 1024. The remainder will be 1416-1024=392. Bit 9 will be 0, since 392 < 512. Bit 8 will be 1, since 392 > 256. The remainder will be 392-256=136. Bit 7 will be 1, since 136 > 128. The remainder will be 136-128=8. Bits 6 to 4 will be 0. Bit 3 will be 1, since 8 = 8. The remainder will be 0. The remaining bits 2 to 0 will thus all be 0.