Modbus RTU协议


参考:https://zhuanlan.zhihu.com/p/38920259

Modbus通信协议具有多个变种,其具有支持串口(主要是RS-485总线)、以太网。其中最著名的是

  • Modbus RTU(串口)
  • Modbus ASCII(串口)
  • Modbus TCP(以太网)

三种。

其中Modbus RTU与Modbus ASCII均为支持RS-485总线的通信协议,其中Modbus RTU由于其采用二进制表现形式以及紧凑数据结构,通信效率较高,应用比较广泛。

而Modbus ASCII由于采用ASCII码传输,并且利用特殊字符作为其字节的开始与结束标识,其传输效率要远远低于Modbus RTU协议,一般只有在通信数据量较小的情况下才考虑使用Modbus ASCII通信协议,在工业现场一般都是采用Modbus RTU协议,一般而言,大家说的基于串口通信的Modbus通信协议都是指Modbus RTU通信协议

在此我们着重讨论Modbus RTU协议,而Modbus TCP协议则是在RTU协议上加一个MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码.

用一句比较通俗的话说就是:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK。虽然这句话说得不是特别准确,但是也基本上把RTU与TCP之间的区别说得比较清楚了。

RTU协议中的指令由

  • 地址码(一个字节)
  • 功能码(一个字节)
  • 起始地址(两个字节)
  • 数据(N个字节)
  • 校验码(两个字节)

五个部分组成,其中数据又由数据长度(2 字节,表示的是寄存器个数为 M)和数据正文(2*M 字节)组成,

RTU协议是采用3.5个字节的空闲时间作为指令的起始和结束,

一般而言,只有当从机返回数据或者主机写操作的时候,才会有数据正文,而其他时候比如主机读操作指令的时候,没有数据正文,只需要数据长度即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM