TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可
MBAP Header长度共7个字节,分别为Transaction identifier(事务标识符),Protocol identifier(协议标识符),Length(长度),
Unitidentifier(单元标识符)组成,具体如下表所示:
+------------+---------+-----------------------------+----------------------+----------------------------+
| 字 段 | 长 度 | 描 述 | 客 户 端 | 服 务 端 |
+------------+---------+-----------------------------+----------------------+----------------------------+
| 事务标识符 | 2 Bytes | 标示一个MODBUS请求/响应事务 | 由客户端初始化 | 从接收到的请求数据帧中复制 |
+------------+---------+-----------------------------+----------------------+----------------------------+
| 协议标识符 | 2 Bytes | 0 = MDOBUS协议 | 由客户端初始化 | 从接收到的请求数据帧中复制 |
+-------------+--------+-----------------------------+----------------------+----------------------------+
| 长 度 | 2 Bytes | 下列各项的字节数 | 由客户端初始化(请求) | 由服务端初始化(响应) |
+-------------+--------+-----------------------------+----------------------+----------------------------+
| 单元标识符 | 1 Bytes | 标示一个已连接在串行线或 | 由客户端初始化 | 从接收到的请求数据帧中复制 |
| | | 其他总线的远程从站连接 | | |
+------------+---------+-----------------------------+----------------------+----------------------------+
实际上Modbus协议包括ASCII、RTU、TCP。
标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验.
ModbusTCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
MODBUS TCP和MODBUS RTU的差别不是很大。
二者相同的地方是应用数据单元是一致的。
差别是MODBUS TCP是传输在TCP/IP网络上的,多了一个报文头,少了CRC校验,采用TCP的502端口
RTU多了设备地址和CRC校验