Modbus Tcp协议详解

本文为原创,看了kevin的博文有感而写!

一、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]功率设定低字节
(返回)同上



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

猜你喜欢

转载自blog.csdn.net/qq_36961530/article/details/76585131