文浩贤,杜 胜,张 典,陆承达*,吴 敏
(1.中国地质大学(武汉)自动化学院,湖北 武汉 430074;2.复杂系统先进控制与智能自动化湖北省重点实验室,湖北 武汉 430074;3.地球探测智能化技术教育部工程研究中心,湖北 武汉 430074)
国家高度重视深部地质资源的勘探。由于浅部资源的匮乏,未来勘探对象必将更加隐蔽,地质条件更加复杂[1]。深部地质钻探过程中,地层复杂多变,为保证钻进过程安全高效进行,有必要对其状态监测。大量的钻进过程数据为钻孔作业的顺利进行提供了有效的支持[2],区域性数据对于地质钻探过程控制向智能控制发展具有重要意义。
目前大多数地质钻探条件苛刻,实际工程中所使用的钻机和设备自动化与智能化水平低,导致对于孔下数据无法获取,只能通过监测井上设备的参数变化来判断钻探工况[3]。地质钻探工程当前依赖于工人在现场观测各设备仪器上的数据,结合自身经验调整对应参数,以防止卡钻、断钻具、井漏等故障发生。此类传统监测方法不仅拘束于需要人工长期对设备仪器监视,且在钻进过程工况突变时难以立刻做出判断和调整。
针对钻进过程的智能状态监测手段,国内外已有部分学者进行了深入研究,主要涉及钻进过程工况识别、故障诊断、事故预警和钻速预测。范海鹏等[4]基于支持向量机建立钻进工况识别模型,对钻进工况进行识别。胡英才[5]基于小波神经网络对钻进过程事故发生时的监测参数进行训练,实现了对井漏、井涌等井下故障的诊断。Li 等[6-7]针对现场监测数据时间尺度特性提出地质钻探过程井下事故诊断模型,并基于多元广义高斯分布和Kullback-Leibler 散度实现了钻进过程的早期故障检测[8]。孙合辉等[9]建立了多工况下溢流发生的贝叶斯预警模型。Zhang 等[10]挖掘钻进数据的时序特性,基于贝叶斯网络建立钻进过程井漏井涌事故预警模型[11]。Gan 等[12-13]建立了智能钻速预测模型,实现了针对不同地层的钻速智能优化。
虽然上述方法能较好地为钻进过程提供智能监测,但由于此类方法需要利用现场数据建模,条件较为苛刻。而一般实际地质钻探过程都将工业电脑部署于现场,专家每次进行控制策略的更改都需前往现场,使得钻进过程智能决策极为不便。对此,设计一个远程监测系统用于现场工况查询、数据分析以及故障预警十分有必要。
国内外钻探过程状态监测系统的研究已有较多成果。Sekal 公司开发DrillScene 钻井监测系统实时监测钻机上的数据[14];梁海波等[2]设计开发了一套针对煤层气钻井现场实际情况的钻井综合参数监测系统,实现了部分煤井参数的监测,并实现了数据远程传输。
但上述系统是基于石油钻探以及煤井作业机理进行开发,是针对单一类型井进行监测,其监测参数与设计功能适用范围狭窄,难以满足地质钻探过程需求。目前现有的钻进过程监测系统大多局限于单钻孔的监测,单钻孔数据使得专家缺乏科学决策的多源数据,不利于控制策略的设计。此外,大多数钻进过程监控系统部署在远程现场工业电脑上,缺乏便携式移动监测软件服务专家提供远程指导,极大不便。
本文设计了一款基于Android 的地质钻探过程状态监测App。App 整体采用模型-视图-演示器(Model-View-Presenter,MVP)+模块化设计以避免软件功能结构的冗余,同时采用C/S 架构作为通讯模式使得数据交互具有更高的安全性。App 具有实时监测、历史曲线趋势分析等一系列功能。通过工程测试,表明各功能均能达到预期,具有良好的兼容性和易用性。该App 结合了Android 移动应用的便捷性以及实时监测系统的实时性等优点,为实际地质钻探过程提供智能监测服务,促进地质钻探过程安全高效作业。
首先简单描述地质钻探过程设备组成及特点,阐述实时监测钻进参数的重要性,并指出当前钻进现场监测系统的不足,引出状态监测App 的功能设计需求。
地质钻探是一个复杂的非线性、时滞、强耦合过程,其中包括地面设备和孔内钻具2 部分组成,如图1 所示。地面设备主要有由天车、游车组成的提升系统以及由泥浆泵构成的钻井液循环系统,孔内钻具部分主要是钻具组合的钻进系统,在整个钻进过程中地面与孔内各系统之间互相协调在较优的参数下钻探,确保钻进过程安全高效地进行。
图1 地质钻探过程Fig.1 Geological drilling process
随钻进过程的进行,地层发生变化,各系统设备参数较优值会发生变化,若仍按照先前的参数进行作业,轻则会降低钻进效率,重则会发生钻进事故。对钻进参数进行监测能有效地观测到当下工况下的参数变化,结合智能预测、安全预警以及参数优化算法,能让井场人员提前得知故障发生概率和当前工况最优参数,不仅能避免故障的发生还能提高工作效率。
转速、钻速、钻压、扭矩、钩载等钻进参数是钻进过程重点监测量,这些钻机设备的参数变化直接影响了钻进过程的效率与安全。数据实时性是状态监测的首要要求,在偶遇突发地层或者特殊工况时,若未能及时监测识别异常数据并分析决策,则可能会引发钻进事故。当前绝大多数的钻进现场司钻房会部署一台安装了监测系统的工控机,为钻孔提供一定帮助的数据监测。实际上,司钻员在司钻房只能看到监测数据的变化,对于参数变化规律的分析以及智能决策能力较为缺乏,需要有专家对钻进过程数据进行分析决策,而部署在现场的监测系统不便于专家远程对钻进实时数据进行决策分析。
状态监测App 针对实际钻探工程的钻进参数进行状态监测,面向对象为地质钻探过程操作人员,因此不仅需要兼顾良好的用户交互体验,更重要的是需要有较强的专业性。根据实际钻进现场采集传输的数据以及工人需求,状态监测App 有如下功能设计需求:
(1)地质钻探过程容易发生事故,需要对钻进相关参数进行实时远程监测预警;
(2)钻进数据以图表化等形式多元呈现能让用户更直观地观测到数据变化;
(3)钻进数据是时间序列数据,基于智能算法挖掘数据相关性并对其进行参数优化能提高钻进效率、增加安全保障;
(4)App 能对多个不同钻场数据实时监测,并能根据用户操作实现钻孔切换;
(5)App 需设有用户不同的权限等级,且具备易用的人机交互界面与良好的操作体验。
首先依照实际钻探过程需求,设计状态监测App 的主要功能以及操作流程;其次设计了整体采用MVP+模块化的架构模式,有效解决了内部功能程序耦合的问题;最后采用C/S 架构模式设计了App 的通讯架构,在保证数据传输保密性的同时,加快了网络请求响应,避免了同时访问用户过多导致的拥堵现象。
根据实际地质钻探过程特点以及充分考虑软件管理、用户需求、交互体验等各方面因素,状态监测App 的总体功能如图2 所示,主要包括用户管理、钻场选择、实时监测、历史曲线趋势分析、安全预警、钻速优化六大类软件功能。
图2 软件总体功能设计Fig.2 Overall software function design of App
用户管理模块负责确认用户的个人登录信息及权限管理,主要包括登录、注册、权限分配以及信息更改。由于App 提供给多个不同井场工程队使用,为区分用户群体,用户注册时给加以不同的权限供其访问,以确保信息的隐私性。钻场选择模块不仅需展示用户选择钻场的工程概况,还要求拥有基于用户权限进行钻场访问与切换的功能。实时监测与历史曲线趋势分析是该状态监测App 的核心需求,不仅需要将现场数据进行展示,还要利用图表等多媒体形式渲染,使用户能更直观地看出一定时间内的参数变化趋势,为钻探工程师和专家智能决策分析提供便捷。安全预警是地质钻探过程避免事故发生的重要手段,通过对现场钻进数据的分析,为用户提供前期事故预警与具体故障诊断,提高了钻探过程的安全性。除此以外,依据当前钻进参数给予参数优化指导也能一定程度提高钻孔作业的效率。
由于状态监测App 整体存在大量信息数据,其中包括用户信息、钻进过程参数、各算法输出等,需要设计一定的数据库对数据进行存储。实体-联系(Entity Relationship,E-R)图设计是数据库设计的关键[15],它能确定各实体之间的联系。根据本App实体对象之间的关联,设计如图3 所示的E-R 图。
图3 状态监测App 的E-R 图Fig.3 E-R diagram of the condition monitoring App
不同用户通过各自不同的权限访问所选钻场,获取该钻场钻进过程数据和算法输出,实现对该钻场的状态监测和安全预警。
由于状态监测App 是基于多钻场数据进行实时监测,其钻进参数数据量大,在软件架构设计时要求软件的数据处理能力强,能较好地解决程序耦合问题,保证软件的运行效率。状态监测App 遵循“高内聚、低耦合”的设计原则[16],采用MVP 三层架构+功能模块化的开发模式作为整体架构,有利于后续程序的高效开发。
MVP 三层架构如图4 所示,分为Model 层、View 层 和Presenter 层。在MVP 架 构 中,View 层 与Model 层无法直接进行交互,Presenter 层会从过回调函数从Model 层获得所需要的数据,转交由View层进行显示。通过Presenter 层作为接口将View 层与Model 层进行隔离,使得View 层和Model 层没有直接关联,这样能很好地解决软件常见的程序耦合问题[17]。
图4 软件整体设计架构——MVP 架构Fig.4 Overall software design architecture—MVP architecture
状态监测App 的通讯架构是基于C/S 架构设计的,即客户端直接与服务器端进行通讯,具体数据流如图5 所示。服务器负责数据的管理,客户端负责完成与用户的交互任务。
图5 C/S 架构下的数据流图Fig.5 Data flow with C/S architecture
在每秒为单位的数据交互过程中,客户端先发起获取数据的请求,此处是以HTTP 作为传输协议,服务器在接收到请求信号后以TCP/IP 协议方式向远程数据库发起访问请求获取数据。数据库端处理请求后输出数据给服务器,服务器以JSON 格式返回到指定IP(URL),客户端再从该URL 中将JSON 数据解析存储,并以多元形式可视化呈现。
用户管理是一个App 中不可或缺的一部分,意在对用户信息进行管理。功能主要包括用户注册、用户登录、用户权限管理。由于App 是基于多个钻场监测,用户可能是A 钻场或B 钻场甚至是远程实验室管理员的不同群体,为了避免数据泄露,需要对不同用户进行权限管理。用户权限管理即在用户进行注册时根据填写使用意图给予不同的标志位实现普通用户与管理员的区分,他们各自的权限区别如表1 所示。
表1 不同用户的权限区别Table1 Different permissions for different users
钻场选择功能包括以下2 种用途,首先是将众多的钻场按地区、功能分类整理,使用户能更方便查看到钻场概况。其次是对用户权限的一次验证,避免不是对应钻场的用户访问了其他钻场数据,造成数据不对应、隐私泄露等情况出现。在按照分类选定拟进入的钻场后,点击进入钻场按钮,会根据当前用户权限判断与所选钻场是否吻合。若吻合则进入平台主界面,否则提示“权限不符,无法进入所选钻场”。
倒不是因为他没考好,按分数,他比我们都高,上个重点本科没问题。但我们无法理解学霸的想法,他说:“要做就做到最好,要读就读最好的大学。”
作为地质钻探过程状态监测App,此功能是其核心,目的是对特定钻场的地质钻探过程数据实时监测,从而让不在现场的用户清楚地了解当下的工况。为实现钻进过程相关参数实时监测,利用子线程开启每秒发送访问服务器的HTTP 请求,从而获取实时数据的JSON 类型文本。借助FastJSON 插件[18]将其快速转换为浮点型对象,并显示在界面相应位置,确保用户可以观测到相关参数当前的实测值。此外,该功能还提供对当前工况的识别,将地质钻探过程工况按照实际现场可能发生的情况分成六大类:旋转钻进、停钻、接/下单根、下钻、提钻、扫孔。通过所监测的实时参数组合,结合文献[9]中的算法给出当前工况判定,使用户能了解当前钻场的工作状况。
判断钻进过程状态不仅取决于当前状态下的参数,更直观的是观测其一段时间内的变化趋势,历史曲线趋势分析功能更好地帮助用户判断钻进状态,从而提高决策的准确性。该功能分别以折线图和Excel 表2 种形式回溯选定时间区间的钻进参数。为使得用户能从不同时间尺度观察参数变化规律,提供按“秒”、“分”、“小时”、“天”、“月”5 种间隔进行回溯,以便通过多时间尺度对历史趋势进行分析。除此之外,还提供将数据导出Excel 表的功能,方便专家后续利用数据进行算法调试。
在复杂地质钻探过程中,运用智能算法进行决策、预警、优化能提高钻进过程的安全性与效率。该部分涉及安全预警、钻速预测与优化多个功能,为施工队作业提供了极大便利。App 通过将一定时段监测到的钻进参数输入各智能算法的应用程序编程接口,实时请求获得算法输出回调至客户端显示,可获得井下事故发生概率、下一时刻的钻速预测值以及当前参数的优化值。
本状态监测App 通过设计与功能实现后,按照实际操作过程对监测系统各个功能模块的功能性、兼容性以及易用性进行验证,确保系统软件稳定运行。并在完成了软件测试后投入辽宁丹东3000 m科学钻探工程现场的运行应用,检验工程应用效果。
通过多次对App 进行功能性、兼容性及易用性测试,验证其是否能满足工程应用与用户需求。通过黑盒法测试App 各个功能模块能否正常运行并达到预期结果,即在虚拟机上分别针对每个模块化的代码进行单独编译运行,测试表明各功能模块能正常运行,且运行结果与设计预期相符。基于不同版本Android 以及不同品牌的移动设备测试App 的兼容性,分别就Android 10.0 版本以及Android 11.0版本的多台不同品牌手机运行该App,结果尚未出现不兼容与闪退状况,且各版本Android 下App 均能较好适配屏幕。根据多名从事地质钻探工程工作的用户的使用情况来验证App 的易用性,用户表明该状态监测App 不仅简单易用,且专业性强,能给予他们极大的便捷,解决了远程监测钻场不便的问题。
图6(a)中状态监测App 首次运行会弹出隐私条例界面,在授予相关权限与同意许可后,跳转到如图6(b)的登陆界面。在输入用户账号与密码与数据库匹对正确后,进入如图6(c)的选择钻场界面。通过下拉选择栏选择指定的区域及钻场后,卡片中会出现该钻场概况,方便用户确认目标钻场。点击进入钻场跳转到状态监测App 的主页,其中包括不同功能模块的底部导航栏、侧边栏以及中间主页填充区域。相关资料、实时数据、实时趋势、历史数据4 个底部导航栏功能分别对应图6(d)~(h)。相关信息主要是对钻探现场以及实验室信息的描述,为用户提供相关的链接通道,方便查询。实时数据功能内含有工况识别、数据监测、故障预警、钻速预测、参数优化5 个子功能,实现对钻进现场的全面监测,确保地质钻探过程的安全与高效作业。实时趋势与历史数据功能是为了通过一定时间的参数变化趋势协助专家进行分析,借助MP Android Chart 图表,实现对6 个钻进相关参数的动态可视化渲染。同时历史数据还提供将选定时间段的数据导出Excel 表的功能,以便后续对数据进行利用分析。
图6 状态监测App 各功能实现界面Fig.6 Interface of condition monitoring App function implementation
状态监测App 在投入丹东某地钻孔长达一个月的工程应用测试过程中,总共接收超过10 G 缓存数据,其中包括该月的所有钻进过程参数数据以及智能算法输出变量。在长达1 个月的状态监测过程中,状态监测App 能正常后台运行无闪退或崩溃现象。总共监测到开钻次数6 次,与现场班报表施工记录一致。监测过程中,无事故报警发生,经确认与现场无误。在监测过程中,应用钻速优化智能算法推荐的参数调整送钻电机以及主轴电机钻速,使得钻速在同等地层下有15%以上的提升,使原本约30 m/d 的钻进效率提高至30~40 m/d。
针对当前现场大多数地质钻探过程状态监测系统存在较大的时空限制以及钻场决策数据源单一、数据互联不通问题,本文设计研发了一个地质钻探过程状态监测App,能实现对地质钻探过程状态参数的远程监测、智能决策等功能。状态监测App 不仅解决了本地监测系统的时空局限,同时能与多钻场相连,较好地统筹多钻场工作。虽然目前App 已实现远程监测在内等多个功能,但仍未实现远程操作下发控制指令以及算法实时更新功能。为加快工业信息物理融合系统在地质钻探领域中的实践应用,仍需对状态监测App 继续完善,促使地质钻探向智能化、信息化发展。