Modbus在串行链路上的规范和实现指南外文翻译资料

 2021-12-28 10:12

英语原文共 16 页,支付完成后下载完整资料


Modbus在串行链路上的规范和实现指南
V1.02

引言

本文档范围

MODBUS标准在OSI模型的第7层定义了一个应用层消息传输协议,该协议为连接在不同类型的总线或网络上的设备之间提供了“客户端/服务器”通信。为了在主设备和一个或多个从设备之间交换MODBUS请求,它还标准化了串行链路上的具体协议。

本文档描述的MODBUS串行链路协议,可供任何想要在其产品上实现MODBUS串行链路协议的系统设计人员参考。本文档将提高使用MODBUS协议的设备之间的互通性。

协议概况

本文档描述了MODBUS串行链路协议。 MODBUS串行链路协议是一个主从协议,位于OSI模型的第2层。

主从系统中的主节点向其中一个从节点发出显式命令并处理响应。在没有主节点请求的情况下,从节点通常不会传输数据,也不会与其他从节点通信。

在物理层,实现MODBUS串行链路协议的系统可使用不同的物理接口(RS485,RS232)。TIA / EIA-485(RS485)双线接口是最常见的。作为附加选项,也可以实现RS485四线制接口。当只需要短程点对点通信时,可以使用TIA / EIA-232-E(RS232)串行接口。

下图给出了MODBUS串行通信栈与7层OSI模型相比的示意。

图 1Modbus协议和ISO/OSI模型

位于OSI模型第7层的MODBUS应用层消息传递协议,为连接在不同类型的总线或网络上的设备之间提供了“客户端/服务器”通信。 MODBUS串行链路协议中,主机节点在串行总线上相当于客户端,而从机节点充当服务器。

MODBUS数据链路层

MODBUS主/从协议原理

MODBUS串行链路协议是一个主从协议。同一时刻只有一个主站节点连接到总线,最多247个从站节点连接到同一串行总线。MODBUS通信始终由主站发起,如果没有接收到主节点的请求,从节点将不会传输数据,从节点之间也不能直接相互通信。 主节点在同一时刻只能启动一个MODBUS事务。

主节点以两种模式向从节点发出MODBUS请求:

  • 在单播模式下,主节点寻址单个从节点。从节点在接收并处理请求之后向主节点返回应答消息。在该模式下,MODBUS事务由2个消息组成:来自主节点的请求和来自从节点的应答。每个从节点必须具有唯一的地址(从1到247,十进制),只有满足该条件,主节点才能区别其他节点来对其寻址。
  • 在广播模式下,主节点可以向所有从节点发送请求。此模式下从节点不会返回应答消息给主节点。广播请求必须是写命令。所有设备必须接受广播模式的写功能。地址0被保留用于标识广播数据交换。

图 2单播模式

图 3广播模式

MODBUS寻址规则

MODBUS寻址空间由256个不同地址组成。

0

1~247

248~255

广播地址

从节点独立地址

保留

地址0被保留用作广播地址。所有从节点必须能识别广播地址。MODBUS主节点没有特定地址,而从节点必须有地址,且该地址在MODBUS串行总线上必须是唯一的。

MODBUS帧描述

MODBUS应用协议定义了一个独立于底层通信层的简单协议数据单元(PDU):

图 4 MODBUS PDU

在上述MODBUS PDU的基础上,MODBUS协议在特定总线或网络上的映射引入了一些附加域。发起MODBUS事务的客户端(主节点)构建出MODBUS PDU,然后添加附加域以构建适当的通信PDU(称为MODBUS串行链路PDU)。

图 5 MODBUS串行链路PDU

在MODBUS串行链路PDU中,地址域仅包含从站地址。如上一节所述,从节点有效地址的范围是0~247(十进制),每个从节点可分配到的独立地址范围是1~247。将从设备地址置于地址域中,主节点据此对从节点进行寻址。当从节点返回应答时,要将其地址放在应答消息的地址域中,从而让主节点得知哪个从节点在应答。

功能码向服务器(从节点)指示要执行的操作类型。功能代码后面可以跟一个包含请求或应答参数的数据域。

错误检查域是对消息内容执行“冗余检查”计算得出的结果。根据使用的传输模式(RTU或ASCII),使用不同的计算方法。

主站/从站状态图

MODBUS数据链路层包括两个单独的子层:主/从协议和传输模式(RTU与ASCII模式)

以下部分描述了主站和从站的状态图,它们与所使用的传输模式无关。RTU和ASCII传输模式在下一章中使用两个状态图说明,描述了帧的接收和发送。

主站状态图

图 6主节点状态图

对上面的状态图的一些解释 :

状态 “空闲” =无等待的请求。这是上电后的初始状态。只有在“空闲”状态才能发送请求。发送一个请求后,主节点离开“空闲”状态,而且不能同时发送第二个请求。

当单播请求发送到某个子节点,主节点将进入“等待应答”状态,同时启动一个临界超时定时。这个超时称为 “响应超时”,避免主节点永远处“等待应答”状态。 响应超时的时间依据于具体应用。

当收到一个应答时,主节点在处理数据之前检验应答。在某些情况下,检验的结果可能为错误。如收到非期望子节点的应答,或接收的帧出错。在收到非期望子节点的应答时,响应超时继续计时;当检测到帧出错时,可以执行一个重试。

响应超时且没有收到应答,则产生一个错误。主节点进入“空闲”状态, 并发出一个重试请求。重试的最大次数取决于主节点的设置。

当广播请求发送到串行总线上,没有任何子节点应答。然而主节点需要进行延迟以便使子节点在接收新的请求处理完当前请求。该延迟被称作 “转换延迟”。因此,主节点会在返回 “空闲”状态之前,进入到“等待转换延迟”状态。

在单播模式,响应超时必须设置到足够的长度以使任何子节点都能处理完请求并返回应答。而广播转换延迟必须有足够的时长以使任何子节点都能处理完当前请求而可以接收新的请求。因此,转换延迟应该比响应超时要短。典型的响应超时在9600 bps 时从1秒到几秒,而转换延迟从100 ms到200ms。

帧错误包括 : 1) 对每个字符的奇偶校验; 2) 对整个帧的冗余校验。详细解释参见 章节2.6 '差错检验方法' 。

从站状态图

图 7 从节点状态图

状态“空闲”=没有等待的请求。这是上电后的初始状态。

当收到一个请求时,子节点先检验消息包,再决定是否处理请求。不同的错误可以发生于: 请求的格式错误,非法动作hellip;hellip; 当检测到错误时,必须向主节点发送应答。

当要求的动作完成后,单播消息必须格式化一个应答并发往主节点。

如果子节点检测到接收帧出错, 则没有应答返回到主节点。

任何子节点均应该定义并管理 Modbus 诊断计数器以提供诊断信息。使用 Modbus 诊断功能码可以得到这些计数值。

主站/从站通信时序图

下图展示了主站/从站通信的3种典型情况的时序图。

图 8 主/从通信时序图

备注:

  • 请求、应答、广播的持续时间取决于通信特征(帧长度和吞吐量)
  • 等待和处理的持续时间取决于从节点应用所需的请求处理时间。

两种串行传输模式

协议中定义了两种不同的串行传输模式:RTU模式和ASCII模式。

传输模式定义了在线路上串行传输的消息域的位内容,确定了如何将信息打包到消息域中以及信息如何解码。

MODBUS串行线路上所有设备的传输模式(和串行端口参数)必须相同。

虽然某些特定应用需要ASCII模式,但只有每个设备具有相同的传输模式时,MODBUS设备之间的互通性才可以实现:所有设备必须实现RTU模式。ASCII传输模式是一个可增选项。

用户应将设备设置为所需的传输模式:RTU或ASCII。默认设置必须是RTU模式。

RTU传输模式

当设备使用RTU(远程终端单元)模式在MODBUS串行线路上进行通信时,消息中的每个8位的字节都包含两个4位的十六进制字符。这种模式的主要优点是,对于相同的波特率,其更大的字符密度可以比ASCII模式提供更大的数据吞吐量。每条消息必须以连续的字符流传输。

RTU模式下每个字节的格式(11位):

编码系统: 8-位二进制

每个字节中的位 1起始位

8数据位,低位先发送

1奇偶校验位

1停止位

偶校验是必要的,在此基础上可以扩展使用其他模式(奇校验,无奇偶校验)。为了确保与其他产品的最大兼容性,建议支持无奇偶校验模式。默认奇偶校验模式必须是偶校验。

备注:无奇偶校验需要2个停止位。

字符串行传输的顺序:

每个字符的传输顺序(从左到右):最低位(LSB)hellip;最高位(MSB)

图 9 RTU模式位序列

设备可配置校验方式(偶校验、奇校验、无奇偶校验)。 如果未实现奇偶校验,则会发送一个额外的停止位将字符帧填充为完整的11位异步字符:

图 10 RTU模式位序列(无奇偶校验)

帧校验域:循环冗余校验(CRC)

帧描述:

图 11 RTU消息帧

MODBUS RTU帧的最大长度为256字节。

MODBUS消息由发送设备进一步处理成具有已知开始和结束点的帧。这允许设备接收新帧时知道消息何时开始、何时完成。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。

在RTU模式下,消息帧之间至少要用3.5个字符时间的空闲间隔分开。 在下文中,此时间间隔称为t3.5

图 12 RTU消息帧发送示意图

必须以连续的字符流的形式来发送完整的消息帧。如果两个字符之间出现超过1.5个字符时间的空闲间隔,则消息帧不完整,接收方应丢弃。

图 13 字符间t1.5要求示意图

备注:

RTU接收驱动程序的实现可能意味着由于t1.5和t3.5定时器而导致的大量中断管理。高通信波特率会导致CPU负载过重。 因此,当波特率等于或低于19200 Bps时,必须严格遵守这两个定时器(的设置)。 对于大于19200 Bps的波特率,应使用2个定时器的固定值:建议字符间超时(t1.5)使用750mu;s,帧之间的超时使用1.750ms(t3.5)。

以下是RTU传输模式状态图的描述。主节点和从节点都用同一张图描述。

图 14 RTU传输模式状态图

上述状态图的一些说明:

  • 从“初始态”到“空闲”状态需要t3.5超时到期:这确保了帧间延迟。
  • “空闲”状态是指既没有发送也没有接收的正常状态。
  • 在RTU模式,当没有传输活动的持续时间超过3.5个字符时,通信链路即进入“空闲”状态。
  • 当链路处于空闲状态,在链路上检测到的任何传输字符被识别为帧起始,链路进入“激活”状态。相对地,当t3.5之后没有更多字符在链路上传输,被识别为帧结束。
  • 检测到帧结束后,完成CRC计算和校验。接下来解析地址域,决定哪个设备接收该帧。若没有设备接收,则丢弃该帧。为了减少接收处理时间,一接到地址域就开始解析而不是接受完整个帧后再解析。在这种情况下,仅当该帧(包括广播帧)寻址到相应从节点,CRC计算和校验才会在从设备被执行。

RCR校验

RTU模式包括错误检查域,该冗余码基于对消息内容执行循环冗余校验(CRC)。不管消息中的各个字符使用哪一种奇偶校验方法,都用CRC域检查整个消息的内容。

CRC域包含一个16位的值,即两个8位的字节。

CRC域作为RTU帧的最后一个域附加在消息后边。完成CRC计算后,先附加CRC域的低位字节,然后是高位字节,也就是说CRC高位字节是帧中要发送的最后一个字节。

CRC值由发送设备计算并附加到消息后边。接收设备在接收消息时重新计算CRC,并将计算值与接收的CRC域实际值进行比较,如果两个值不相等,则会产生错误。

CRC计算步骤:先将一个16位寄存器所有位预置为1;然后一个进程开始将消息的连续8位字节应用于寄存器的当前内容。每个字符中只有8位数据用于生成CRC。启动和停止位以及奇偶校验位都不适用于CRC。

在生成CRC期间,每个8位字符与预置寄存器进行异或运算。 然后运算结果向最低有效位(LSB)方向移位,最高有效位(MSB)置0。 提

资料编号:[3181]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。