王慕楠
(中国石油大庆油田钻探工程公司地质录井一公司,黑龙江大庆 163000)
国际石油勘验领域由于受行业划分的缘故,各系统之间难以兼容,使井场内部形成了一个个的信息孤岛。为了实现不同施工主体之间数据信息的兼容共享与远程控制,甲方在招投标合同及其澄清中明确地规定了乙方必须能够提供WITSML(Well Site Information Transfer Standard Markup Language,井场信息传输标准标记语言)数据流。WITSML基于XML文件格式,一个数据对象定义了一组数据,可以用一个单一的XML 文档传输,代表了一个领域逻辑模型内的一组紧密相关的数据集,其标准包括2个可独立版本化的组成部分:数据模型和应用程序接口(API)。根据资料采集模式与上传数据库的方式差异,现场资料基本上可以划分为综合录井仪实时采集数据(如钻时、扭矩、立压、悬重等参数)和人工录入数据(岩屑百分含量、岩性、碳酸盐岩分析数据等)两大部分。实时传输由截取软件自动实时截取入库并同时上传至远程服务器数据库;人工录入则需要录井工程师采用对应的资料录入与上传软件,由人工提交数据上传至远程服务器数据库,两者在服务器中均被转换为WITSML 格式实现数据发布与可视化。
大庆录井2020 年中标伊拉克祖拜尔项目以来,甲方KEBL(科威特联合能源)油藏部对录井数据传输及可视化提出了更加严格的要求:按照甲方软件的格式增加百余项岩性数据的上传工作。不同的甲方因其人工录入数据要求的不同则需要开发对应的数据录入和上传软件,这就意味如果寻求第三方进行软件开发,不仅成本高而且效率低;每次寻求第三方得到的都是已开发软件,没有软件开发的源代码,应对甲方反复的变化与要求则无从下手,无法进行软件上的再次升级。为此根据现场实际情况开发了基于WITSML 格式的大庆录井岩性数据录入与传输软件,实现了根据甲方的格式要求自定义快速上传岩性数据至远程数据库,并与实时数据相结合兼容可视化应用。
为了保证远程数据库的安全性,传输软件需要设置账号、密码登录验证,并要求有密码账号的登录状态记住功能。主界面上顶部通过Tool Strip Menu Item 控件设置传输配置、创建新井、数据上传、退出程序等项;通过Progress Bar 实现数据上传进度条展示;左侧利用Tree View控件显示井的信息及实现井的信息及其对应的数据的删除等各项功能;右侧利用Data Grig View 和Tab Page 控件实现数据录入、加载等功能。采用NET程序中可以通过ODP 调用特性,对Oracle 数据库进行操作;ODP.NET 里支持在一次调用里做批量insert 或update功能;利用Array Binding把需要多次调用的一个Oracle Command 的一批不同参数放到多个数组里,一起传给oracle;oracle 根据定义的Array Bind Count 做一个循环来执行SQL命令(图1)。
图1 软件总体设计图
美国微软公司开发的一款基于.NET 框架的IDE(集成开发环境)包含项目开发所需的所有功能,提供了完整的堆栈开发工具集,支持C#、C++、Python、Visual Basic、Node.js、HTML、JavaScript 等多种主流编程语言,具有编程机制灵活、访问数据库相当迅速等特点。
是一种现代的面向对象语言,可使程序员快速便捷地创建基于Microsoft.NET 平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet 调用它。C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C++程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。
是由微软发布的关系数据库管理系统,可以把数据库引擎的图形用户界面和软件开发工具完美的结合在一起。
是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前使用最为广泛的数据库管理系统。作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
启动VS2017,创建新项目,选择Windows窗体应用(.NET Framework),命名为Mud logging,选择保存路径点击确定;将新建的Form命名为FrmLogin,设置为登录界面。
将IrisSkin4.dll 动态文件导入当前项目引用中(建议把IrisSkin4.dll 文件放在当前项目inDebug 文件中),然后把IrisSkin4.dll文件添加到VS2017的工具箱,最后把工具箱中新添加的SkinEngine 控件拖到当前项目中。
把皮肤目录中的.ssk文件复制到当前项目inDebug文件中,本次软件设计与开发选用DiamondBlue.ssk(图2)。
图2 软件登录界面展示
将新建的Form 命名为FrmMain,设置为主界面。其整体布局、主要控件:MenuStrip、ProgressBar、TabControl、DataGridView、TreeView。
创建传输配置界面Frm Ser,构建4种方法,分别是对该界面录入的密码进行Base64加密、Base64解密、保存至XML 文件、加载至界面显示;在主界面通过点击ToolStripMenuItem 控件,弹出传输配置界面;创建新井录入界面Frm Well Infor,通过构造函数与委托方式实现不同界面之间的传值。
添加Tree View控件,将其命名为:tvwWell,实现由新井录入界面向其传值,并以父子节点的形式实现井及其录入项目名称的添加、展布、删除、加载、勾选及双击后自动跳转到Tab Page控件上对应的项目。
利用其After Check属性,构造方法实现父、子节点只能勾选一个。通过Tool Strip Menu Item控件,为鼠标右键捆绑删除井功能,实现在Tree View 中对井号及其在本地Access数据库中的全部数据的删除。勾选和双击Tree View 中的子节点,选择对应的Tab Page 并加载对应的数据。
向Data Drid View 控件中录入数据,实现表格的复制、粘贴、删除、数据清除等一列功能。岩性百分含量、解释岩性、碳酸盐岩数据对应的三个Data Drid View 控件分别命名为dgvCutdgvInterdgvCal;实现Cutting Percentage/Interpreted Lithology/Calcimetry Data 三个表格从键盘录入功能;通过Cell Mouse Down 属性和捆绑Tool Strip Menu Item 控件实现鼠标右键对Cutting Percentage/Interpreted Lithology/Calcimetry Data三个表格复制、粘贴、剪切、清除、删除行等一系列操作功能(图3)。
图3 数据录入界面展示
通过Tool Strip Menu Item和多线程Thread类(防止耗时界面假死)把每次新增和修改的数据上传基地Oracle数据库。
本岩性录入与传输软件是针对大庆钻探工程公司祖拜尔项目在伊拉克Block9油田的甲方要求所开发的全新的数据上传程序,已成功运用于伊拉克Block9 油田5支录井队伍。软件已使用1年多,利用该软件已在Block9 油田建立起了实时数据与岩性数据可视化平台,各方用户可进行实时工程数据、岩性数据的显示、查询和分析。该软件直接产生的传输服务费用为单井大包服务价格的X%,在祖拜尔项目中年创效XXX万元。
FH-XX 井是Block9 油田的一口大位移评价井,设计目的层位Mishrif 组,目的层井斜65°,位移1192.3m,可参考临井较少。该井在12.25″井眼完钻后,井底层位:Mishrif 组,岩性:灰岩,井底井斜:65°,井底位移:491.6m。
在起钻自2992~2842m 时,遇阻10t,开泵倒划眼自2840~2779m时,顶驱憋停,泵压突然升高至4291psi,在25~140t活动钻具并施加25~33kN·m扭矩,震击器下击3次,钻具未活动,发生卡钻事故(图4)。现场工程师立即向项目部汇报,项目部决定与国内专家立即进行视频会议讨论解卡方案。
图4 FH-XX井卡钻事故录井实时数据可视化界面
在视频会议上,国内专家通过录井实时可视化曲线以及岩性数据可视化界面进行分析判断,卡钻位置层位:Sadi 组,岩性:泥岩与页岩、灰岩互层,井斜:55°,是由于Sadi组顶部的页岩剥落导致井下发生卡钻事故(图5)。遂展开决策指挥:继续向下活动钻具并缓慢开泵憋压,经过1h的反复活动,最终钻具解卡。
图5 FH-XX井卡钻事故录井岩性数据可视化界面
随着网络技术与井场信息采集传输技术的日趋发展,井场信息传输综合系统平台的建立已经成为必然要求,它涵盖了钻井、录井、测井等多专业信息,集成了井筒与地面信息,在勘探现场与后方基地之间搭建起沟通与决策的桥梁,尤其是在海上以及环境恶劣的施工区,传输技术更起着举足轻重、不可替代的作用与优势,因此录井传输技术的应用前景一片光明。本软件作为录井信息传输支持的重要组成部分,同时也发挥着极其关键的作用,充分地保障了岩性、碳酸盐岩、含有物等各种数据的快速上传。另外,它是基于Microsoft Visual Studio 平台与C#Winform 开发出了全新的现场数据录入与传输软件,从根本上解决了快速、安全的录入数据至远程数据库这一核心的问题,而且为今后面对各种传输要求时,软件的升级与开发保存了源代码。由于野外施工普遍网络条件较差,不利的客观条件给数据传输带来了一定的困难与挑战。因此如何在网络信号较差的前提下解决批量数据上传基地服务器就成为本次攻关的主要问题。通过采用NET程序中可以通过ODP 调用特性,对Oracle 数据库进行操作。ODP.NET 里支持在一次调用里做批量insert 或update功能。利用Array binding 把需要多次调用的一个OralcleCommand 的一批不同参数放到多个数组里,一起传给oracle,oracle会根据定义的ArrayBindCount做一个循环来执行SQL命令,从根本上解决了快速、安全的录入数据至远程数据库这一核心的问题。在实际应用中,与实时数据组成可视化系统,实现井场、基地、国内专家、甲方技术人员无缝对接,随时发现异常、调整工程参数,从而有效提高工作效率、减少钻井风险、缩短钻井周期、节约钻井成本,为安全高效钻井提供了重要技术支持。