modbus tcp和modbusRTU的区别

        Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。接下来,详细为你说下modbus tcp和modbusRTU的区别。

modbus tcp和modbusRTU的区别_第1张图片

一、Modbus RTU

modbus tcp和modbusRTU的区别_第2张图片

RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成。数据由数据长度(两个字节,表示的是寄存器个数,假定为M)和数据正文(M乘以2个字节)组成。

功能码:

modbus tcp和modbusRTU的区别_第3张图片

发: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和modbusRTU的区别_第4张图片

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

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

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

modbus tcp和modbusRTU的区别_第5张图片

发: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

三、modbus tcp和modbusRTU的区别

1、概念不同
MODBUS是一种标准的工业控制数据交换协议,可以用RTU和ASCII两种方式进行协议数据的互传,RTU是通过二进制数据方式直接传送数据,而TCP是通过将每字节二进制数据转换为固定两位十六进制字符串,再依次串联在一起,以TCP码形式进行数据传送,一般用得最多的还是RTU方式。

2、通信方式不同
 以太网,对应的通信模式是MODBUS TCP。异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。高速令牌传递网络,对应的通信模式是Modbus PLUS。

modbus tcp和modbusRTU的区别_第6张图片

你可能感兴趣的:(笔记,tcp/ip,网络,网络协议,物联网)