ModBus:数据类型

数据类型

说明

INT16

-32768 至 32767 范围内的整数。
某个数据点实际使用的数字范围可能出现偏差。

UINT16

0 至 65535 范围内的无符号整数。
某个数据点实际使用的数字范围可能出现偏差。

ENUM

是一种列举方式。只能设为参数下列举的数值之一。

BOOL

一个布尔值是一个包含两种状态(0 - 假/false,1 - 真/true)的参数。一般所有数值都大于零且为 true。

BITMAP*

一种 16 个布尔值 (Bit) 的汇总方式。数值表示为 0 到 15。寄存器中要读取或写入的数字,由所有比特值合计得出:数值 1 乘以以 2 为底数,以比特位为指数的幂。

  • 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

一种包含 32 个布尔值 (Bit) 的汇总方式。计算详情请参考 Bitmap。

* 举例解释:
Bit 3、6、8、15 是 1,所有其他都是 0。则总和为 23+26+28+215 = 8+64+256+32768 = 33096。反之亦然。这时会从指数最大的比特开始,检查读入的数字是否大于或等于 2 的幂。如果是这种情况,则将比特设为 1,从数字中减去 2 的幂。之后使用之前计算得到的剩余数,检查指数次大的比特,如此重复,直至到达 Bit 0 或者剩余数为零为止。举例讲解:读取的数字是 1416。Bit 15 是 0,因为 1416<32768。Bits 14 至 11 也是 0。Bit 10 是 1,因为 1416>1024。剩余数是 1416-1024=392。Bit 9 是 0,因为 392<512。Bit 8 是 1,因为 392>256。剩余数是 392-256=136。Bit 7 是 1,因为 136>128。剩余数是 136-128=8。Bit 6 至 4 是 0。Bit 3 是 1,因为 8=8。剩余数是 0。因此,剩余的 Bit 2 至 0 就全部是 0。