Modbus协议
工业自动化控制一般用PLC可编程逻辑控制器,配合DTU(数据传输单元)实现远程数据采集和控制。
Modbus协议是工业自动化控制中常用协议,PLC使用RS232/RS485串口通信用ModbusRTU协议(支持CRC校验),如果没有多余的串口可以使用TCP通信用ModbusTCP协议,TCP协议本身能保证数据的可靠性,不需要CRC校验。
Modbus协议核心是功能码+数据,它定义了三种PDU(协议数据单元):请求PDU、响应PDU、异常响应PDU;数据编码使用最高有效字节在低地址存储的方式表示地址和数据项,比如发送16位数据0x1234 先发送0x12然后是0x34,当然有些嵌入式开发工程师比较喜欢低字节在前这种字节序,具体数据格式需要参照文档说明。
对于ModbusRTU需要CRC16校验,即2个字节的校验数据,字节序是低字节在前,例如我们从地址0x0000读取0x0020个寄存器,十六进制指令是 0103000000204412,010300000020计算出的CRC是0x1244,低字节在前是4412。
可以访问 https://www.modbus.org/modbus-specifications 查看文档(英文)
或查阅相关国标(版权问题需要搜索标准号从网络下载):
GB/T 19582.1-2008 基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议
GB/T 19582.2-2008 基于Modbus协议的工业自动化网络规范第2部分:Modbus协议在串行连路上的实现指南
GB/T 19582.3-2008 基于Modbus协议的工业自动化网络规范第3部分:Modbus协议在TCP/IP上的实现指南
许可协议:
CC BY 4.0