Modbus通讯协议1

298 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情

Modbus通讯协议:
1.位置:应用层报文传输协议,支持使用RS232/RS485/RS422协议的串行设备
2.作用:它在设备与客户机/服务器之间提供通信,
3.内容:
modbus-RTU
Modbus-TCP
Modbus-ASCLL
以上三种一个设备只会有一种协议,一般来说大部分设备都是Modbus-RTU协议
4.通讯过程:
Modbus是主从方式通信,不能够同步进行通信,即主机发送,从机应答。一个总线上有一个主机,多个从机,主机发送数据时 要查询从机的地址,然后选择对应从机的地址,再进行数据下发。从机得到主机发送的数据后,对应地址的从机就会进行回复 这时主机得到了从机数据,这样就完成了一个主机到从机的通信。
5.Modbus-RTU协议
5.1 帧结构:(16进制)
地址+功能码+数据+校验
①地址:从机地址(传感器的地址),占用一个字节,有效范围:1-247
②功能码:不同功能码对应不同功能,占用一个字节,(主机发给从机的功能码是啥,从机就要回复同样的功能码,如果不一样说明这一帧数据有错误)
③数据:数据结构根据功能码而定
寄存器起始地址+寄存器数量/数据内容(+...(总字节数+数据)) 查询功能码:0x03 修改单个寄存器功能码:0x06 修改多个寄存器功能码:0x10 ④校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。
(循环冗余校验)CRC循环校验
5.2归纳:
从机地址+0x03—主机发送起始地址+寄存器数量+校验码,从机回复总字节数+数据+校验码;

从机地址+0x06—主机发送起始地址+数据内容+校验码,从机返回起始地址+数据内容+校验码;
从机地址+0x10—主机发送起始地址+寄存器个数+总字节数+数据+校验码,从机返回起始地址+寄存器数量+校验码