第3章-通用串行通信接口技术.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.4.3 Modbus消息帧 ASCII帧 ASCII消息帧以“:”为起始位,以换行符为结束符。其他域的传输字符是十六进制字符。 网络上的设备不停地侦断“:”字符,当有一个“:”接收到时,每个设备都解码下个域(地址域),来判断是否是发给自己的消息。 注:ASCII消息帧中字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为是传输错误。 一个典型的ASCII模式消息帧如下所示: RTU帧 两个连续发送的数据帧之间至少3.5个字符时间的停顿间隔,传输的第一个域是设备地址。 网络上的设备不停地侦断网络总线,包括停顿间隔时间。当第一个域接收到时,每个设备都解码该地址域,来判断是否是发给自己的消息。在最后一个字符传输之后,一个至少3.5个字符时间的停顿标注了消息的结束。 注意:整个消息帧必须作为一个连续的流进行传输,当字符间间隔超过1.5个字符传输时间,接受设备会假设下一个字节是一个新消息的地址域。 地址域:ASCII(2字符),RTU(1字节) 地址0用作广播地址,单个从设备的地址范围是1---247 主设备将从设备的地址放入消息中的地址域中来选通从设备。从设备发送响应消息时,把自己的地址放入响应的地址域中,告诉主设备是哪一台从设备响应。 功能域: ASCII(2字符),RTU(1字节) 主设备用功能码告知从设备需要执行的动作 从设备用功能码指示响应是否正确,正常响应,从设备响应对应的功能码,异常响应的功能码最高位置1。另外,从设备将一特殊代码放入响应消息,以告知主设备发生了什么错误。 数据域 数据域是由两位十六进制数构成,范围为00-FF。可以由两个ASCII字符组成,或由一个RTU字节组成。 功能代码03H(读一组寄存器),数据域指定起始寄存器以及数量 功能代码10H(写一组寄存器),数据域指明起始寄存器以及数量 错误检验域 ASCII:LRC RTU:CRC 字符的连续传输 使用ASCII字符帧时:图3-16,7位数据,先低位后高位 使用RTU字符帧时:图3-17,8位数据,先低位后高位 Modbus RTU/ASCII-功能码 01 read coil status- 读线圈状态 02 read input status-读输入寄存器状态 03 read holding registers-读保持型寄存器 04 read input registers-读输入寄存器 05 force single coil-强制单个线圈 06 preset single register-预置单个寄存器 15 force multiple coil-强制多路线圈 16 preset multiple registers-预置多寄存器 23 read/write 4X registers-读/写4X寄存器 标准Modbus通信错误检测方法包括:字符检测奇偶校验和帧检测。字符检测是奇偶校验,帧检测包括纵向冗余校验(LRC)和循环冗余校验(CRC)。 1.奇偶校验 可配置成奇校验、偶校验或者无校验,当设置成无校验时,填充停止位代替校验位。 3.4.4 错误检测方法 2.LRC检测 LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。不包括开始的冒号符及回车换行符。 LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加。 3.CRC检测 ?CRC冗余循环校验码含2个字节, 即 16 位二进制数。CRC 码由发送设备计算, 放置于所发送信息帧的尾部。接收信息设备再重新计算所接收信息 (除 CRC 之外的部分)的 CRC, 比较计算得到的 CRC 是否与接收到CRC相符, 如果两者不相符, 则认为数据出错。 CRC是先调入一值是全“1”的16位寄存器,然后将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。 CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值(0xA001,即1010 0000 0000 0001)异或一下,如果LSB为0,则不进行。 整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。CRC域附加在消息的最后,添加时先是低字节然后是高字节,故CRC的高位字节是发送消息的最后一个字节。 硬件计算过程

文档评论(0)

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

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

1亿VIP精品文档

相关文档