求各位大佬帮帮忙!!!

我用自由口通信,pc上位机发送a,b给西门子200plc,plc接收后发送1,2给上位机,一直循环,我在plc程序里设置当smb=0超过1.2秒后plc的Q0.7接通,现在问题是我自己编写一个最简单的i0.2控制Q0.3程序,当我上位机超过1.2秒没有发送数据时Q0.7会接通,但我用另一个比较复杂的程序时,上位机超过1.2秒没有发送数据时Q0.7就不会接通了,这是什么原因???上位机我用的vc++调用的api函数实现数据的发送接收。

问题补充:
上位机和plc都实现了接收和发送功能,问题是简单的程序时可以实现超时1.2秒没接收到上位机发送的数据smb86接通Q0.7;换个复杂的程序就不行了,主程序梯形图如下,SBR0是自由口程序,SBR1是I0.2控制Q0.3的梯形图,其他不变我只是把SBR1里的程序换成了一个有二十几个网络的梯形图,就不行了,麻烦大佬们帮我看看问题出在哪

图片说明:

求各位大佬帮帮忙!!!   

最佳答案

首先你确认这个所谓的“心跳”信号(1.2S)是否已经发送给PLC?反过来理解这个信号PLC接收到?如果确认已经发送了信号(可以用计数器指令捕捉),如果没有这个信号查找信号传递过程环节,如,这个信号丢失、错误等引起。
补充问题回复:
你适当放大这个心跳检测时间试试,因为程序一旦增加内容,这个程序的扫描机制可能会丢失这个信号。

提问者对于答案的评价:
我又检查了一遍发现是心跳信号的定时器和我SBR1程序里的定时器冲突了,改了就没问题了,谢谢您了。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午3:52
下一篇 2021年7月5日 下午3:53

相关推荐

发表回复

登录后才能评论