天天看点

MODBUS 通讯协议初探

MODBUS是工业用的比较广泛的一种通讯协议。主要有MODBUS RTU、MODBUS ASCALL和MODBUS TCP/IP三种。现谈谈对MODBUS RTU初步的了解。

所谓的MODBUS通讯协议即主机和从机之间一种约定了的通讯的报文的格式。比如我们之间约定"12345"代表"上山打猎",那么我发出"12345"的讯息后,你就知道要去"上山打猎"。只不过没有所述那么简单罢了。

MODBUS RTU 的主从机之间一般采用RS485或者RS232进行连接通讯。只能有一个主机,而剩下的都是从机,而每一个从机都有一个专属的地址,这一点倒是和IIC类似。

举例:现有一个基于MODBUS RTU协议的主从机。从机地址0x01(8位,最多可有255个从机)、如果要读取从机包含寄存器地址0x0101(16位,高位在前、低位在后)在内的3个寄存器内的数据,要如何操作?(假设每个寄存器有数据0x0203、0x0405、0x0607)

如下:

主机发送:

01    03     01    01    00    01    CRCL   CRCH

从机地址 功能码  起始寄存器 低位  寄存器数量 低位  CRC校验低位 高位

          地址高位       高位

从机回应:

01    03     06    02    03   04    05    06   07

从机地址 功能码  返回字节数 第一个数据高低位 第二个数据高低位  第三个数据高低位

CRCL    CRCH

CRC校验低位 高位

从机在接收到主机的数据后,会将主机发送的数据(除CRC部分)进行CRC校验,然后和主机的CRC部分对比判断是否一致,防止误码。主机接收之后同样如此。

至于其他的功能码的使用方法和CRC校验的方式网上可以搜到

继续阅读