Modbus TCP及其注意点
主机和从机、服务端和客户端
【在modbus协议中】
主机发送modbus请求,从机根据请求内容向主机返回响应。在modbus协议中,主机总是主动方,从机总是被动方。
【在网络应用中】
在网络应用中存在客户端和服务器端,客户端(例如浏览器)发送请求到服务器,服务器向客户端返回内容(例如HTML文本)。
【在modbus tcp中】
主机是客户端,而从机是服务器端。千万不要以为服务器端重要,主机也重要,所以主机就是服务器端。
是否可以多主机
通过前面的分析,主机为客户端那么modbustcp支持多个主机,在一个 局域网中可存在多个主机和多个从机。从机的连接能力(连接主机的数 量)由UIP的最大TCP连接个数决定。
modbus TCP协议简述
modbus TCP和modbus RTU基本相同,但是也存在一些区别。
a.从机地址变得不再重要,多数情况下忽略。从某种意义上说从机地址被IP地址取代。
b.CRC校验变得不再重要,甚至可以忽略。由于TCP数据包中已经存在校验,为了不重复造轮子,modbus TCP干脆取消了CRC校验。
TCP 模式是为了让Modbus 数据顺利在以太网上传输产生的,使用TCP502 端口。该协议物理层,数据链路层,网络层,传输层都是基于TCP 协议,只在应用层,将Modbus 协议修改后封装进去; 接收端将该TCP 数据包拆封后,重新获得原始Modbus 帧,然后按照Modbus 协议规范进行解析,并将返回的数据包重新封装进TCP 协议中,返回到发送端。与串行链路传输的数据格式不同,TCP 模式去除了附加地址和校验,增加了报文头,其具体格式如图所示。

在modbus TCP中包含一个MBAP头,该头包含以下几个部分。
区域长度,描述客户端服务器传输标志2字节MODBUS 请求和响应传输过程中,序列号客户端生成应答时,复制该值协议标志2字节,Modbus协议默认为0。客户端生成应答时复制该值长度2字节,剩余部分的长度客户端生成应答时,由服务器端生成单元标志1字节,从机标志(从机地址)客户端生成应答时复制该值。
【注意】
【1】传输标志可理解为序列号,防止 MODBUS TCP通信错位,例如后发生的响应先到了主机,而早发生的响应后到主机
【2】单元标志可理解为从机地址,此时已经不再重要
modbus tcp 和 TCP IP的关系
modbus TCP可以理解为发生在TCP上的应用层协议,既然是TCP协议那么一个完整的MODBUSTCP报文必然包括TCP首部,IP首部和Ethernet首部。