modbus RTU如何编程,知道一帧数据结束.
1.RTU原始的结构是这样.起始位|地址|命令|数据|crc|结束位
我看了协议,那么要判断一桢数据结束,不是要等3.5个字符的时间???
那我要有个定时器,不停的判断这个数据帧是否结束了??而且要等待3.5个字符的时间,才能知道一个数据帧是否结束??
2.我能不能这样改一下,在命令后加一个"长度",用来判断一个数据帧,是否结束。
起始位|地址|命令|长度|数据|crc|结束位 先给定时器定时大概3.5个字符(更大点也可以),然后在串口的接收中断服务程序中,先将定时器的计数寄存器清零,然后重新开始定时器,如果接收的不是最后一个字节,那么在下个字节来的时候定时器就会又从零开始计数,如果后面再没有数据进来的话,定时器就会因为定时时间到而进入定时器中断,就表示数据接收结束了。 又学到点东西,谢谢楼上的 如果要做可以夸厂家的兼容性产品,规范必须严格遵守,如果自成体系不考虑与标准兼容,那么可以自定格式,Modbus主要的是思想,只有具体应用的行业形成了严格的行业规范。 结束位?CRC?难道不是结束? 先给定时器定时大概3.5个字符(更大点也可以),然后在串口的接收中断服务程序中,先将定时器的计数寄存器清零,然后重新开始定时器,如果接收的不是最后一个字节,那么在下个字节来的时候定时器就会又从零开始计数 ...
nightmara 发表于 2010-4-24 17:25 https://bbs.21ic.com/images/common/back.gif
太感谢你的回答了,这个问题困扰我一天了 modbus 主要的是思想 ,~!不错 学习了
页:
[1]