OPC DA数据采集过程中所有数据为空问题分析

项目中需要采集西门子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的问题,经过处理,现在发现,数据为空已经基本上不出现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值