基于逻辑化算法的油田设备数据分析判断法
2020-02-27许国剑赵春雪丁煜晖
许国剑,赵春雪,丁煜晖
(新疆油田数据公司,新疆 克拉玛依 834000)
0 引 言
根据新疆油田的运维管理体系,油田企业配套研发一套物联网运维管理系统,对目前现场运维的分散管理模式进行统一规划,能够及时发现隐患,缩短故障持续时间,保障新疆油田油气生产物联网系统安全平稳运行,实现全面提升运维管理水平的目标。该系统通过物联网系统(A11)接口,接入采油二厂的井站实时数据,通过编写数据采集程序,接入凤城作业区和陆梁作业区井站生产实时数据,并根据预设的逻辑异常校验算法,对数据进行分析,筛选监控平台中异常的点位信息,将异常点位数据延伸到设备故障类别,自动生成故障清单。
1 系统路线
系统定时去采集数据,然后根据数据质量分析算法进行分析,筛选出异常点位,经过进一步确认分析之后,形成异常点设备的故障清单,故障清单经过确认后,可以进入运维流程进行派工、处置以及完成验证。其流程如图1所示。
图1 系统数据分析流程
2 各种算法介绍
系统实时采集到的数据,根据数据质量分析算法进行异常筛选,采用的是“基础逻辑算法+多维逻辑算法”。
2.1 基础逻辑算法
判定设备数据是否离线,当服务器接收到的最后一条数据距离现在超过20分钟,系统则认为离线;判断是否为固定值,如果在某个时间段内,数值一直不变化,所持续时间为20分钟,则认为是固定值。数值一直不变,即使中间有可能有跳动,系统自动对偶尔的跳动进行过滤。判断异常值设备的数值是否正常,如果在某一个范围内,属于正常,比如山里的温度假设为-20 ℃~45 ℃,如果接收到的数值在这个区间外,而且持续时间超过20分钟,就认为这个数值异常,需要进行维修。
2.2 多维逻辑判断算法
在多维判断逻辑算法中,通过设置前置条件,在满足前置条件的基础上依据判断条件筛选异常数据。前置条件的关系包含两种:第一种是且关系,每组关系必须满足全部成立的条件下,进行下一步判断或者分析是否异常;第二种是或关系,每组关系中,有一种满足,即可进入下一步判断或者分析异常。
判断范围类型的时候,必须输入值1和值2,如果范围类型为内,则表示数据在值1和值2之间(数值大于值1且小于值2),如果为外,则表示在值1和值2之外(数值小于值1或者数值大于值2)。如果功率突然上升,且持续,电流下降后值仍在低范围内,那就表明设备有问题。前置条件可以设置多个,如果是多个前置条件,关系为且的话,那么设置的这些必须满足条件才能判断结果中的条件。
3 算法过程描述
多维逻辑算法以井为单位,结合油气井的开关状态,对各设备的监控数据进行关联性综合数据分析,打破了传统的单一判别算法,能够发现更多的潜在故障以及减少故障误判,同时系统增加了跳变识别参数,对于偶尔性的跳变系统自动进行过滤,不列入数据的逻辑判断范围内。
系统采用线程池来管理监测数据的线程。线程池不仅能够保证服务内核的利用率,还能防止过分调度从而影响系统的运行速度以及对数据库的读取性能,大量发送请求,在没有线程池情况下将产生大量线程,虽然大部分操作系统的线程数目在短时间内产生大量线程可能使内存到达极限,并出现“Out of Memory”的错误。
系统对所有受监控的井进行循环读取,对于每一口井,首先判断是否关井,如果关井则跳过,继续循环下一个井(因为现场关井时,电源都是切断的,所以关井的状态下判断结果是无效的),直到判断这口井为开井状态时则创建任务,交给线程池,然后系统继续循环,直到结束,最终将可以判断的油气井全部交付给线程池。
线程池接收到任务并进行调度,分配线程资源,比如同时分配5个同时进行执行,其他的进行排队,继续分配空余线程资源,直至任务完成。逻辑判断线程接收到任务之后,从系统缓存中获取对应井站的多维逻辑判断参数,如果获取的数据为空则跳过,不进行数据异常检测。整体算法为两大部分。第一,以多维逻辑参数的多条件以及系统设置的异常持续时间为依据,最终筛选出结果,为第二部分判断提供数据支撑。得到逻辑参数配置信息后,系统进行for循环,第一个条件独立判断,最终返回符合条件的结果集。循环时,都是依靠上一次的结果集以及结合条件关系进行判断,如果条件关系为“或”取并集,“且”则相反取交集。最终第一部分返回一组时间阶段集合,传递到第二步分依次进行判断。第二,根据上面返回的时间段集合进行判断,此部分的关系只有一种关系,那就是“或”,在第一部分返回的基础上,第二部分再进行条件判断,只要符合设置的逻辑关系,系统就认为此数据为故障数据(离线、异常或固定值),将关联的设备以及故障信息保存到故障清单表中。
异常逻辑判断算法如下:根据设备参数的采集点信息获取近期24小时的历史数据,目前历史数据的间隔为5分钟;获取到实时数据后进行循环,每次拿到结果和设置的参数进行对比,比如压力为5 MPa时,超过正常值0~3 MPa,标志位bean进行记录,列入异常,标志位bean的属性exceptionCount加1,正常则属性trueCount加1,如果exceptionCount大于3,则初始化trueCount为0。如果trueCount大于3,则exceptionCount初始化为0。每次的循环结束,都将判断标志位bean的数值是否符合预期的条件(达到预期的持续时间),如果thisDate-lastDate大于或者等于系统设置的持续时间,则认为异常。