S7-200自由口通讯怪异现象

我做的是自由口通讯,用串口调试助手调试。程序流程是这样的:发送一个读的指令,然后就开始接收指令,接收了以后再发送,一直循环下来。发送数据保存在vb500开始的内存中,接收缓冲区最大长度为5个字节,检测起始字符00。怪异的现象为:一旦接收的数据不是5个字节(比如4个),那么发送的命令就错了,变成乱七八糟的数据,真的好奇怪,忘高手指点。
 下面是程序代码
 Network 1 // 
 LD     SM0.1
 LPS
 MOVB   16#09, SMB30
 MOVB   16#C0, SMB87
 MOVB   5, VB500
 AENO
 MOVD   16#11223344, VD501
 AENO
 MOVB   16#1, VB505
 LRD
 MOVB   5, SMB94
 LPP
 MOVB   16#0, SMB88
 Network 2 
 LD     SM0.1
 S      S0.1, 1
 Network 3 
 LSCR   S0.1
 Network 4 
 LD     SM0.0
 XMT    VB500, 0
 AENO
 SCRT   S0.2
 Network 5 
 SCRE
 Network 6 
 LSCR   S0.2
 Network 7 
 LD     SM0.0
 RCV    VB32, 0
 AENO
 SCRT   S0.1
 Network 8 
 SCRE

问题补充:
解决的方法是做个超时检测,超时了就进行下一条指令。但是,这个现象还是很怪。因为,接受的数据怎么会影响到发送的数据呢?
 中断做起来好像也不简单因为我做的系统是由16个传感器,每个传感器的读取地址都不一样,用轮询的方法以此读取各个传感器的读数,我只能想到用这个方法了,中断不大会用

最佳答案

数据帧的结束是采用的什么方式,有可能是接受发送同时执行了,将接受完了以后做个延时再发送试试,如果正常就可能是上面的原因

提问者对于答案的评价:
谢谢

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:45
下一篇 2021年7月4日 下午11:45

相关推荐

发表回复

登录后才能评论