Modbus协议规范V1.01.docVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Modbus协议规范V1.01

目录 Modbus协议介绍 1 主从机状态图及编程 2 存储的数据结构及地址分配 12 具体帧格式描述 13 具体功能代码描述 14 后续待完善问题 30 参考文献 30 附录 30 Modbus协议介绍 Modbus串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,不会发送数据。子节点之间也不会互相通信。如果从机之间要求通信,只能通过主机进行转送传输。本协议不支持该模式,即不容许从机间通信(以后可以进行改进)。主节点在同一时刻只会发起一个Modbus事务处理。 Modbus协议有两只两种串行传输模式:RTU 模式 和 ASCII 模式。RTU模式在相同的波特率下比ASCII 模式有更高的吞吐率。 本协议采用RTU模式。 主机向从机请求有两种请求模式:广播模式和单播模式。广播模式下从机不返回响应。单播模式下主机发送请求,被寻址从机在处理该请求后返回响应。 占用的硬件资源 从机:串行通信口1个、8位或16位定时器1个、RTC或秒定时器1个。 主机:串行通信口1个、8位或16位定时器2个、RTC或秒定时器1个。 帧的简单描述 Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。在特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。本协议无附加域。 图 1 通用Modbus协议帧 地址域包含要寻址的从机地址,也可为广播地址。 功能代码表示从机要执行何种操作,数据段为操作提供数据。 差错校验码可以提高通信的可靠性。一般为CRC校验。 通信模式: 查询—回应周期 Modbus没有握手机制,主机直接发送操作代码,从机立刻回应。 (1)查询 查询消息中的功能代码告之被选中的从机要执行何种功能。数据段包含了从机要执行功能的任何附加信息。例如功能代码03是要求从机读保持寄存器并返回它们的内容。数据段必须包含要告之从机的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从机提供了一种验证消息内容是否正确的方法。 (2)回应 如果从机产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从机收集的数据:像寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主机确认消息内容是否可用。 正常的通信如图2所示。 图2 无差错事务处理 如果从机收到异常信息,则返回从机地址、 差错码(设置该原始功能码的最高有效位为逻辑1)及异常码,具体见图3 图3 异常事务处理 在主机中应有定时控制,如果主机在1秒内没有收到相应从机的响应,则主机再重复发送两次相同请求代码,三次都没有相应响应则报告通信异常(三次收到数据但CRC校验错误也报告通信异常)。 对于主机而言,事先应约定好地址范围,将并地址放到地址池中。如果不知道从机地址范围,则地址池中地址的从1到247都有。对于报告通信异常的地址可以将其从地址池中剔除,以后不再寻址该从机。(需要考虑的一点为在主机在寻址某个从机时刚好该从机故障或断电,无法应答,之后从机恢复,但主机会无法跟该从机通信,因地址池中无该从机地址)。 主从机状态图及编程 主机状态图 图 4 主节点状态图 对上面的状态图的一些解释: 状态“空闲”=无等待的请求。这是电源上电后的初始状态。只有在“空闲”状态请求才能被发送。发送一个请求后,主节点离开“空闲”状态,没有回到“空闲”时不能发送第二个请求。 当单播请求发送到一个子节点,主节点将进入等待应答 状态,同时一个临界超时定时启动。这个超时称为“响应超时”。它避免主节点永远处于“等待应答”状态。如果出现响应超时,则再次发送上一次信息。连续三次出现响应超时,则报告通信异常。响应超时为1s。 当收到一个应答时,主节点在处理数据之前检验应答。在某些情况下,检验的结果可能为错误。如收到来自非期望的子节点的应答,或接收的帧错误。在收到来自非期望子节点的应答时,响应超时继续计时;当检测到帧错时,可以执行一个重试。 帧错误包括1) 对每个字符的奇偶校验;2) 对整个帧的CRC校验。 在单播方式,响应超时必须设置到足够的长度以使任何子节点都能处理完请求并返回响应。而广播转换延迟必须有足够的长度以使任何子节点都能只处理完请求而可以接收新的请求。因此,转换延迟应该比响应超时要短。 当广播请求发送到串行总线上,没有响应从子节点返回。主节点需要进行延迟以便使子节点在接收新的请求处理前完成当前请求。该延迟被称作“转换延迟”。因此,主节点在返回 “空闲”状态之前,应先到“等待转换延迟”状态。转换延迟为200ms。 两次发送请

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档