马延玲,爨军红
延长油田股份有限公司富县采油厂 (陕西 延安 727500)
在油田开发过程中,一口井钻至设计井深位置以后,需要进行下套管、注水泥固井等完井作业;投产以后需要下油管、油杆及配套工具,将原油从井底举升至井口。对井眼轨迹的充分了解和全面认识是提高设计效果和避免作业失效的重要前提,而井眼轨迹是最能直观显示井身结构的重要依据。以Visual Basic 6.0为开发平台,运用MatrixVB动态链接库进行井眼轨迹的三维仿真,对提高油田开发效率具有重要的现实意义。
国内主要采用转盘旋转带动钻具旋转钻井,钻出的井眼形状趋向于柱面螺旋线,所以采用圆柱螺旋线法更适合我国的实际井眼轨迹,计算模型相对更精确,计算结果更合理[1]。
由于在井眼轨迹实测时,只能测到每个测段两端点处的数据(图1)。为了更好的反映井眼轨迹的实际情况,需要通过轨迹内插法对测斜数据进行插值,求得更多的绘图数据,这里选用直线内插法[2-3]。
设 2 测点(L1,α1,φ1,D1,E1,N1)和(L2,α2,φ2,D2,Ei2,N2),给定插入点井深 Li,通过已知条件得到插入点距离上端点的井段长度 ΔLi,利用公式(1)~(3)可以求得插入点i的井斜角、垂深以及井斜方位角,带入公式(4)~(6)从而求得插入点 i的坐标。
图1 圆柱螺线法内插
给定插值点垂深Di,通过已知条件可得到插入点距离上端点垂增 ΔDi。 利用(7)~(8)式可以求得插入点i的井斜角和井深,带入(4)~(7)从而求得插入点i的井斜角及坐标值。
以Visual Basic 6.0为开发平台实现基本算法,以MatrixVB COM组件来实现井眼轨迹的三维仿真,仿真软件主要分为数据管理、三维显示、结果保存3个主要模块,其中三维显示模块是主要模块(图2)。
图2 系统模块框图
将按规定格式处理过的文本文档中的实测井眼轨迹数据导入到软件,保存在相应的数组中,然后通过软件中的坐标转换模块对实测井眼轨迹数据进行差值计算,计算结果存储在对应的数组中。
MatrixVB只是一组DLL动态链接库,它是专门针对VB与Matlab混合编程而设计的,它提供了大量的有效算法,可以加强VB内数学运算和图形展示。MatrixVB继承了MATLAB的大部分功能,且能够使VB独立于Matlab而使用[4]。
由于MatrixVB是一款外部动态链接库,要想在VB平台上使用,必须为其设置接口,将其引用到VB工程中。
MatrixVB安装后自动将DLL动态链接库复制到C:windowssysem32路径下,无需其他操作。安装完成后打开VB工程,点击工程引用,选择C:windowssysem32MMatrix.dll,确认添加后就可以在VB中使用MATLAB的部分函数了。
MatrixVB组件使用的是MATLAB编程语言,它所采用的数据类型是矩阵,有别于VB中的数组,它不能直接识别Visual Basic中的数组类型,需进行类型转换才能使用。所以要对经过坐标转换的数组进行数组类型转换,将一维数组转换成矩阵形式X(0,i)=ArryNBZB(i);Y(0,i)=ArryDXZB(i);Z(0,i)=-ArryCHS(i)。这样才可以通过MatrixVB的内部函数将其转换成MatrixVB可以识别的数据类型[5]。
井眼轨迹三维仿真软件中调用MatrixVB内部的mabs数据转换函数,通过XX=mabs(X);YY=mabs(Y);ZZ=mabs(Z)的转换方式,分别将经过处理的井眼轨迹的坐标直接转换为MatrixVB可以识别的矩阵形式。
MatrixVB的优点不仅仅是可以实现井眼轨迹的三维显示,而且绘图函数功能强大。在符合VB语言规范的条件下,可以在VB开发平台上进行MATLAB语言编程,仅仅需要以下代码就可以实现井眼轨迹的三维显示 Call plot3(XX,YY,TT,“b-”)和坐标网格绘制grid“on”,结果显示在一个独立的图形窗口中,完全继承了MATLAB图形界面的功能,用户可以在这个显示界面中实现对三维仿真图形的各种操作,包括旋转、平移、缩放、背景更换等功能,还可以实现各种视图的转换及图形打印等功能。
以Visual Basic 6.0为开发平台,将MatrixVB直接打包在软件安装包中,软件独立性非常强,内存占用率小,安装后就可以直接运行软件进入主要功能界面窗口。
以延长油田股份有限公司定边采油厂定4930井区定4961-4井为例进行软件的验证,将该井的实测井眼轨迹数据以文本文档的形式导入软件中进行计算,进行井眼轨迹的三维仿真显示(图3)。
MatrixVB提供的可视化三维仿真功能在Visual Basic6.0中的成功调用,不但使工作量大幅度降低,而且三维仿真结果的展示功能较多,使油田工作人员可以从任意角度、任意位置全面的观察井下环境,具有以下优势及功能。
图3 井眼轨迹三维显示
1)引用MatrixVB动态链接库,使VB完全独立于MATLAB而使用其内部函数。在VB的开发规范下使用MATLAB语言编程,图形界面继承了MATLAB的所有功能。操作方便,软件独立性强,内存占用率低。
2)引用MATLAB强大的数据处理功能和绘图功能,降低了VB编程的一大半工作量,可视化仿真界面的展示功能强大。实现了三维仿真图形的平移、旋转、缩放、视角转换、背景颜色转换、打印等功能。
3)三维仿真图形网格化的三维坐标系,方便井眼轨迹坐标的读取。
[1]王礼学,陈卫东,贾照清,等.井眼轨迹计算新方法[J].天然气工业,2003,23(增刊):57-59.
[2]张积锁,鲁港,吴俊林.井眼轨迹位移插值计算的解析法[J].石油钻探技术,2007,35(4):35-37.
[3]王鸿雁,肖文生,刘忠砚,等.基于MATLAB的钻井井眼轨迹三维仿真研究[J].石油矿场机械,2014,43(4):1-6.
[4]徐军辉.MatrixVB—基于MATLAB与VB的计算引擎[J].国外电子测量技术,2002(2):31-32.
[5]毛淑芳,过秉坤.基于 MatrixVB组件的数据处理技术[J].焦作工学院学报:自然科学版,2004,23(6):464-466.