查看: 515|回复: 0
打印 上一主题 下一主题

Modbus协议ASCII、RTU和TCP的区别

[复制链接]

45

主题

47

帖子

616

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
616
跳转到指定楼层
楼主
发表于 2019-5-28 12:05:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分。Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,从而使得Modbus协议在全球得到了广泛的应用,现在Modbus已经是工业领域全球最流行的协议。


Modbus协议支持传统的RS-232、RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为它们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。


Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通,因此Modbus协议的可靠性较好。


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通信协议。


下表是ASCII协议和RTU协议进行的比较:

协议
开始标记
结束标记
校验位
传输效率
程序处理
ASCII
:(冒号)
CR,LF
LRC

简单,直观
RTU


CRC

不直观,稍复杂


对于Modbus的RTU和TCP协议来说,二者非常相似,Modbus TCP协议是在RTU协议上加一个MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码的,这个MBAP报文头共7个字节(分别为Transaction identifier(事务标识符) 2 Bytes,Protocol identifier(协议标识符) 2 Bytes,Length(长度) 2 Bytes,Unitidentifier(单元标识符) 1 Byte组成),除了Length字段外,其余的基本上都不变。所以我们只要把RTU协议两个字节的校验码去掉,然后在RTU协议的开始加上MBAP报文头,通过TCP/IP网络协议502端口发送出去即可。


Modbus RTU与Modbus TCP读指令对比:

协议
MBAP报文头
地址码
功能码
寄存器地址
寄存器数量
CRC校验
RTU

01
03
01 8E
00 04
25 DE
TCP
00 00 00 00 00 06 01

03
01 8E
00 04


指令释义:从地址码为01(TCP协议单元标志为01)的模块0x18E(01 8E)寄存器地址开始读(03)四个(00 04)寄存器。


Modbus RTU与Modbus TCP写指令对比:

协议
MBAP报文头
地址码
功能码
寄存器地址
寄存器数量
数据长度
正文
CRC校验
RTU

01
10
01 8E
00 01
02
00 00
A8 7E
TCP
00 00 00 00 00 09 01

10
01 8E
00 01
02
00 00


指令的释义:从地址码为01(TCP协议单元标志为01)的模块0x18E(01 8E)寄存器地址开始写(10)一个(00 01)寄存器,具体数据长度为2个字节(02),数据正文内容为00 00(00 00)。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表