Modbus在串行总线通信中的协议有RTU和ASCII两种。RTU是Remote Terminal Unit的缩写,意思是远程终端单元。ASCII是American Standard Code for Information Interchange,意思是美国信息交换标准代码,是将文字编辑符号、大小写字母、数字和一些不可见的控制字符进行编码的一种字符表示形式,除了空字符外,共127个字符编码。
两种协议的不同之处,孔丙火(微信公众号:孔丙火)认为,最简单的讲,就是:RTU是直接发送数据,二进制代码,其表示的物理意义,需要发送端和接收端进行约定;ASCII发送的数据是用于表示字符的二进制代码;举例如下:

图1 
在数据发送格式上,两者也有以下不同之处。
(1)ASCII有开始字符和结束字符,可以作为一帧数据开始和结束的标志,用于接收端判断,一个报文必须以一个‘冒号’ ( : )(ASCII 十六进制3A )起始,以‘回车-换行’ (CR LF) (ASCII 十六进制0D 和0A) 结束,如图2所示。而RTU则没有这样的标志,需要用时间间隔来判断一帧数据的开始和结束,协议中规定的是3.5个字符周期,就是在一帧开始前,必须有大于3.5个字符周期的空闲时间,一帧结束后,也必须有大于3.5个字符周期的空闲时间,否则会出错,如图3所示。

图2

图3
特别说明:大家都知道,串口发送数据是以字节为单位的,两个字节的发送时间间隔在RTU中也是有规定的,必须小于1.5个字符周期,不然也会出错。字符周期是一个时间单位,在孔丙火(微信公众号:孔丙火)看来,很多人在做的时候会弄错这个概念,有的人以为是bit,这是不对的,应该是字节,但不是8个bit的字节,而是RTU发送1个字节的实际bit数,这里面包含一些附加位,如起始位、停止位、校验位等,加起来是11个bit,即1个字符周期是11bit的时间。那么问题来了,细心的朋友就会问孔丙火(微信公众号:孔丙火),如果串口参数是无校验的时候,不就是10个bit了吗?的确是这样,所以RTU协议中有明确规定,偶校验是推荐的,但无校验也是允许的,但也推荐,无校验的时候,停止位最好设置为2位,就是为了确保1个字符周期是11bit。
(2)两者的数据域的长度不同,RTU数据域的长度为252字符,而ASCII的是其两倍,这是由于本文第2段所述的原因,同时为了两种协议的应用层数据保持一致,才做出这样的规定。孔丙火(微信公众号:孔丙火)还注意到一个问题,在标准中,描述数据域长度使用的单位是字符,而不是字节,我想这跟我在上段中描述的11bit的问题有关,用字符更加准确。
(3)两者的数据帧校验方式不同。RTU使用CRC校验,即循环冗余检验,ASCII使用的是LRC,即纵向冗余校验。
(4)在Modbus标准中,RTU是必须要求的,而ASCII是可选项,即作为一个Modbus通信设备可以只支持RTU,也可以同时支持RTU和ASCII,但不能只支持ASCII。
参考文献:GB/T 19582-2008。
文章在微信公众号同步推出,微信公众号:孔丙火,关注欣赏更多文章。

本订阅号致力于单片机、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,一起分享,共同交流。

简说Modbus-RTU与Modbus-ASCII的更多相关文章

  1. C# 开发Modbus Rtu客户端 modbus测试Demo,Modbus 串口通信 , 虚拟MODBUS-RTU测试

    前言 本文将使用一个NuGet公开的组件技术来实现一个ModBus RTU的客户端,方便的对Modbus rtu的服务器进行读写,这个服务器可以是电脑端C#设计的,也可以是PLC实现的,也可以是其他任 ...

  2. Modbus RTU 通信工具设计(转)

    Modbus RTU 通信工具设计 Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PD ...

  3. Modbus TCP和Modbus Rtu协议的区别 转

    http://blog.csdn.net/educast/article/details/9177679   Modbus rtu和Modbus tcp两个协议的本质都是MODBUS协议,都是靠MOD ...

  4. Modbus RTU 介绍

    S7-1200 Modbus RTU 通信概述 Modbus具有两种串行传输模式:分别为ASCII和RTU.Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modb ...

  5. Modbus RTU通信协议详解以及与Modbus TCP通信协议之间的区别和联系

    Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约.由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Mod ...

  6. Modbus RTU 通信应用案例

    如何打开项目归档文件 例程中的TIA博途项目文件与STEP 7项目文件均为归档文件,需要按如下方式打开: TIA博途项目文件 1. 打开TIA博途软件,通过软件左下方“项目视图”按钮切换至项目视图: ...

  7. modbus ASCII和MODBUS RTU区别

    下表是MODBUS ASCII协议和RTU协议的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII :(冒号) CR,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC ...

  8. Modbus协议栈实现Modbus RTU多主站支持

    前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用.但在使用过程中,我们 ...

  9. ModBus通信协议的【Modbus RTU 协议使用汇总】

    1.RTU模式 当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符.这种方式的主要优点是:在同样的波特率下,可比ASCII方式传 ...

  10. 调试备忘录-RS485 MODBUS RTU协议简述

    目录--点击可快速直达 目录 写在前面 先简单说下什么是MODBUS? 参考文章 写在前面 最近在做和物联网有关的小项目,有一个传感器通讯用到了RS485 MODBUS RTU协议,所以就写个随笔记录 ...

随机推荐

  1. Codeforces 1321D Navigation System

    题意 有个人要从\(s\)走到\(t\),经过的路径给定.导航系统每次会显示当前节点到\(t\)的最短路,有多条就显示其中之一.这个人如果按照导航走,那么啥都没变.如果没有按导航走导航就会重新导航.问 ...

  2. Istio 的配置分析

    Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...

  3. 小程序开发-使用xpath解析网页html中的数据

    最新有个微信小程序的开发需求,需要从网页中提取一些元素信息,获取有效数据 1. 了解到微信小程序里面不能直接操作dom元素,所以我们需要使用一些其他的npm包 2. 经过查到各方面的文档,最新决定用x ...

  4. deepin20 安装英伟达闭源驱动

    第一步.安装深度的"显卡驱动器" 在deepin v20 中默认没有显卡驱动管理器,需要命令行安装,命令如下(刚开始一直出错,当我第一次打开应用商店,就可以安装了,好神奇): su ...

  5. C005:计算多项式的值

    程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float x; do{ printf("E ...

  6. Q20200511-01 翻转字符串

    需求:做一函数将字符串倒转过来 程序: package test4; public class Reverse { public static String reverse(String origin ...

  7. 快速启动CMD窗口的办法

    在 文件管理器的 地址栏输入cmd回车,cmd会快速在此路径下打开. --END-- 2020-01-07

  8. linux 常用目录的作用

    . /   根目录 . /bin     命令保存目录(普通用户就可以读取的命令) . /boot   启动目录,启动相关文件 . /dev    设备文件保存目录 . /etc      配置文件保 ...

  9. oracle数据处理之sql*loader(一)

    SQL*Loader是oracle提供的可以从多种平面文件中向数据库中加载数据的工具,它比较适合业务分析类型数据库(数据仓库);使用sqlldr工具可以在很短的时间内向数据库中加载大量的数据,像把制作 ...

  10. [程序员代码面试指南]数组和矩阵-求最短通路值(BFS)

    题意 给二维矩阵 1.0组成,问从左上角到右下角的最短通路值. 题解 BFS基础.头节点入队:对队内每个节点判断.处理,符合条件的入队:到了终点节点返回. 相关知识 Queue为接口,LinkedLi ...