snakeemail 发表于 2010-4-24 17:01

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

1.RTU原始的结构是这样.
起始位|地址|命令|数据|crc|结束位
我看了协议,那么要判断一桢数据结束,不是要等3.5个字符的时间???
那我要有个定时器,不停的判断这个数据帧是否结束了??而且要等待3.5个字符的时间,才能知道一个数据帧是否结束??

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

起始位|地址|命令|长度|数据|crc|结束位

nightmara 发表于 2010-4-24 17:25

先给定时器定时大概3.5个字符(更大点也可以),然后在串口的接收中断服务程序中,先将定时器的计数寄存器清零,然后重新开始定时器,如果接收的不是最后一个字节,那么在下个字节来的时候定时器就会又从零开始计数,如果后面再没有数据进来的话,定时器就会因为定时时间到而进入定时器中断,就表示数据接收结束了。

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 https://bbs.21ic.com/images/common/back.gif

太感谢你的回答了,这个问题困扰我一天了

ccitlad 发表于 2016-3-5 14:44

modbus 主要的是思想 ,~!不错 学习了
页: [1]
查看完整版本: modbus RTU如何编程,知道一帧数据结束.