modbus协议及modbus_RTU的C51程序.pdf

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
modbus协议及modbus_RTU的C51程序

查看完整版本: [-- modbus 协议及modbus RTU 的C51 程序 --] 电子工程师之家 - 51 单片机论坛 - modbus 协议及 登录 - 注册 - 回复主 modbus RTU 的C51 程序 [打印本页] 题 - 发表主题 一线工人 2007-11-15 21:44 modbus 协议及modbus RTU 的C51 程序 完整的程序请下载 [attachment=1488] Modbus 通讯协议 Modbus 协议最初由Modicon 公司开发出来,在1979 年末该公司成为施耐德自动化 (Schneider Automation)部门的一部分,现在Modbus 已经是工业领域全球最流行的协 议。此协议支持传统的RS-232、RS-422、RS-485 和以太网设备。许多工业设备,包括 PLC,DCS,智能仪表等都在使用Modbus 协议作为他们之间的通讯标准。有了它,不同厂 商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus 协议决定了每个控制器须要知道它们的设备地址,识别按地址 发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus 协议 发送给询问方。 Modbus 协议包括ASCII、RTU、TCP 等,并没有规定物理层。此协议定义了控制器能够 认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的 Modicon 控制器 使用RS232C 实现串行的Modbus。Modbus 的ASCII、RTU 协议规定了消息、数据的结 构、命令和就答的方式,数据通讯采用Maser/Slave 方式,Master 端发出数据请求消息, Slave 端接收到正确消息后就可以发送数据到Master 端以响应请求; Master 端也可以直 接发消息修改Slave 端的数据,实现双向读写。 Modbus 协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII 模式采用LRC 校 验,RTU 模式采用 16 位CRC 校验,但TCP 模式没有额外规定校验,因为TCP 协议是一 个面向连接的可靠协议。另外,Modbus 采用主从方式定时收发数据,在实际使用中如果某 Slave 站点断开后(如故障或关机), Master 端可以诊断出来,而当故障修复后,网络又 可自动接通。因此,Modbus 协议的可靠性较好。 下面我来简单的给大家介绍一下,对于Modbus 的ASCII、RTU 和TCP 协议来说,其中 TCP 和RTU 协议非常类似,我们只要把RTU 协议的两个字节的校验码去掉,然后在RTU 协议的开始加上5 个0 和一个6 并通过TCP/IP 网络协议发送出去即可。所以在这里我仅介 绍一下Modbus 的ASCII 和 RTU 协议。 下表是ASCII 协议和RTU 协议进行的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII : (冒号) CR,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC 高 不直观,稍复杂 通过比较可以看到,ASCII 协议和RTU 协议相比拥有开始和结束标记,因此在进行程序处 理时能更加方便,而且由于传输的都是可见的ASCII 字符,所以进行调试时就更加的直观, 另外它的LRC 校验也比较容易。但是因为它传输的都是可见的ASCII 字符,RTU 传输的数 据每一个字节ASCII 都要用两个字节来传输,比如RTU 传输一个十六进制数0xF9,ASCII 就需要传输’F’’9’的ASCII 码0x39 和0x46 两个字节,这样它的传输的效率就比较低。所 以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII 协议,如果所需传输的数据 量比较大,最好能使用RTU 协议。 下面对两种协议的校验进行一下介绍。 1、LRC 校验 LRC 域是一个包含一个8 位二进制值的字节。LRC 值由传输设备来计算并放到消息帧中, 接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC 域中的值比较,如果 两值不等,说明有错误。 LRC 校验比较简单,它在ASCII 协议中使用,检测了消息域中除开始的冒号及结束的回车 换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加 1 即可。下面是它

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档