Modbus是什么
Modbus是一种串行通信协议,于1979年由Modicon公司发表。Modbus已成为工业领域通信协议的常用业界标准。
Mod是Modicon的缩写,bus即表示总线协议(bus protocol),合一起就是Modbus。
Modbus协议是一个master/slave(主/从)架构的协议。有一个节点是master节点(一般为上位机),其他的节点是slave节点(一般为下位机)。每一个slave设备都有一个唯一的地址。
Modbus优点:
1.完全公开发表并且无版权要求
2.对于各方来说,易于部署和维护
3.对供应商来说,修改移动本地的比特或字节没有很多限制
4.协议框架结构简单、简洁、易于理解。使用方便
Modbus缺点:
1.通讯性能较差,仅支持主从式通信
2.由于无认证、无权受限制管理、明文传输,使其安全差,处在很大的风险
3.每次读写,最多读写127个寄存器,由此大数据量通讯效率很低,寄存器数量较多的话,需要多次读写才能完成
Modbus协议版本,最常见的有下面三种:
Modbus-RTU
Modbus-ASCII
Modbus-TCP
Modbus-RTU帧结构
帧结构 = 地址 + 功能吗 + 数据 + CRC校验
地址 | 功能码 | 数据 | CRC校验 |
1字节 | 1字节 | n字节 | 2字节 |
地址域: 占用一个字节,范围0-255,其中有效范围是1-247,其他为特殊地址,如255广播地址;地址域用于给从机编号,而主机是没有地址的,从机的地址必须是唯一的;
功能码:占用一个字节,功能码定义帧是做什么的,比如查询从机的数据,或修改从机数据,所以不同功能码对应不同功能。
数据: 根据功能码不同,有不同内容结构。
校验: 占用两个字节,用来校验数据传输的正确性
Modbus-ASCII帧结构
帧结构 = 开始符(冒号) + 地址 + 功能吗 + 数据 + LRC校验 + 结束符(\r\n)
开始符 | 地址 | 功能码 | 数据 | LRC校验 | 结束符 |
1字节 : | 1字节 | 1字节 | n字节 | 1字节 | 2字节 \r\n |
Modbus-TCP帧结构
帧结构 = MBAP + 功能吗 + 数据
MBAP | 功能码 | 数据 | |||
事务处理标识符 | 协议标识符 | 长度 | 地址 | ||
2字节 | 2字节 | 2字节 | 1字节 | 1字节 | n字节 |
MBAP: Modbus Application Protocol Header(Modbus应用协议) 头部;
事务处理标识符:报文的序列号,每帧数据通讯后加1,用来区分不同的通信数据报文
协议标识符: 用00 00来表示是Modbus TCP协议
长度: 用来表示后面数据的字节长度
地址: 从站地址