偶尔接收到数据有时候混淆了,VD20数据写到VD24,或VD24到VD20.
请问下程序哪里出现问题! 图1初始化 2主程序 3中断
如果有自由口轮询程序麻烦发我借鉴下。
问题补充:
现在是可以通讯,只是接收数据不对
图片说明:
最佳答案
你的发送指令每隔0.5S执行一次,发送完成使能接收,接收限时0.1S结束。这样没问题。
你的接收完之后的数据处理,在主程序第6段,前面两个状态位看不到变量名,问题应该出在这里。
我认为你的接收处理应该写在接收完成中断里面,当接收完成之后,并且收到结束字符SMB86.5=1,这些条件满足之后,根据C2的值,将数据传送到相应的地址。这样能保证,本次接收的数据,是上次发送请求的数据。如果把它写在主程序中,由于主程序是循环进行的,发送和接收不是在一个周期内完成的。你需要处理时间上的延迟导致的数据不一致,这样不是不可以,而是增加程序的难度。
提问者对于答案的评价:
应该是延时不同步造成的,谢谢!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279253.html