目前做一个项目,用的是315-2PN/DP,与WINCC6.2通讯。发现一个问题,PLC中通过一个光电进行加1计数,在WINCC中,通过该光电变化时触发VB脚本,当检测该光电信号为1时,也进行加1的计数。但两个计数的值不一样,WINCC总比PLC计数少。(WINCC与PLC通讯经过了两个交换机)
初步怀疑是通讯时丢失了该触发信号,怎么解决呢?
需要在硬件组态中,设定发送时间吗?(默认的已经是1ms,已经够快的了)
WINCC中光电触发VB脚本真实目的是将相关数据存入数据库,如果VB脚本不能触发的话,数据存入数据库也无法进行。
打算下一步做两个测试:
1、WINCC与PLC通讯不经过交换机,打算直接在现场链接试试。
2、将脚本程序只做加1的计算。
请高人指教一下。
如果有通过ODBC或ADO直接建立与数据库链接的程序,能不能共享参考一下,学习中。
问题补充:
为了防止通讯量过大使得通讯丢失的问题,我最终将所有与WINCC通讯的变量均赋值到一串连续的M寄存器中,但问题依然存在。总共280多个外部变量。
最佳答案
WINCC与PLC之间的通讯是按一定的周期进行的,如果光电开关的接通时间小于WINCC的通讯周期,则就可能出现WINCC计数丢失的情况。这种情况,可以在PLC中将一个标志信号置位来将光电开关的触发状态锁定,在WINCC中执行完相关操作后再将标志信号复位。这样只要光电开关两次接通的时间不小于WINCC的通讯周期,就可以保证需要的功能正常实现。
另外,WINCC中扫描周期设置为1MS,并不能保证实际的读取周期为1MS,实际周期可能大大的超过1MS。
提问者对于答案的评价:
问题解决了。根本原因是脚本的触发变量,其触发方式是变量有变化时才执行脚本,实际上在WINCC通讯时并不能完全检测到该变量的变化,虽然其采样周期也是250MS,所以有时候会不执行脚本。现在将变量的触发方式改为固定250MS,在监视的时间内两个数据并没有产生偏差。
寒音同志提供了一个很好的思路。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc306730.html