最近做了一套控制系统,使用LabVIEW8.6通过Simatic NET OPC访问西门子ET200系列的1510 CPU,进行DI、DO、AI、AO的读取和写入(全部通道总共100个左右)
Step7上做OPC变量组态时默认更新时间为100ms
LabVIEW配置OPC服务器时的采样时间设定为50ms
LabVIEW的程序里是用的DSC模块绑定的共享变量
LabVIEW程序里写了一个循环,每50ms刷新一次所有通道的读写
软件开始运行的约五个小时内,通讯一切正常,之后就会出现卡顿
例如软件上给一个DO通道由真赋值为假,正常时立即动作,卡顿时约滞后三秒才会动作
控制软件退出后,重新开启,依然卡顿
使用OPC Scout调试工具对OPC变量进行赋值,发现并不卡顿
必须重启工业电脑,问题才消失,但使用超过约5小时后卡顿又复现
使用LabVIEW的源程序去跑,发生卡顿前不会报错,但发现出现卡顿后,OPC共享变量的访问总是会跳出寻址错误,
Unspecified shared variable error.
This error or warning occurred while Writting the following Shared Variable:
\\My Computer\testlib1\Variable1
\\192.168.0.108\testlib1\Variable1
查了一下192.168.0.108这个IP,不是PLC的IP,是客户为了监控设备插了一块USB网卡连了外网的IP,IP段居然和PLC的一个网段,PLC的IP是192.168.0.2
于是果断禁用这块USB网卡,再次测试依然会几个小时之后卡顿
之前用LabVIEW做过三套类似的系统,都没问题,但之前的三套和这次有略微不同:
第一套用的S7-300的CPU,OPC Server用的是NI的并非Simatic的
第二套和第三套用的S7-1500的CPU,OPC Server用的Simatic的
另外前面三套工业电脑和PLC都在一个电控柜里,这一套卡顿的工业电脑离电控柜比较远,用的是普通双绞网线
这四套系统都是PVD镀膜系统,里面有变频电机、脉冲电源、真空泵、真空仪表等等很多可能产生干扰的部件,所以怀疑是干扰了网线通讯造成的?
但为何会在正常使用四个多小时后才出现通讯延时卡顿的现象呢?难道说干扰会形成一定的累积,在一定的时间后才会影响通讯?
也怀疑过“50ms刷新一次所有通道的读写”和PLC的OPC变量刷新时间100ms不同步,但前面三套系统也是50ms刷新一次,运行一个月都不会有卡顿。。。
这个问题困扰我两个多月了,想了很多办法都没解决,希望高手给予指点,拜谢!