找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2364|回复: 0
打印 上一主题 下一主题
收起左侧

ModbusRTU模式和结束符

[复制链接]
跳转到指定楼层
楼主
ID:104126 发表于 2016-1-23 03:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                        
Modbus RTU模式的协议字段
起始位
设备地址
功能码
数据
CRC校验
结束符
至少3.5个字符
8bit
8bit
N*8bit
16bit
至少3.5个字符
Modbus协议RTU模式要求每一帧的起始和结束都以至少3.5个字符为间隔。
每个字符间隔是字符位数/波特率,以1位起始位,8位数据,1位停止位,无奇偶校验位的10位数据。
以波特率为9600b/s为例,字符间隔为1.04ms,也就是每一帧的开始和结束都伴随着至少3.5*1.04=3.64ms的时间间隔。
在字节流中以1.5个字符时间作为帧间间隔,以上面的通信速率,则1.5*1.04=1.56ms,即字符流中出现1.56ms的间隔时可能意味着一帧数据结束。
但必须同时满足其后的一段时间内(2个字符)不会再接收到字符,否则认为结束的该帧为错误帧。
由于收到的每个字节都有可能成为一帧数据的最后一个字节,因此,每接收一个字节,关闭上一个已经开启的3.5个字符时间和1.5个字符时间的定时器,处理完接收到得数据后再次启动3.5个字符时间和1.5个字符时间的定时器,以检测该帧数据的结束
这也就是上面所说的在帧间间隔后的一段时间内(2个字符)不能接收到数据,否则该帧为错误帧。1.5个字符时间和3.5个字符时间的定时起点是一致的,这是Modbus协议RTU模式的关键之处
当然这也增加了系统的中断负荷。在发生1.5个字符时间中断后,处理其接收到得数据(这里未考虑设备地址、超时、奇偶校验等错误),计算接收到的字符数-2个字节的CRC校验和,将计算结果与接收到得最后两个字节(当做发送的CRC校验)进行比较,从而得知这是否是完整的一帧数据。CRC校验正确,说明这是一帧完整的数据,CRC校验错误,说明这是一帧错误的数据帧,数据帧不完整。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表