Skip to main content

Modbus

Modbus是一种串行通信协议,用于在工业控制系统中传输数据。Modbus协议是Modicon公司(现在是施耐德电气)于1979年开发的,是一种开放的通信协议,广泛应用于工业自动化领域。

Modbus协议有多种变种,包括Modbus RTU、Modbus ASCII和Modbus TCP/IP。Modbus RTU和Modbus ASCII是串行通信协议,而Modbus TCP/IP是基于以太网的协议。

Modbus 包含多种功能码,对应了不同的地址空间和数据类型。常用的功能码包括:

  • 线圈寄存器(0x01) - 对应的地址格式为 0xxxx
  • 离散输入寄存器(0x02) - 对应的地址格式为 1xxxx
  • 保持寄存器(0x03) - 对应的地址格式为 4xxxx
  • 输入寄存器(0x04) - 对应的地址格式为 3xxxx

字节序

由于Modbus存在多种字节序,因此在添加设备时根据设备选择对应的字节序,如:

  • ABCD - 低位在前,高位在后
  • BADC - 高位在前,低位在后
  • CDAB - 高位在后,低位在前
  • DCBA - 低位在后,高位在前

这个在读取数据时需要注意,否则会导致数据解析错误。

首地址

Modbus中根据下位机的不同,首地址的定义也不同。有的采用首地址从0开始,有的采用首地址从1开始。在添加设备时需要根据设备的首地址定义正确的首地址。

否则在读取时会产生读取到的数据有偏移的情况。