小鸟示功图查看器的设计与开发
2017-09-07杜卫锋袁高翔
杜卫锋++袁高翔
[摘 要]某作业区自开展SCADA系统的建设以来,在功图巡检、分析和应用上一直处于低效率运行的状态。为了提高效率,并解决一些实际中出现的问题,本文用Qt Creator设计开发了“小鸟示功图查看器”,旨在解决油井功图从采集到上传分析,以及运维管理中的一些盲点和不足。
[关键词]小鸟示功图查看器;软件设计;软件开发
doi:10.3969/j.issn.1673 - 0194.2017.16.080
[中图分类号]TP311 [文献标识码]A [文章编号]1673-0194(2017)16-0-02
1 研究背景
某作业区于2015年6月开始作业区级SCADA建设。经过1年多的探索和实践,并在前期开发的“SCADA辅助工具”基础上,开始进入一个平稳运行的状态,但也随之暴露了一些SCADA系统的缺陷和不足。其中,最大的问题是在功图采集和分析上,现有力控SCADA系统起到的作用明显不能满足生产运行的需要。目前的功图数据流是先到功图服务器,再通过服务器安装的软件分析并上传到厂部的功图平台,最后在SCADA界面上用浏览器控件访问功图平台查看功图。这种绕了一圈的做法增加了数据链的长度,导致初步判断功图的操作只能在现场进行。
2 小鸟示功图查看器的需求
2.1 功能需求
小鸟示功图查看器拟需实现的功能较多,核心功能需求如表1所示。
2.2 性能需求
因程序的核心要连接数据库,所以小鸟示功图查看器对数据库性能的要求较高。一方面是作业区功图服务器的平稳运行;另一方面是程序连接数据库时,对延时、超时时间要尽量缩短,并及时进行内存回收,保证连接顺利。程序对实时性要求不高,但在进行一些时间较长的操作时,为避免程序停止响应,相关人员应设计多线程和应急中断控制机制。
3 小鸟示功图查看器的概要设计
3.1 结构规划
小鸟示功图查看器的结构比较简单,核心部分是功图数据的读取和显示,只要能显示出功图,就可以基于功图数据做出各种各样的功能扩展。其层次图如图1所示。
3.2 功图文件设计
小鸟示功图查看器需要对数据库内存储的功图格式进行重新解析,从而设计出三种不同的功图存储文件(见表2)。
3.3 转储表设计
小鸟示功图查看器需要连接功图数据库,将井、井场、站的数据读取出来,同时也要连接地质室的数据库,方便调用和显示一些重要数据,但又不能对原有数据库产生太大影响,故需要单独设计一个数据表进行存储。
4 小鸟示功图查看器的详细设计和实现
小鸟示功图查看器使用Qt Creator进行开发。Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正的组件编程。
4.1 界面设计
仿照老力控工程的功图查看界面,左边为井号部分,中间为上下两块分别显示不同功图,以便对比,右边为同井同天的功图列表。和老力控不一样的是,小鸟示功图查看器界面上下两部分功能并不相同,其上方是采集功图,下方是分析功图。当一口新井在SCADA平台添加完成后,其传到功图服务器的数据不久就会被显示在上方的列表中,相关人员可以双击查看具体详情。而分析完成后的功图(上下两张)就会显示在下方区域,所以下方的井列表就是一个站—井场—井的树形结构,还会标志出未采集和未分析成功的数量,在展开列表中也有颜色区分。
4.2 数据结构设计
为了系统地对程序内部变量进行管理,本文设计了一个名为数据块(QDataBlock)的结构体,以完成单位功图节点的数据存储和结构控制。
4.3 图表控件设计
为了能更科学、美观地绘制出功图曲线,本文使用了一个名为QCustomPlot的第三方开源库,QCustomPlot的功能非常强大,可以绘制各种各样的图表,但这里只需要它的QCPCurve(闭合曲线图)部分。上下两块的数据存储在QDataBlock data中,通过调用data,往数据块里读写各种不同的数据。
4.4 扩展功能设计
功图绘制成功后,就可以在此基础上开发各种扩展功能了。最常见的有:功图的叠加、对比、预览、检视等。在下方区域内,因为读取的是分析完成后的功图,所以需要在单图表区域内画两张功图曲线,这样其观看效果和油井工况平台就相差无几了。
4.5 文件系统设计
小鸟示功图查看器可以对功图文件进行多种格式的保存。之所以设计多种格式,是为了和其他软件共通,扩展其适用性。目前已实现了三种:二进制(bin)、纯文本(txt)和带格式的文本(exc)。其中,二进制是数据库中对应字段的数据,直接可以保存为文件。纯文本是用tab和换行符存储的功图散点值,这两种形式简单,但存储的数据有遗漏和缺失。exc格式也不是笔者的原创,在之前,力控的附带文档中有一个功图解析的小程序,相关人员可以把数据库二进制文件解析出来,而解析出的格式就是exc文件的大致雏形。后来笔者在这个格式的基础上稍加修改,在第一行补充了井号和采集时间,加上一共200条的散点对,构成了一个较为完整的数据存储模型。
4.6 多系统联动设计
在开发过程中,笔者注意到平日用的数据服务器和本平台可以实现共通,这给每一张功图的进一步分析提供了可能性。经过不断测试,笔者加深了对地质服务器数据库结构的了解,从小鸟示功图程序中單独写出一段代码,用来从这个数据库中取出所需要的数据,和数字化采集数据进行互相印证、对比,扩展软件的功能。
5 小鸟示功图查看器的应用效果
5.1 推广情况
小鸟示功图查看器是“小鸟系列软件”的第二作,除某作业区外,已在其他兄弟单位推广使用,受到了好评。小鸟示功图查看器能弥补SCADA上功图模块缺失的功能,以及对功图平台响应慢、功图查看效率低下等现状提供另一种解决方案。目前为止,基本功能已开发完成,其他功能在陆续完善中,已经能为指导生产起到明显的积极作用。在每天清晨派工时,小鸟示功图查看器可快速对全区功图采集和分析情况进行扫描,筛选出需要维护的井,节约每日巡检时间,做到有的放矢,精细掌控。当出现功图分析率下降时,能快速筛选出肇事功图,以及分析不成功的基本原因,并同时连接地质库查询修井和周期采油情况,准确判断出是基础数据的问题还是现场采集的问题,减少了不必要的现场核查,对油井生产情况更加了如指掌。
5.2 缺点和不足
小鸟示功图查看器在运行效率上还有提升的空间。首先是启动速度较慢,虽然启动成功后会恢复正常速度,但依然对实际使用造成了一些影响。其次是没有为用户配置保存功能,用户所做的一些个性化设置得不到保存,重启就会失效。此外,部分功能和界面的设计有待优化,还需多征求用户的意见和建议,避免闭门造车,出现与需求脱节的情况。
5.3 后期计划
笔者计划将小鸟示功图查看器改造并嵌入到SCADA系统中,作为一个插件,完善SCADA的功能。在之后的数字油田建设中,也会充分利用小鸟示功图查看器的功能和理念,若在开发中有一些额外的计划,也会在后期逐步实现。
主要参考文献
[1][英]Ian Sommerville.软件工程[M].第8版.北京:机械工业出版社,2007.
[2]陈锐.数据结构[M].北京:机械工业出版社,2010.
[3][加]Jasmin Blanchette,[英]Mark Summerfield. C++ GUI Qt 4编程[M].北京:电子工业出版社,2013.endprint