modbus RTU如何编程,知道一帧数据结束.

[复制链接]
10013|6
 楼主| snakeemail 发表于 2010-4-24 17:01 | 显示全部楼层 |阅读模式
1.RTU原始的结构是这样.
起始位|地址|命令|数据|crc|结束位
我看了协议,那么要判断一桢数据结束,不是要等3.5个字符的时间???
那我要有个定时器,不停的判断这个数据帧是否结束了??而且要等待3.5个字符的时间,才能知道一个数据帧是否结束??

2.我能不能这样改一下,在命令后加一个"长度",用来判断一个数据帧,是否结束。

起始位|地址|命令|长度|数据|crc|结束位
nightmara 发表于 2010-4-24 17:25 | 显示全部楼层
先给定时器定时大概3.5个字符(更大点也可以),然后在串口的接收中断服务程序中,先将定时器的计数寄存器清零,然后重新开始定时器,如果接收的不是最后一个字节,那么在下个字节来的时候定时器就会又从零开始计数,如果后面再没有数据进来的话,定时器就会因为定时时间到而进入定时器中断,就表示数据接收结束了。

评分

参与人数 1威望 +1 收起 理由
dogandog + 1 一语中的啊

查看全部评分

wuaaa 发表于 2010-5-31 15:38 | 显示全部楼层
又学到点东西,谢谢楼上的
chunyang 发表于 2010-5-31 18:29 | 显示全部楼层
如果要做可以夸厂家的兼容性产品,规范必须严格遵守,如果自成体系不考虑与标准兼容,那么可以自定格式,Modbus主要的是思想,只有具体应用的行业形成了严格的行业规范。
pqsh 发表于 2010-6-4 10:28 | 显示全部楼层
结束位?CRC?难道不是结束?
dogandog 发表于 2011-3-30 16:23 | 显示全部楼层
先给定时器定时大概3.5个字符(更大点也可以),然后在串口的接收中断服务程序中,先将定时器的计数寄存器清零,然后重新开始定时器,如果接收的不是最后一个字节,那么在下个字节来的时候定时器就会又从零开始计数 ...
nightmara 发表于 2010-4-24 17:25


太感谢你的回答了,这个问题困扰我一天了
ccitlad 发表于 2016-3-5 14:44 | 显示全部楼层
modbus 主要的是思想 ,~!  不错 学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:提供500W线性 交流电源。0~300VAC,45~500Hz 提供10KW,0-330V直流电源,具体见http://blog.21ic.com/user1/3639/archives/2012/88528.html

547

主题

1909

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部