当前位置:   article > 正文

OPC DA数据采集过程中所有数据为空问题分析_opc连接成功但数据为0

opc连接成功但数据为0

项目中需要采集西门子840D设备的数据,通过OPC方式采集。最近项目实施下来,发现现场的机器虽然是一样的,但是有的设备长时间采集没有问题,有的设备长时间运行后,会发生OPC server崩溃,导致通讯中断等各种各样的问题。通讯中断其实还好,更古怪的问题是,通讯正常(能够读到OPC Server的状态值,并且处于Run的状态),但是所有的数据均为空。

排查这个问题,首先需要对OPC客户端的代码进行梳理。看了代码,发现OPC通讯的基本流程是:

1. 建立连接

2. 创建通讯的group

3. 将要读的数据加入到group中,成功后,就会创建通讯的点,item。一个group中可以存放多个参数点。大多数设备对group中参数点的个数没有限制,只有极个别的设备会有数量的限制。即使限制,这个数字也是很大的,所以如果对采集频率有要求的,那么尽量将一个频率的采集点,放到一个group中。

4. 通过group的readSync来读取数据。仔细观察这个readSync接口,可以一次只读一个参数,也可以一次将多个数据都读回来。因此,如果对采集的性能有要求,那么应该将同一频率的采集点,放到一个group中,通过readSync,将所有的参数点,一次性读回来。读回来后,遍历每个参数点,根据状态值,判断成功与否,来决定是否提取数据即可。

OPC读取数据,常用的就是上面的流程。那么长时间运行后,连接正常,但是读到的数据变为空,就容易分析了。有以下几种可能性:

1. group本身出问题了。这种情况下,删除这个group下item,删除group,重新创建group和参数点。

2. group本身没有问题,但是通过group去读数据,出问题了。可能存在的错误代码,比如

0x800706BA(OPC server不可用)。这种情况下,怎么处理,挺个性化的,最坏的无非就是删除重连。建议还是观察,有些设备可能能恢复,有的无法恢复,就得重连。

3. 连接是没有问题的。但是这个连接是上一次连接出问题后,重新建立的连接。建立连接后,会创建group和添加item。但是添加item失败了。所以导致后面读数据,肯定为空。这个处理也是个性化的。需要观察通讯的设备的特性,进行处理。

我目前碰到的主要是2和3的问题,经过处理,现在发现,数据为空已经基本上不出现了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/714572
推荐阅读
相关标签
  

闽ICP备14008679号