工业上的通讯协议之Modbus

匿名 (未验证) 提交于 2019-12-03 00:04:02

工业上的通讯协议之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公共功能码定义

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!