Modbus RTU与Modbus TCP的区别

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

在工业现场一般都是采用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之间的区别说得比较清楚了。

  Modbus的功能码有:

功能码含义功能码含义
0x01读线圈0x04读输入寄存器
0x05写单个线圈0x03读保持寄存器
0x0F写多个线圈0x06写单个保持寄存器
0x02读离散量输入0x10写多个保持寄存器

 

 

 

 

 

 

 

一、Modbus RTU

   RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成。

数据由数据长度(两个字节,表示的是寄存器个数,假定为M)和数据正文(M乘以2个字节)组成。

发:01 03 01 8E 00 04 25 DE  //读(0x03),从寄存器地址01 8E 开始读,读4个寄存器00 04

回:01 03 08 00 01 00 01 00 01 00 01 28 D7  //  08表示数据长度  ,00 01 00 01 00 01 00 01读到的数据

 

发:00 10 00 20 00 01 02 00 00 AC A0 // 写(0x10),从寄存器地址 00 20开始写,写一个寄存器 00 01,写入值 00 00

回:00 10 00 20 00 01 01 D2

 

二、Modbus TCP

   Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码。

MBAP报文头:

事务处理标识协议标识长度单元标识符
2字节2字节2字节1字节

 

 

 

事务处理标识可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文
协议标识符00 00表示ModbusTCP协议
长度表示接下来的数据长度,单位为字节
单元标识符可以理解为设备地址

 

 

 

 

 

 

 发:00 00 00 00 00 06 00 03 00 20 00 01 
回:00 00 00 00 00 05 00 03 02 00 00 

 发:00 00 00 00 00 06 00 04 00 30 00 01
回:00 00 00 00 00 05 00 04 02 00 08 

 

发:00 00 00 00 00 09 00 10 00 20 00 01 02 00 00

回:00 00 00 00 00 06 00 10 00 20 00 01

三、总结(注:16进制发送)

1、读指令对比(0x04)

 MBAP报文头地址码功能码寄存器地址寄存器数量CRC校验
Modbus RTU010400 0000 1671 C4
Modbus TCP00 00 00 00 00 06 01 0400 0000 16

 

 

 

 

 

 

2、写指令对比(0x10)

 MBAP报文头地址码功能码寄存器地址寄存器数量数据长度正文CRC校验
Modbus RTU 00 1000 20 00 01 02 00 00 AC A0 
Modbus TCP 00 00 00 00 00 09 00 10 00 20  00 0102  00 00 

 

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyuinsdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值