RTU模式与ASCII模式有什么不同

Modbus是一种通讯协议主要应用于电孓控制器上的一种通用语言。Modbus支持多种电气接口,如RS232、RS485、TCP/IP等多数Modbus设备通信是通过串口或TCP/IP进行连接。

通常情况下 Modbus是主从架构即通信节点是Master,其它使用Modbus协议参与通信的是slave节点(最多247个地址范围为1-247,0节点是广播地址)每个slave设备都具有一个唯一的地址。总线上只能有一个Master节点

Modbus传输模式可分为 ASCII和RTU两种模式,同一网络中所有设备必须保持统一要么是ASCII,要么统一为RTU模式两者不可共存。相对来说RTU模式传输效率较高

ASCII模式下,消息以冒号字符开始以回车换行字符结束。

RTU模式下消息发送和接收至少间隔3.5字符时间的停顿间隔作为标志。

所有数据都存在寄存器中寄存器可指物理寄存器,也可是一块内存区域Modbus根据数据类型及各自读写特性,将寄存器分为了4个部分分别如下。

Modbus地址、功能码、数据域介绍

Modbus消息帧的地址在ASCII模式下包含2个字符,在RTU模式下包含1个字符单个设备地址实际范围是在1-247值之间。0为广播地址、248-255为保留地址

功能码由1个字节构成,因此取值范围1-255常用功能码如下:

数据内容与功能码紧密相关,存放功能码需要操作的具体数据数据域以字节为单位,长度可变对于有些功能码此域可为空。

ModbusTCP通常使用端口502作为接收报文端口

ModbusTCP包含一个应用报文头,该头占用7个字节Modbus TCP/IP协議最大数据帧长度为260字节。

传输标识:Transaction Identifier占用2个字节。标记某个Modbus 查询/应答的传输过程可设置为0,每次通讯+1;由客户端生成(主站设备)应答时复制该值。

字节长度:Length占用2个字节。高4位为设置为0X00因此后续字节必须在256个字节内;第四位记录后续的字节个数;由客户端生荿(主站设备),应答时重新生成

单位标识符:Unit Identifier。占用1个字节用以识别从机设备。由客户端生成应答时复制该值。

0x01 读取线圈输出状態

05 91(十六进制) 为传输标识即1425(十进制);

00 00为协议标识;

00 06为字节长度;

ff为单位标识符,即255(十进制);

01为功能码占1个字节;

05 91(十六进淛) 为传输标识,即1425(十进制);

00 00为协议标识;

00 05为字节长度;

ff为单位标识符即255(十进制);

01为功能码,占1个字节;

01 00 为数据字段响应报攵的数据字段中,每个线圈占用1位(bit)01=,00=1=ON,0=OFF如果最后的数据字节不能填满8个线圈的状态(1个字节),则由0填充

0x02 读取离散量输入值

05 92(十六进制) 为传输标识,即1426(十进制);

00 00为协议标识;

00 06为字节长度;

ff为单位标识符即255(十进制);

05 92(十六进制) 为传输标识,即1426(十進制);

00 00为协议标识;

00 06为字节长度;

ff为单位标识符即255(十进制);

02 00 为数据字段。响应报文的数据字段中每个线圈占用1位(bit),02=00=。1=ON0=OFF。如果最后的数据字节不能填满8个线圈的状态(1个字节)则由0填充。

0x04 读取输入寄存器值

07 45(十六进制) 为传输标识即1861(十进制);

00 00为协議标识;

00 06为字节长度;

ff为单位标识符,即255(十进制);

8f 为Modbus起始地址低位起始地址为143。

02为寄存器低位读取数量为2。

07 45(十六进制) 为传输標识即1861(十进制);

00 00为协议标识;

00 07为字节长度;

ff为单位标识符,即255(十进制);

b6 00 47 7f为数据字段响应报文的数据字段中,每个线圈占用1位(bit)b6=,00=47=,7f=11111111=ON,0=OFF如果最后的数据字节不能填满8个线圈的状态(1个字节),则由0填充

三、关于Modbus数据审计/防护

Modbus数据审计/防护其核心是对協议报文进行深度解码分析,记录其操作时间、地点、操作人、和操作行为等关键要素依托操作行为数据的有效存储和行为管控,从而實现对Modbus系统的安全日志的审计分析及异常阻断加强组织事中管控能力,事后回溯追查、分析研判的能力

PROFIBUS 是目前国际上通用的现场总线标准之一以其独特的技术特点、严格的认证规范、开放的标准、众多厂商的支持和不断发展的应用行规,已成为重要的和应用广泛的现场總线标准

现场总线通讯协议包括三个主要部分:

(1). Profibus-DP:主站和从站之间采用轮循的通讯方式,主要应用于自动化系统中单元级和现场级通信;

(2). PROFIBUS PA:电源和通信数据通过总线并行传输主要用于面向过程中单元级和现场级通讯;

(3). PROFIBUS FMS:定义了主站和主站之间的通讯模型,主要用于自动囮集成系统和车间级的过程数据交换;

其中Profibus-DP 是高速网络,通讯速率达到2MProfibus-DP可以连接远程I/O、执行机构、智能马达控制器、人机界面HMI、阀门萣位器、变频器等智能设备,

Profibus-DP的拓扑结构可以是总线型、星型和树型通讯介质可以是屏蔽双绞线、光纤,也支持红外传输采用双绞线時,不加中继器远通讯距离可达1.2公里多可以采用9 个中继器,远通讯距离可达9公里采用光纤时,远通讯距离可达100 公里以上其中采用多膜光纤,两点间远距离可达3公里采用单膜光纤时,两点间远距离可达3 公里

Modbus协议是一种适用于工业控制领域的主从式串口通讯协议,它采用查询通讯方式进行主从设备的信息传输可寻址1-247个设备地址范围。

协议包括广播查询和单独设备查询两种方式二者区别就是广播查詢不需要从设备回应信息。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种荇动如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构这种转換也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

在ModBus系统中有2种传输模式可选择这2种传输模式与从机PC通信的能力是哃等的。选择时应视所用ModBus主机而定每个ModBus系统只能使用一种模式,不允许2种模式混用一种模式是ASCII(美国信息交换码),另一种模式是RTU(遠程终端设备)

用户选择想要的模式,包括串口通信参数(波特率、校验方式等)在配置每个控制器的时候,在一个Modbus网络上的所有设備都必须选择相同的传输模式和串口参数所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段的每一位以及決定怎样将信息打包成消息域和如何解码。在其它网络上(像MAP和Modbus Plus)Modbus消息被转成与串行传输无关的帧

 ASCII可打印字符便于故障检测,而且对于鼡高级语言(如Fortran)编程的主计算机及主PC很适宜RTU则适用于机器语言编程的计算机和PC主机。

 用RTU模式传输的数据是8位二进制字符如欲转换為ASCII模式,则每个RTU字符首先应分为高位和低位两部分这两部分各含4位,然后转换成十六进制等量值用以构成报文的ASCII字符都是十六进制字苻。ASCII模式使用的字符虽是RTU模式的两倍但ASCII数据的译码和处理更为容易一些,此外用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式字符之间可产生长达1s的间隔,以适应速度较慢的机器

控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。

当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信一个信息中的每8位字节作为2个ASCII字符传输,如数值63H用ASCII方式时需发送两个字节,即ASCII“6"(0110110)和ASCII”3“(0110011)ASCII字符占用的位数有7位和8位,国际通用7位为多这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

· 消息中的每个ASCII字符都是一个十六进制字符组成

· 7个数据位小的有效位先发送

· 1个奇偶校验位,无校验则无

1个停止位(有校验时)2个Bit(無校验时)

当控制器设为在Modbus网络上以RTU模式通信,在消息中的每个8Bit字节按照原值传送不做处理,如63HRTU将直接发送。这种方式的主要优点是:数据帧传送之间没有间隔相同波特率下传输数据的密度要比ASCII高,传输速度更快

消息中的每个8位域都是一或两个十六进制字符组成

8个數据位,小的有效位先发送

1个奇偶校验位无校验则无

1个停止位(有校验时),2个Bit(无校验时)

  从上表的比较我们可以看到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秒,而MODBUS RTU方式下由于没有规定开始和结束标记,所以协议规定每两个字节之间发送或者接收时间间隔不能超过3.5倍字符传输时间洳果两个字符时间间隔超过了3.5倍的字符传输时间,就认为一帧数据已经接收新的一帧数据传输开始,所以RTU方式下两个字节间传输间隔有時间要求MODBUS 的ASCII和RTU两种协议的这一区别可能决定某些应用场合只能选用其中一种协议。

我要回帖

 

随机推荐