200smart 自由口通讯轮询数据错误

偶尔接收到数据有时候混淆了,VD20数据写到VD24,或VD24到VD20.
请问下程序哪里出现问题!  图1初始化  2主程序   3中断

如果有自由口轮询程序麻烦发我借鉴下。

问题补充:
现在是可以通讯,只是接收数据不对

 

图片说明:

200smart  自由口通讯轮询数据错误    200smart  自由口通讯轮询数据错误    200smart  自由口通讯轮询数据错误

最佳答案

你的发送指令每隔0.5S执行一次,发送完成使能接收,接收限时0.1S结束。这样没问题。

你的接收完之后的数据处理,在主程序第6段,前面两个状态位看不到变量名,问题应该出在这里。

我认为你的接收处理应该写在接收完成中断里面,当接收完成之后,并且收到结束字符SMB86.5=1,这些条件满足之后,根据C2的值,将数据传送到相应的地址。这样能保证,本次接收的数据,是上次发送请求的数据。如果把它写在主程序中,由于主程序是循环进行的,发送和接收不是在一个周期内完成的。你需要处理时间上的延迟导致的数据不一致,这样不是不可以,而是增加程序的难度。

提问者对于答案的评价:
应该是延时不同步造成的,谢谢!

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日
下一篇 2020年10月30日

相关推荐

发表回复

登录后才能评论