一篇文章讲清楚Modbus RTU、Modbus ASCll和Modbus TCP协议区别

[复制链接]
查看98957 | 回复0 | 2024-6-26 11:15:23 | 显示全部楼层 |阅读模式
上一篇文章写到Modbus协议可分为Modbus RTU、Modbus ASCll、Modbus TCP。其中Modbus RTU、Modbus ASCll两种协议是基于串行接口(RS-485、RS-232、RS-422)物理层,Modbus TCP协议基于以太网物理层。

RS-485和Modbus之间是啥关系?

那么对于同样基于串行物理层的Modbus RTU、Modbus ASCll两种协议有什么区别?

RTU是Remote TerminalUnit的编写,意思是远程终端单元。ASCII是American Standard Code for nfomation Interchange,意思是美国信息交换标准代码,是将文字编辑符号、大小写字母、数字和一些不可见的控制字符进行编码的一种字符表示形式,除了空字符外,共127个字符编码。

Modbus 使用主从协议进行通讯。客户机作为主站,向服务器发出请求,服务器(从站)接到请求后,对主站进行响应。其中使用的通信帧被称为应用数据单元(Application Data Unit,ADU),它包括通信地址段、功能代码段、数据段和校验段。



其中,功能代码段和数据段组合称为协议数据单元(Protocol Data Unit or Protocol Description Unit),PDU)。功能代码段占用一个字节,取值范围为1~255,其中128~255为保留值,用于异常消息应答报文。1~127为功能代码编号,其中65~72和100~110为用户自定义编码。

a.地址域:指的是总线节点上设备的地址,合法地址为0-247,其中地址0为广播地址,节点设备地址可以从1-247范围选择,同一总线节点地址唯一。

b.功能码:指明服务器要执行的动作。

c.数据域:含有请求和响应参数的数据。

d.差错校验:对报文内容进行“冗余校验”的计算结果(Modbus RTU采用CRC校验,Modbus ASCll采用LRC校验)

一、Modbus RTU通信帧介绍

Modbus RTU通信帧由从站地址+功能码+数据+CRC校验组成,数据帧的最大长度为256个字节。



RTU数据帧中的每个字节数据的定义,每个字节为8bit,报文中的每个8位字节含有两个4位十六进制字符(0-9,A-F)。

字符的传送格式是:1位起始位+8位数据位+1位奇偶校验+1位停止位,传送过程中LSB先发送,最后才是MSB。



二、Modbus ASCll通信帧介绍

Modbus ASCll通信帧由起始+从站地址+功能码+数据+LRC校验+结束组成,数据帧的最大长度为513个字节。



对比Modbus RTU协议Modbus ASCll协议有两点不同。

1.Modbus ASCll协议有起始和结束,在该协议报文中,以冒号“:”作为起始,以回车换行为结束。

2.Modbus ASCll协议报文规定每个字节数据以两个ASCll字符进行发送。如数据字节0X5B,会被编码成两个字符0X35=“5”,0X42=“B”,而Modbus RTU则直接将0X5B进行发送。



三、Modbus TCP介绍

Modbus TCP和Modbus RTU基本是相同的,区别在Modbus TCP协议是基于以太网进行传输的,使用了TCP502端口,该协议物理层,数据链路层,网络层,传输层都是基于TCP 协议,只在应用层,将Modbus 协议修改后封装进去。接收端将该TCP 数据包拆封后,重新获得原始Modbus 帧,然后按照Modbus 协议规范进行解析,并将返回的数据包重新封装进TCP 协议中,返回到发送端。

1.Modbus TCP中不存在从机地址一说,相应的对应设备通过IP地址进行识别。

2.CRC校验也不存在,因为TCp数据包中已经存在校验,可以确保数据准确性。

以上就是Modbus RTU、Modbus ASCll和Modbus TCP协议三者的基本区别,通过这篇文章我们是不是对这三种协议有一个更深的理解了呢?感谢观看,想了解更多工控知识欢迎关注。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则