工业上的通讯协议之Modbus
Modbus通讯协议
当在一Modbus网络上通信时,此协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
当在网络上通信时,Modbus协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某从站点断开后(如故障或关机),主端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。
Modbus与OSI参考模型
Modbus之ASCII通讯方式
数据帧
广播模式(只用于写操作)
非广播模式
Modbus之RTU通讯方式
Modbus TCP通讯应用
Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:
1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程;
2) 准备Modbus报文,包括7个字节MBAP内请求;
3) 使用send()命令发送;
4) 同一连接等待应答;
5) 同recv()读报文,完成一次数据交换过程;
6) 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务。
Modbus TCP/IP协议
Modbus TCP/IP协议,就是去掉了modbus协议本身的CRC校验,增加了MBAP 报文头。
首先来看一下,MBAP 报文头都包括了哪些信息和内容。
MBAP报文头包括下列区域:
MODBUS公共功能码定义
来源:51CTO
作者:RayRings
链接:https://blog.csdn.net/m0_37805255/article/details/100604769