SEARCH
Tastek Information
了解更多塔石的讯息
首页 / 新闻资讯 / 技术交流
News

Modbus tcp和Modbus rtu之间的区别

2019-12-24

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

Modbus RTU通信

发送格式为 从站地址 01(表示从站地址) 功能码 03 (读单/多个保持寄存器) 数据起始地址 00 00 (表示从40001开始) 数据个数 00 02(表示读两个字) CRC检验码 xx xx(这里的CRC校验码为C4 0B)。连起来就是 01 03 00 00 00 02 C4 0B 发送过去之后,从站会返回数据,数据格式为 01 03 04 01 02 03 04 5B 3C  其中 01 从站地址 03 功能码读 04 数据字节数 01 02 03 04 数据内容 5B 3C CRC校验码

Modbus TCP协议

是在Modbus RTU协议上加一个MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码,这个MBAP报文头共七个字节长度,除了第五、六个字节外,其余的基本上都是不变。例如用Modbus TCP完成上面的操作则是发送 00 01 00 00 00 06 ff 03 00 00 00 02 即可,第五、六个字节为00 06 表示00 06之后有6个字节。

返回值则是00 01 00 00 00 07 ff 03 04 01 02 03 04 。其中前7个字节是MBAP报文头,03 功能码读,04 数据字节数 01 02 03 04表示数据内容。

所以Modbus TCP协议其实就是Modbus RTU协议去掉CRC校验码,去掉前面的从站地址码,然后在最前面加上7个字节的长度的MBAP报文头。