Modbus的ASCII模式和RTU模式是怎么回事?我来告诉你!

   日期:2020-09-11     浏览:89    评论:0    
核心提示:在工业互联网领域,大家一定对Modbus协议并不陌生。前段时间“知识科普小能手”宇泰科技也为大家推送过一篇《几分钟带你吃透Modbus协议》的文章,主要是从工作原理、通讯方式、特点等对Modbus协议进行了一个简单的介绍。今天小编就接着上回和大家继续聊一聊Modbus协议下的两种模式--RTU和ASCII两种模式。Modbus协议在串行总线通信中的协议有RTU和ASCII两种模式。

在工业互联网领域,大家一定对Modbus协议并不陌生。前段时间“知识科普小能手”宇泰科技也为大家推送过一篇《几分钟带你吃透Modbus协议》的文章,主要是从工作原理、通讯方式、特点等对Modbus协议进行了一个简单的介绍。今天小编就接着上回和大家继续聊一聊Modbus协议下的两种模式--RTU和ASCII两种模式。

Modbus协议在串行总线通信中的协议有RTU和ASCII两种模式。RTU是Remote Terminal Unit的缩写,意思是远程终端单元。ASCII是American Standard Code for Information Interchanged的缩写,意思是美国信息交换标准代码,是将文字编辑符号、大小写字母、数字和一些不可见的控制字符进行编码的一种字符表示形式,除了空字符外,共127个字符编码。

了解其含义之后,二者到底有哪些区别呢?小编从以下几个方面进行了对比:

①二者作用不同

两种协议的不同之处,最简单的讲就是RTU是直接发送数据,二进制代码,其表示的物理意义,需要发送端和接收端进行约定;ASCII发送的数据是用于表示字符的二进制代码。

②二者传输方式不同

在ASCII模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如十六进制数0xaf,会被分解成ASCII字符“A”和“F”进行发送,发送的字符量比RTU增加一倍;在RTU模式下,每个字节可以传输两个十六进制字符,比如十六进制数0xAF,直接以十六进制0xAF(二进制:10101111)进行发送,因此它的发送密度比ASCII高一倍。

表一:RTU模式传输

 

表二:ASCII模式传输

 

③两者的数据帧校验方式不同。

从上面两个表格中也可看出:RTU使用CRC校验,即循环冗余检验;ASCII使用的是LRC,即纵向冗余校验。

④两者的数据域的长度不同。

RTU数据域的长度为252字符,而ASCII的是其两倍。

⑤RTU是必须,ASCII是可选项

在Modbus协议标准中,RTU是必须要求的,而ASCII是可选项,即作为一个Modbus通信设备可以只支持RTU,也可以同时支持RTU和ASCII,但不能只支持ASCII。

 

ASCII模式和RTU模式分别有什么优缺点呢?小编为大家做了一个表格,方便进行比较:

从上表的比较我们可以看到,Modbus的ASCII协议和RTU协议相比,Modbus ASCII协议拥有开始和结束标记,而Modbus RTU协议却没有,所以ASCII协议的程序中对数据包的处理能更加方便。

Modbus ASCII协议的DATA域传输的都是可见的ASCII字符,因此在调试阶段就显得更加直观,另外它的LRC校验程序也比较容易编写,这些都是Modbus ASCII协议的优点。

Modbus ASCII的主要缺点是传输效率低,因为它传输的都是可见的ASCII字符,原来用RTU传输的数据每一个字节,用ASCII的话都要把这个字节拆分两个字节,比如RTU传输一个十六进制数0xF9,ASCII就需要传输字符'F'和字符'9',对应的ASCII码0x46和0x39两个字节,这样它的传输的效率肯定就比RTU低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。

 

另外,由于ASCII协议有开始标志和结束标志,所以一个数据包之间的各字节间的传输间隔时间可以大于1秒,而RTU协议由于没有规定开始和结束标记,所以协议规定每两个字节之间发送或者接收的时间间隔不能超过3.5倍字符传输时间,如果两个字符时间间隔超过了3.5倍的字符传输时间,就认为一帧数据已经接收,新的一帧数据传输开始,所以RTU协议下两个字节间传输间隔有时间要求。这一区别也决定某些应用场合只能选用其中一种协议。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服