APP下载

一种基于Android的远程井涌井漏监测系统设计

2021-06-29中国电子科技集团公司第二十二研究所何成会马继兵

电子世界 2021年10期
关键词:井场客户端远程

中国电子科技集团公司第二十二研究所 李 盛 孙 辉 何成会 马继兵

井涌井漏在钻井中是常见而又复杂的,实时监控采取有效的井控措施意义重大,可以避免重大财产损失和不必要的人员伤亡。基于Android系统的井涌井漏监测系统,数据结构参照石油行业标准WITSML标准接口设计,基于TCP/IP网络传输协议,采用C/S体系架构,将基地计算机设计为服务器,用户手机设计为Android客户端,通过采集井场多种相关数据,专家通过手机客户端进行远程监测访问现场井涌井漏实时监控数据和曲线,指导现场作业,提高了解决问题的效率和质量。

录井现场作业事故具有突发性、不可预测性、非线性、不确定性、混沌性等特征,是一种复杂作业过程,对井涌井漏实时监控目前基本还停留在现场,一旦事故等紧急情况发生,一般流程是现场工程师口头汇报并发送相关数据,实时性差、效率低,并且存在对事实描述不清的状况,而处理方式一般都是专家赶往现场决策,但也只限于单口井的数据,非现场处理方式主要以人工经验为主,缺少现场实时数据支持。随着4G移动网络的普及和5g时代的到来,网络速度的瓶颈已经不复存在,同时移动手机的广泛应用也为远程应用服务提供了便利,而Android做为手机和平板等移动设备主流操作系统也备受关注,一种基于Android系统的井涌井漏监测系统的开发有着极其现实的迫切需求。本系统基于现场录井通用传感器采集系统实时数据,通过对钻井工况和重要参数的实时监控,综合利用离差积分和、模糊推理和起下钻监测等手段,数据格式和传输基于油田通用WITSML标准接口,实现通过Android手机客户端对井涌井漏钻井事故的实时判断与提示,并且实现同时对多口井数据进行检测,可以更好的指导现场钻井工作。

1 系统组成

系统主要由三大部分组成:井场传感器等数据采集及传输、油田公司基地服务器数据接收及存储、Android手机客户端数据应用。

(1)井场主要负责井场数据监测和采集服务,现场传感器数据采集和管理,传感器数据管理架构基于WITSML标准,数据格式使用XML标准定义的,完成数据存储和应用程序接口功能。使用标准WITSML API实现添加数据、删除数据、获取服务器数据、更新数据等功能,并通过基于WITSML的TCP/IP协议实时将数据传输到基地服务器。

(2)油田公司基地服务器接收多口井场现场实时数据并存储到数据库,通过WITSML可以实现井场数据和石油公司基地服务器之间无缝数据交换。手机客户端用户的注册和登录权限信息也存储在基地服务器,服务器根据不同用户分配不同权限,实时全程侦听等待客户端数据请求,并响应手机客户端请求。

(3)Android手机客户端,用户通过向油田基地服务器发送请求,完成注册/登录,接收来自现场的实时数据,根据用户不同需求访问数据并实时绘图,实现通过Android手机客户端对现场作业的远程井涌井漏监测。

2 Android客户端功能模块设计

基于Android的井涌井漏远程监控客户端开发和调试使用谷歌推出的Android studio集成开发工具,Android studio提供了多语言开发支持,Android手持设备框架基于框架的相关开发,侧重数据编辑,安卓手持设备业务相关开发,侧重曲线、仪表、表格。

2.1 Android手机客户端和油田基地服务器之间的网络通信

手机客户端和油田基地服务器之间的通信,我们把它设计成通用的网络操作提取到公共类HttpUtil里,并提供一个静态方法,当想要发起网络请求的时候,只需调用这个方法即可。通讯前先获取网络状态,如果连接的是5G、wifi、4G等网络状态则继续,否则显示提示信息进入网络设置界面。手机客户端通过URL向油田基地服务器发送请求,通过HttpURLConnection建立连接;服务器接收客户端请求,并将响应信息返回手机客户端,通过GET/PUT/POST等方式上传手机客户端数据,下载来自服务器端的Json数据,实现数据的交互。

2.2 Android手机客户端用户注册/登录

手机客户通过POST请求油田基地服务器进行注册/登录,POST请求携带参数,服务器响应客户端请求后做出反馈操作。请求服务器成功执行请求成功的回调RegisteronSuccess() ,保存客户注册信息跳转到主页面,请求服务器失败则执行请求失败的回调RegisteronFailure()显示错误返回到注册起始页面。主要有请求服务器的回调接口(HttpResponeRegister),网络接口类(RequestApiData),网络请求处理的类(RequestManager)来实现。

登录实现的原理和注册使用同样的方法,执行通过携带参数的POST请求,检查当前网络是否可用,请求服务器响应,请求方式为POST,请求的链接和监听,回调请求失败显示解析异常的错误提示。

由于各应用系统可根据用户定制选用,需要考虑如下几级权限,用户定制系统的系统管理员权限,给不同人员看不同的信息,比如领导使用远程监控,仪器维修人员使用远程诊断,远程作业人员使用远程录井的井涌井漏实时监控等。

2.3 Android手机客户端Json数据解析

Android手机客户端从油田基地服务器收到的数据是Json数据格式的,之所以选择Json来传输数据主要考虑到Json与XML的比较,数据可读性差不多,数据的描述性要差,但数据体积更小,交互更加方便,速度要快很多,所以选择Json是不错的选择。Json数据解析也是一个通用功能,所以我们也将它提取到公共类JsonUtil里,方便使用。

油田基地服务器将收到的witsml数据经过转换,定义的是JSON数据,因此在这里首先是将服务器返回的数据传到一个JSONArray对象中,然后循环遍历这个JSONArray,从中去除每一个元素都是JSONbject对象,JSONbject对象中又会包含FlowIn、FlowOut、和TotalPit等数据,最后调用getString方法将这些数据取出。

2.4 井涌井漏Android监测手机客户端实时曲线绘制

实时曲线绘制主要划分为三个显示区域,最左边显示事故发生的时间信息,具体时间精确到秒;中间区域则显示事故井实时重要数据绘制曲线,以曲线的形式直观的将事故井实时状态数据显示出来,上面时曲线显示图头信息,显示不同曲线所使用不同的颜色和显示边界信息,下方则是需要显示的曲线信息,可以通过模板定制功能对显示曲线参数进行定制操作,主要的曲线信息包括曲线显示的颜色,曲线显示的线的粗细级别、曲线显示的边界信息。曲线显示的数据信息根据不同井不同事故状况况显示不同。

绘图时,获取数据需要单独开线程来处理,实现多线程,我们也是将具体的处理单独写成类DrawCurveUtil实现方便使用。Android UI设计是Android编程很重要的一部分,特别是图形绘制时我们首先需要获取设备的分辨率,再根据手机的分辨率从dp的单位转成为px(像素),对Android而言,DPI等价于PPI(Pixels-Per-Inch),其计算方式为dpi,DPI=宽/((尺寸2×宽2)/(宽2+高2))1/2 =长/((尺寸2×高2)/(宽2+高2))1/2。主要考虑到以下几个因素,设计的时候减少对元素尺寸的绝对定位和绝对大小的要求,尽量用相对定位和比例大小来定义元素的位置和尺寸;对于文本框这种难搞定的东西尽量不要完全占满,一定要考虑到适配可能出现的问题;对于某些无法精简和相对定位的元素,在设计的时候考虑好适配。一旦出现显示比例变化,元素可以根据周围元素变化进行尺寸微调已满足适配。具体的绘制在onDraw()里实现,并创建出一个Canvas对象,然后调用View的draw()方法来执行具体的绘制工作。同时也需要处理给Canvas加上抗锯齿标志,可以解决Android图形绘制时产生的锯齿,具体是使用下面这个函数canvas.setDrawFilter(new PaintFlagsDrawFilter(0,Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG))。

2.5 手机客户端本地数据处理

手机客户端操作记录信息和异常处置信息均以日志形式记录,通过Environment.getExternalStorageDirectory().getPath();获取用户sd卡路径信息,实现记录存储功能。

图1 井场信息客户端

图2 井场信息系统服务器

手机本机数据信息主要存储本地用户登录信息和下载的井况信息,方便用户在非连接状态下使用,访问均通过封装一个继承自SQLiteOpenHelper类的数据库操作类,然后以这个类为基础,再封装逻辑方法,来实现对SQLite数据库的操作,可以实现对本地数据库的创建、打开、关闭、更新和删除,以及数据的增、删、改、查操作。

2.6 Android屏幕常亮实现

使用registerActivityLifecycl eCallbacks,可以传入一个回调接口,里面有所有当前Activity的生命周期方法回调,可以获取到所有的Activity实例,在onActivityResumed方法中调用屏幕常亮的keepScreenLongLight方法可以实现所有APP页面屏幕常亮,当然可以随时关闭。

2.7 Android客户端程序调试

完整的Android客户端程序测试需要连接服务器,部分则可以通过Apache在本机搭建服务器,访问本机JSON文件来实现部分程序功能的调试,postman也是不错的工具,另外在测试过程中使用模拟器和真机同样方便调试。

3 系统应用情况

系统软件已经完成开发和测试,已经在油田应用。

远程作业信息服务器,主要具备客户端连接和数据接收功能,实时监视远程作业计算机状态,记录和显示井场作业计算机实时操作状况和数据返回状况,见图1所示。

远程作业系统服务器,主要具备客户端连接和数据接收功能,实时监视远程作业计算机状态,记录和显示井场作业计算机实时操作状况和数据返回状况,井场信息系统服务器在作业过程中全天候进行听侦监听状态,响应Android客户端的服务请求,对已经连接的井场计算机状态信息进行显示,主要信息包括在线井的编号、井名、时间库更新信息、客户端地址、连接时间等,并实时刷新显示信息,同时实时更新并显示各个连接井操作请求信息并进行存储操作,信息包括时间、登录、信息返回等,见图2所示。

井涌井漏监测显示问题井井名信息,选择问题可以查看详细问题描述,显示所有事故井的信息,包括井名信息、事故时间信息和事故描述信息,根据不同井事故的报警级别和事故描述显示不同的报警图标,选择不同的井可以查看该井的详细数据信息,也可以对该井事故通过曲线绘制来实现,问题井问题详细描述包括井名信息、事故名称、事故时间、事故测深、钻井状态、问题描述等见图3所示。

图3 井涌井漏监测问题描述

图4 井涌井漏监测曲线绘制

井涌井漏监测曲线绘制以曲线的形式更加直观的反映问题,见图4所示。

4 结束语

远程井涌井漏监测系统Android版本的开发成功,不仅可以及时应对各种可能发生的复杂的钻井状况,并提前分析决策,特别是井涌井漏监测曲线的绘制实时显示现场状况,后方专家只要登录该系统就可以随时随地通过Android客户端远程访问多井数据,及时进行实时决策和现场技术支持。极大的方便了专家远程指导现场作业,节约了宝贵的决策时间,提高了解决问题的效率和质量,最大限度地减少损失。对防止井涌井漏井喷等工程事故的发生和对事故的及时处理有积极的意义,现场使用反馈良好,值得推广应用。应该继续加强井涌井漏事故预警建模算法研究,才能更加有效的应对各种突发状况并及时做出决策应对各种复杂状况。

猜你喜欢

井场客户端远程
让人胆寒的“远程杀手”:弹道导弹
远程工作狂综合征
如何看待传统媒体新闻客户端的“断舍离”?
远程诈骗
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
井场防雷击系统应用中的问题及整改探讨
繁忙的井场
黄陵油田井场治理滞后原因分析
客户端空间数据缓存策略