一、ModbusTcp简介

什么是ModbusTcp? /1、Modbus rtu和Modbus tcp两个协议的本质都是MODBUS协议,都是靠MODBUS寄存器地址来交换数据; /2、但所用的硬件接口不一样,Modbus RTU一般采用串口RS232C或RS485/422,而Modbus TCP一般采用以太网口。 /3、现在市场上有很多协议转换器,可以轻松的将这些不同的协议相互转换 如:Intesisbox可以把modbus rtu转换成Modbus tcp实际上Modbus协议包括ASCII、RTU、TCP。 /4、标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式。  /5、Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验. /6、ModbusTCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。 /7、TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。

二、报文解析

本报文以电力逆变器设备的报文做解析

1、查询指令

(发送)00 00 00 00 00 06[k1]  01[k2]  03[k3]  00[k4]  00[k5]  00[k6]  00[k7] 

[k1]起始字符组,长度,代表后面还有6个字节

[k2]设备地址

[k3]读指令

[k4]寄存器地址高8位

[k5]寄存器地址低8位

[k6]寄存器数量高8位

[k7]寄存器数量低8位

(返回)00 00 00 00 00 25[k1]  01[k2]  03[k3]  22[k4] (自定义功能码字节区)

[k1]起始字符组,长度,代表后面还有25个字节

[k2]设备地址

[k3]读指令

[k4]表示接下来数据字节的长度

2、控制指令(启动/停止)

(发送)00 00 00 00 00 06[k1]  01[k2]  06[k3]  00 12 00 01[k4]

[k1]起始字符组,长度,代表后面还有6个字节

[k2]设备地址

[k3]写指令

[k4]00=停止/01=启动

(返回)同上

3、逆变功率设定指令

(发送)00 00 00 00 00 06[k1]  01[k2]  06[k3]  00 13 00[k4]  00[k5] 

[k1]起始字符组,长度,代表后面还有6个字节

[k2]设备地址

[k3]写指令

[k4]功率设定高字节

[k5]功率设定低字节

(返回)同上

谨以此为需要做解析的朋友做参考。