1、协议说明
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德气 Schneider Electric)于1979年为使用可编程逻辑控制(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
2、分类描述
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。大多数Modbus设备通信通过串口EIA-485物理层进行。对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
- Modbus RTU: 串口-> 循环冗余校验的校验和
- ModBus ASCII:以太网-> 采用纵向冗余校验的校验和
- ModBus TCP: 以太网-> 不需要校验和
3、特点
- 是一种简单的主从应用协议
- 客户机(主)能够向服务器发送请求
- 服务器(从)分析请求、处理请求、向客户机应答
3、帧结构
- Modbus RTU
从地址
|
功能码
|
数据
|
CRC
|
1字节
|
1字节
|
0-252字节
|
2字节
|
- ModBus ASCII
起始符
|
地址
|
功能
|
数据
|
校验码
|
结束符
|
【ModBus 协议开发】1字符
|
2字符
|
2字符
|
0-504字符
|
2字符
|
2字符
|
- ModBus TCP
MBAP报头
|
功能码
|
数据
|
7字节
|
1字节
|
n字节
|
MBAP报头
数据处理标识符
|
协议标识符
|
长度
|
单元标识符
|
2字节
|
2字节
|
2字节
|
1字节
|
推荐阅读