钻井模拟器压力控制模拟方法.pdf

上传人:e1 文档编号:4934952 上传时间:2018-11-30 格式:PDF 页数:23 大小:1.03MB
返回 下载 相关 举报
摘要
申请专利号:

CN200910263422.7

申请日:

2009.12.16

公开号:

CN101710468A

公开日:

2010.05.19

当前法律状态:

授权

有效性:

有权

法律详情:

登录超时

IPC分类号:

G09B25/02

主分类号:

G09B25/02

申请人:

西南石油大学

发明人:

陈利学; 陈秋实; 梅大成; 龚捷; 胡卫东; 郑巧; 赵刚

地址:

610500 四川省成都市新都区新都大道8号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明公开的一种钻井模拟器压力控制模拟方法,包括以下步骤:1)读取前端设备的状态参数和操作指令;2)根据设备状态参数和操作指令类别及预先建立的压力控制模型计算出实现压力控制模拟动画的作业数据;3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据;4)图形处理单元根据此数据完成压力控制的动画展现;5)按照设定的数据格式与图形处理单元通讯,交换动画状态信息。本发明基于计算机仿真技术并参照钻井作业现场的实际操作流程,对压力控制的原理和操作方法进行逼真模拟,用于钻井现场操作人员和在校学生的技术技能培训,增强了教学培训的现场感,缩短了培训周期,提高了培训效果,降低了培训成本。

权利要求书

1: 钻井模拟器压力控制模拟方法,其特征是:专门针对钻井模拟器压力控制模拟的控制程序,按照以下步骤实现压力控制模拟: (1)读取前端设备的状态参数和操作指令; (2)根据获得的设备状态参数和操作指令类别以及预先建立的钻井模拟器压力控制模型,计算出实现压力控制模拟动画的作业数据; (3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元根据此数据完成钻井模拟器压力控制的动画展现; (4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息; (5)重复前述步骤(1)~(4)。
2: 根据权利要求1所述的钻井模拟器压力控制模拟方法,其特征是:所述的设备状态参数包括初始状态参数和动态参数,其中,初始状态参数包括运动管柱内径、运动管长度、雷诺数、井眼直径、钻柱外径、钻柱内径、井深、起钻柱起出长度、井眼半径、钻杆外径和钻杆内径; 动态参数包括环空平均流速V 1 、考虑平衡安全的地层压力附加值P e 、环空压降P SW 、流动摩阻系数f、稠度系数K、流性指数n、塑性粘度η、泥浆动切力τ O 、泥浆液柱压力P m 、钻井液密度、正常地层压力当量泥浆密度ρ m 、实际使用的泥浆密度ρ、钻压P、转速N、机械钻速V、井底有效压力P b 和地层有效压力P P 。
3: 根据权利要求1所述的钻井模拟器压力控制模拟方法,其特征是:所述的操作指令包括司钻法压井指令、工程师法压井指令和超重泥浆司钻法压井指令。
4: 根据权利要求1所述的钻井模拟器压力控制模拟方法,其特征是:所述的钻井模拟器压力控制模型包括波动压力计算模型、井底压力平衡判别模型、dc指数地层压力监测模型和井口可控最大套压值模型。
5: 根据权利要求1所述的钻井模拟器压力控制模拟方法,其特征是:所述的数据格式包括初始化数据格式、作业数据格式和动画状态信息格式。
6: 根据权利要求1所述的钻井模拟器压力控制模拟方法,其特征是:所述的图形处理单元包括图形绘制程序和视景仿真控制程序,其中,图形绘制程序包括设备类图形绘制、粒子类图形绘制、管理类图形绘制和工艺动画绘制,视景仿真控制程序包括工艺动画控制、碰撞处理、特效渲染和参数显示。

说明书


钻井模拟器压力控制模拟方法

    【技术领域】

    本发明涉及一种钻井模拟方法,特别是涉及一种钻井模拟器压力控制模拟方法。

    背景技术

    石油工业是一种技术密集型行业,钻井作业是石油工业拿储量、上产量的重要手段之一。由于石油钻井生产条件的限制和井下情况的复杂性,使石油钻井作业面临极大的风险。为了获得更好生产效率和经济效益,减少人为事故的发生,对钻井现场操作人员和工程技术人员的技术技能培训就显得十分重要。压井的模拟处于钻井过程中的较为重要的一部分,所以钻井模拟器压力控制模拟显得举足轻重。

    目前,钻井操作培训主要在生产现场进行,由于各种条件和因素的制约,使培训内容受到极大的限制,培训的系统性、培训效果及培训人员数量等都受到极大的影响。

    【发明内容】

    本发明的目的即在于克服现有技术的缺点,提供一种基于计算机仿真技术的钻井模拟器压力控制模拟方法,该方法是参照钻井作业现场的实际操作流程,对钻井模拟器压力控制的工作原理和操作方法进行逼真模拟,增强教学培训的现场感,缩短培训周期、提高培训效果、降低培训成本。

    本发明的目的通过以下技术方案来实现:钻井模拟器压力控制模拟方法,专门针对钻井模拟器压力控制的控制程序,按照以下步骤实现压力控制的模拟:

    (1)读取前端设备的状态参数和操作指令;

    (2)根据获得的设备状态参数和操作指令类别以及预先建立的钻井模拟器压力控制的模型,计算出实现压力控制模拟动画的作业数据;

    (3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元根据此数据完成钻井模拟器压力控制的动画展现;

    (4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;

    (5)重复前述步骤(1)~(4)。

    钻井模拟器压力控制模拟控制程序必须持续不断的与前端设备进行通信,以获取前端的设备状态以及获取培训学员的操作过程。这样做有以下几个原因:

    (1)实时获取前端硬件的设备状态后,经过压力控制模拟控制程序处理,可以驱动图形处理单元产生与硬件设备操作同步的动画过程。比如在图形处理单元中,大钩的上升和下降过程就是受前端绞车离合器,脚油门,刹把,离合器档位等部件的控制。

    (2)实时获取的前端设备状态也是压力控制模拟控制程序中模拟数学模型的基础数据。

    钻井模拟器压力控制模拟控制程序所计算出的压力控制参数也需要实时传输给前端设备,所以钻井模拟器压力控制模拟控制程序和前端设备之间的通信具备双向、高速和稳定的特性。

    操作指令类别包括:司钻法压井指令、工程师法压井指令和超重泥浆司钻法压井指令。

    司钻法压井的操作过程为:开始本次作业,设置泥浆泵冲数,排出受侵污泥浆,判断是否排完,如果没有排完则返回排出受侵污泥浆;如果已经排完,则加大泥浆密度,重泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    工程师法压井的操作过程为:开始本次作业,设置泥浆泵冲数,加大泥浆密度,然后重泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    超重泥浆司钻法压井的操作过程为:开始本次作业,准备超重泥浆,泵入超重泥浆,判断循环是否完毕,如果循环已完,然后调整泥浆密度,压井泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    本发明所述的压力控制模拟必须建立在严格的数学模型基础上,这样才能使钻井模拟器压力控制模拟的各种参数符合实际现场的情况,才能达到良好的培训效果。

    本发明所采用的钻井模拟器压力控制模型包括波动压力计算模型、井底压力平衡判别模型、dc指数地层压力监测模型和井口可控最大套压值模型。模型使用的设备状态参数包括初始状态参数和动态参数,初始状态参数包括运动管柱内径、运动管长度、雷诺数、井眼直径、钻柱外径、钻柱内径、井深、起钻柱起出长度、井眼半径、钻杆外径和钻杆内径;

    动态参数包括环空平均流速V1、考虑平衡安全的地层压力附加值Pe、环空压降PSW、流动摩阻系数f、稠度系数K、流性指数n、塑性粘度η、泥浆动切力τo、泥浆液柱压力Pm、钻井液密度、正常地层压力当量泥浆密度ρm、实际使用的泥浆密度ρ、钻压P、转速N、机械钻速V、井底有效压力Pb和地层有效压力PP。

    钻井模拟器压力控制模型条件的假设:

    (1)钻井液环空携岩能力Lc≥0.5;环空钻屑浓度Ca<0.09;环空流态稳定参数值Z≤井眼稳定值Z值。

    (2)所用通用钻速方程是建立在地层统计可钻性的基础上的,它反映了不均质地层可钻性的宏观规律。只要按《钻井手册(甲方)》选出相应的钻头类型,建立准确的地层可钻性梯度公式,纳入设计的程序,即可得出符合实际的结果。

    (3)波动压力地分析与计算是建立在刚性液柱(钻井液与井内管柱为不可压缩)理论基础上的。

    (4)钻井中发生溢流时,单位时间内进入环空的泥浆和气体形成的混气泥浆是均匀混合的。在这种假设下,我们可以将单位体积的混和泥浆中的气体含量看成是相等的。

    (5)发现溢流后,应及时停泵关井。在井内压力平衡前,地层气体仍然会不断地进入井内。因此,假设从停泵关井到关井稳定这段时间内,井内形成一段连续的纯气柱;且在压井过程中,此连续气柱不被破坏。

    (6)气体从地层中进入井筒符合达西定律。

    (7)若进入井内的溢流为气体,则假设气体溢流在环空内上升时要膨胀,其膨胀过程符合气体状态方程,且忽略气体滑脱现象。若进入井内的溢流为液体,则假设液体溢流在上升过程中不发生膨胀和滑脱现象。

    (8)电动机的输出功率按恒定值考虑。

    (9)假设井内的地温梯度为一常数,则:

    井底压力=地温梯度×井深+井口温度

    (10)地层破裂压力梯度为一常数,则井内任一点的地层破裂压力为该点井深乘以地层破裂压力梯度。

    (11)通用钻速方程式在假设影响钻速的钻压指数、转速指数、水力参数、钻井液密度差与地层宏观性等这些单因素是互不影响的独立变量的基础上建立起来的函数关系。

    由于本模型主要用于模拟培训,因此,在计算时间、计算精度和和准确度发生冲突时,原则上以保时间为主,而将过分复杂的数学模型进行了适当简化,但保证定性方面的准确性。

    建立的钻井模拟器压力控制的模型包括:

    (一)、波动压力计算模型

    PSW=1960fρV‾12LD-dO]]>

    式中:PSW--环空压降 千帕

    L--运动管长度 米

    ρ--泥浆密度 克/厘米3

    f--流动摩阻系数

    层流时:f=24/Re

    紊流时:

    宾汉流体:f=0.3164Re0.25]]>

    幂律流体:f=aReb]]>

    a=(lgn+3.93)/50

    b=(1.75-lgn)/7

    Re--雷诺数 无因次

    幂律流体:Re=12(1-n)103(1-n)(D-do)nV‾1(2-n)ρK(2n+13n)n]]>

    宾汉流体:Re=(D-do)V1‾ρη[1+τo(D-do)8000ηV1‾]]]>

    Re>2000紊流(宾汉流体)

    Re≥3470-1370n 紊流(幂律流体)

    K--稠度系数 帕.秒n

    n--流性指数 无因次

    η--塑性粘度 帕·秒

    τo--泥浆动切力帕

    对于复合钻具,应分别进行计算,然后相加。

    (二)、井底压力平衡判别模型

    Pm-P地>0

    式中:Pm--泥浆液柱压力(KPa)

    Pm=9.8(H-L(R2-r12+r22)/R2)ρ]]>

    H--井深(m)

    L--起钻柱起出长度(m)

    R,r1,r2--井眼半径,钻杆外径和钻杆内径(mm)

    ρ--钻井液密度(g/cm3)

    (三)、dC指数地层压力监测模型

    dC=ρmρ*log(0.0547VN)log(0.0648PD)]]>

    式中:ρm--正常地层压力当量泥浆密度,克/厘米3

    ρ--实际使用的泥浆密度,克/厘米3

    P--钻压,千牛

    N--转速,转/分

    V--机械钻速,米/小时

    D--钻头直径,毫米

    (四)、井口可控最大套压值模型

    为确保压井安全,在压井过程中,控制最大井口压力不超过井口装置的最大承受能力,套管鞋处受力不超过套管鞋处地层的破裂压力以及套管的抗内压强度。关井稳定后的井底压力应等于或略大于地层压力。

    即:Pao=Pamaxo≤min{Pao,Paf,Pai}

    Pb=PP或Pb=PP+Pe

    式中:Pb--井底压力,千帕

    钻井模拟器压力控制模拟控制程序与图形处理单元的通信通过广泛使用TCP/IP协议进行。钻井模拟器压力控制模拟控制程序将通过数据处理得到的与图形有关的数据发向图形处理单元,这样就能够把压力控制的各种动作以及钻井现场各种设备的状态、空间位置等控制信号和数据准确的发给图形单元,使图形能迅速、准确地反映前端操作者的各种动作。钻井模拟器压力控制的控制程序与图形处理单元通信的数据格式如下:

    (1)钻井模拟器压力控制的控制程序发送给图形处理单元的初始化及作业数据格式

    {

        struct

        {

            unsigned short state;//0:表示初始数据,1:表示作业数据

            unsigned short d1;//表示动作指令

        float d2;//在初始状态下表示吊环下平面离钻台平面高度,在作业状态下表示物体上下的速度(单位:m/s,可正可负)

        float d3;//在初始状态下表示井深,在作业状态下表示顶驱旋转速度(单位:r/min,可正可负)

        unsigned short d4;//在初始状态下表示井下钻杆数量(单位:根),在作业状态下表示吊环前/后倾斜角度(单位:度,可正可负)

        unsigned short d5;//在初始状态下表示大钩下挂钻杆数量(注意:如果d5有值,则d4的值没有意义),在作业状态下表示吊环旋转角度(单位:度,可正可负)

        unsigned short d6;//在初始状态下表示立杆盒钻杆数量(单位:柱)

        unsigned short d7;//在初始状态下表示井下钻挺数量(单位:根)

        unsigned short d8;//在初始状态下表示立杆盒钻挺数量(单位:柱)

        unsigned short d9;//在初始状态下表示本次作业是否为压井作业

        unsigned short d10;//在初始状态下表示钻杆上是否有3根打捞线

    }data;

    struct

    {

        float js;//井深

        float gaslength1;//溢流气体长度

        float gasheight1;//溢流气体底部距井底高度

        float gaslength2;//在现有的作业中无用,保留

        float gasheight2;//在现有的作业中无用,保留

        float hkkillmudlength;//环空内压井泥浆长度

        float hkkillmudheight;//环空内压井泥浆距井底高度

        float hkovermudlength;//环空内重泥浆长度

        float hkovermudheight;//环空内重泥浆距井底高度

        float zzkillmudlength;//钻柱内压井泥浆长度

        float zzkillmudheight;//钻柱内压井泥浆距井口高度

        float zzovermudlength;//钻柱内重泥浆长度

        float zzovermudheight;//钻柱内重泥浆距井口高度

        unsigned short JingKongFlag;//在初始状态下表示本次作业是否为压井作业

        undigned short fireflag;//点火标志

        }jk;

    };

    (2)图形处理单元发送给钻井模拟器压力控制的控制程序的数据格式

    union JSRevTUData

    {

        struct

        {

            float d1;//大钩高度

            float d2;//大钩速度

            unsigned short d3;//每个动作绘制完成标记

            unsigned short d4;//半封状态,0表示关,1表示中间状态,2表示开

            unsigned short d5;//全封状态,0表示关,1表示中间状态,2表示开

            unsigned short d6;//环形状态,0表示关,1表示中间状态,2表示开

            unsigned short d7;//小鼠洞是否有杆,0表示无杆,1表示有杆

            unsigned short d8;//吊环下挂物体是否在钻台平面下,0表示在下面,1表示在上面

        }data;

    };

    由于系统规模较大,设计复杂,图形绘制程序的设计是基于面向对象的。鉴于在钻井模拟器压力控制中涉及到的物体较多,并且各个物体在不同的方面有不同的特性,因此在设计之前,应确定设计类的准则。对本发明而言,这里关心的是用物体如何展现压力控制的过程,所以类的设计应该围绕物体的动画功能需要来进行,而所涉及到的图形处理单元包括图形绘制程序和视景仿真控制程序。

    其中,图形绘制程序主要包括设备类图形绘制、粒子类图形绘制、管理类图形绘制和工艺动画绘制,视景仿真控制程序主要包括场景初始化、工艺动画控制、碰撞处理和特效渲染。

    类的设计包括:

    (1)设备类

    钻井模拟器压力控制模拟中涉及到动画的物体具有一些相同的特点,例如每个物体都具有场景坐标、旋转角度等特点,就将各个类中的相同属性和方法抽象出来集成为类Device。类Device是一个父类,它向子类提供了一些公共属性和方法。就属性而言,类Device的属性中除了场景坐标、旋转角度、上升速度之外、还应有ID,Device.preObject、Device.subObject等属性。其中ID是用来标志物体类型,由于本发明中动画涉及的物体类型较多,利用ID可以方便查找物体的类型。而属性Device.preObject、Device.subObject可以为查找某物体的前后物体带来便利。另外,类Device还应该具有公共方法,钻井中的物体都具有旋转、移动等动作,因此方法中必定有移动方法MoveDevice()和旋转方法RotateDevice()。鉴于所有物体都要以三维图形在计算机上显示出来,因此还应有物体的绘制方法,即Draw()。

    (2)粒子类

    钻井模拟器压力控制模拟中模拟微观事物具有多样性,因此设计了粒子类,在系统设计中把粒子系统抽象为一个类,命名为Particle。与Device相同Particle是为完成粒子模拟功能中所设计的父类。父类Particle的属性有粒子分别在XYZ坐标轴上的位置以及坐标轴上的位置增量,还有粒子生命状态。而Particle的子类有Fire类、Gas类和Blowout类。Fire类主要用于火焰燃烧效果的模拟;Gas类主要用于正常钻进过程中钻到气层时,气体溢出的模拟;Blowout类主要用于发生井喷时,井口泥浆喷涌的效果模拟。

    (3)Shader管理类

    Shader的使用是通过调用OpenGL API中的函数,这个函数让Shader的应用可以直接与OpenGL驱动相连接,它是存储一个OpenGL着色片段不可缺少的数据结构。这些数据结构被称为着色对象(Shader Object)。在一个着色对象创建好后,应用程序通过调用glShaderSourceARB把着色代码提供给着色对象。为了有效的使用和管理编写好的Shader,在设计过程中专门设计了GLShader类。这个类主要用来设定Shader对象,读入编写好的Vertex文件和Fragment文件,读入参数类型和参数值,读入纹理信息,Shader的使用和删除等。GLShader类的设计能使Shader的使用更为有效,提高了Shader使用的灵活性和可重用性。

    视景仿真控制程序主要完成以下工作:

    (1)场景初始化

    一个新的作业开始前,图形处理单元在接收到钻井模拟器压力控制模拟控制程序发出的作业指令后初始化当前场景,例如:钻井平台上各操作部件当前的数量、状态以及位置。

    (2)工艺动画控制

    将与钻井模拟器压力控制的控制程序相互通信得到的参数及数据进行处理,体现出钻台上各种控制系统的运动参数、具体动作、视图选择(包括上视角、井下视角、防喷器视角、多视图显示等)等。

    (3)碰撞处理

    在三维图形的运动仿真过程中是不允许有“穿墙而过”的状况发生的,因此要对运动物体作碰撞检测的处理。为了遵循模型运动的真实感,视景仿真控制程序包括碰撞的检测与处理部分。

    (4)特效渲染

    实现对火焰、气泡、液体喷涌效果的模拟,使用GLSL实现电影级的光照效果,可以分别模拟白天,夜晚,探照灯等光照模式,大大地提高了图形效果和真实感。

    本发明的有益效果是:提供了钻井模拟器压力控制的模拟方法,即参照钻井作业现场的实际操作流程,对压力控制的工作原理和操作方法进行逼真模拟,增强教学培训的现场感,缩短培训周期、提高培训效果、降低培训成本。

    【附图说明】

    图1钻井模拟器的组成结构图

    图2钻井模拟器压力控制模拟控制程序组成框图

    图3钻井模拟器压力控制模拟控制程序流程图

    图4钻井模拟器压力控制模拟控制程序与前端设备通信框图

    图5司钻法压井操作流程图

    图6工程师法压井操作流程图

    图7超重泥浆司钻法压井操作流程图

    图8图形处理单元的组成框图

    图9设备类及其部分子类的结构

    图10粒子类及其部分子类的结构

    图11Shader在OPENGL中的执行过程

    图12设备类、粒子类和Shader管理类之间的调用关系

    【具体实施方式】

    下面通过实施例进一步描述本发明的技术方案,本发明不限于所述实施例。

    为了实施本发明所述的技术方案,构建了一个钻井模拟系统,如图1,它包括主控计算机、图形处理计算机、前端设备和投影设备,主控计算机和图形处理单元通过TCP/IP互联,前端设备与主控计算机通过Siemens PPI协议互联,图形处理计算机连接投影设备,主控计算机上运行压力控制模拟控制程序,图形计算机运行图形处理单元,前端设备包括节流管汇、高压管汇、防喷器控制台、阻流器控制台、远程控制台和司钻控制台,投影设备包括两台投影仪和一个大尺寸屏幕。

    如图2是钻井模拟器压力控制模拟控制程序的组成,钻井模拟器压力控制模拟控制程序包括与前端硬件设备及图形处理单元通信的通信模块和压力控制模拟模块,与前端硬件设备通信是为了实时获得硬件设备状态,然后在内部通过相关数学模型,模拟钻井模拟器毅力控制,钻井模拟器压力控制模拟包括司钻法压井模拟、工程师法压井模拟和超重泥浆司钻法压井模拟。进而通过TCP/IP协议向图形处理单元发送控制命令,驱动图形处理单元产生与硬件设备操作同步的动画过程;并将信号反馈给前端硬件,使前端仪表参数的显示符合现场情况。

    如图3,钻井模拟器压力控制模拟方法,钻井模拟器压力控制模拟控制程序,按照以下步骤实现压力控制模拟:

    (1)读取前端设备的状态参数和操作指令;

    (2)根据获得的设备状态参数和操作指令类别以及预先建立的钻井模拟器压力控制模型,计算出实现压力控制模拟动画的作业数据;

    (3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元根据此数据完成压力控制的动画展现;

    (4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;

    (5)重复前述步骤(1)~(4)。

    由于前端设备采用PLC进行控制和处理,因此本发明采用通用的OPC技术实现通信过程。

    OPC服务器使用西门子公司提供的S7-200 OPC Server。并且在西门子公司提供的PCAccess软件中建立OPC服务器和需要访问的PLC硬件系统存储单元的映射关系。

    在钻井模拟器压力控制模拟的控制程序中实现OPC客户端功能。利用支持C++Builder的IOCOMP组件能够轻松建立客户端和服务器的通信过程。

    如图4是钻井模拟器压力控制模拟控制程序与前端设备通信框图。该通信框图包括:OPC客户机,OPC服务器和PLC系统,其中OPC客户机通过OPC接口与OPC服务器连接,OPC服务器通过PPI电缆与PLC系统连接。

    操作指令类别主要包括:司钻法压井指令、工程师法压井指令和超重泥浆司钻法压井指令。

    如图5是司钻法压井操作流程图,其工作流程大致可描述为:开始本次作业,设置泥浆泵冲数,排出受侵污泥浆,判断是否排完,如果没有排完则返回排出受侵污泥浆;如果已经排完,则加大泥浆密度,重泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    如图6是工程师法压井操作流程图,其工作流程大致可描述为:开始本次作业,设置泥浆泵冲数,加大泥浆密度,然后重泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    如图7是超重泥浆司钻法压井操作流程图,其工作流程大致可描述为:开始本次作业,准备超重泥浆,泵入超重泥浆,判断循环是否完毕,如果循环已完,然后调整泥浆密度,压井泥浆压井,判断是否压井完毕,如果没有则返回继续压井,如果已经压井完毕则结束本次作业。

    本发明所述的压力控制模拟必须建立在严格的数学模型基础上,这样才能使钻井模拟器压力控制模拟的各种参数符合实际现场的情况,才能达到良好的培训效果。

    本发明所采用的钻井模拟器压力控制模型包括波动压力计算模型、井底压力平衡判别模型、dc指数地层压力监测模型和井口可控最大套压值模型。模型使用的设备状态参数包括初始状态参数和动态参数,初始状态参数包括运动管柱内径、运动管长度、雷诺数、井眼直径、钻柱外径、钻柱内径、井深、起钻柱起出长度、井眼半径、钻杆外径和钻杆内径;动态参数包括环空平均流速V1、考虑平衡安全的地层压力附加值Pe、环空压降PSW、流动摩阻系数f、稠度系数K、流性指数n、塑性粘度η、泥浆动切力τo、泥浆液柱压力Pm、钻井液密度、正常地层压力当量泥浆密度ρm、钻井液密度、正常地层压力当量泥浆密度ρm、实际使用的泥浆密度ρ、钻压P、转速N、机械钻速V、井底有效压力Pb和地层有效压力PP。

    如图8是图形处理单元的组成框图,它包括一个全三维实体模型库、图形绘制程序和视景仿真控制程序。

    建立一个完美的模型,是钻井模拟系统真实感体现最为重要的元素,钻井模拟系统中虚拟环境的实现过程基本分为三步:第一步是几何建模,主要包括用多边形或三角形构成对象的立体外形;第二步是物理建模,主要包括对几何建模的结果进行纹理、颜色、光照等处理;第三步是具体程序控制,主要通过运动建模的方法实现虚拟环境下的物体运动模拟。前两步是虚拟场景的构建过程,第三步则是运动建模。

    几何建模是开发虚拟现实系统中最基本、最重要的工作之一。虚拟环境中的几何模型是物体几何信息的表示,涉及表示几何信息的数据结构、相关的构造与操纵该数据结构的算法。虚拟环境中的每个物体包含形状和外观两个方面。物体的形状由构造物体的各个多边形、三角形和顶点来确定,物体的外观则由表面纹理、颜色、光照系数等来决定。因此,用于存储虚拟环境中几何模型的模型文件应该能够提供以上信息,同时还要满足虚拟建模技术的三个常用指标:交互显示能力、交互式操纵能力、易于构造的能力对虚拟对象模型的要求。

    几何建模技术分为体素和结构两个方面。体素用来构造物体的原子单位,体素的选取决定了建模系统所能构造的对象范围。结构用来决定体素如何组成新的对象。

    物理建模指的是虚拟对象的质量、重量、惯性、表面纹理、硬度、变形模式等特征的建模,这些特征与几何建模和行为法则相融合,形成一个更具真实感的虚拟环境。物理建模是虚拟现实系统中比较高层次的建模,它需要物理学与计算机图形学配合,涉及到力的反馈问题,主要是重量建模、表面形变和软硬度等物体属性的体现。

    在虚拟环境中,物体的特性还涉及到位置改变、碰撞、捕获、缩放和表面变形等,仅仅建立静态三位几何体对虚拟现实系统是不够的。

    对象位置包括对象的移动、旋转和缩放。在虚拟现实系统中,不仅要涉及到绝对的坐标系统,还要涉及到每个对象相对的坐标系统。碰撞检测是VR技术的重要技术,它在运动建模中经常使用,例如虚拟环境中,人不能穿墙而过。碰撞检测技术是虚拟环境中对象与对象之间碰撞的一种识别技术。为了节省系统开销,本发明采用矩形边界检测方法。

    本实施例中用三维建模工具3ds max建立所有设备的模型,将3ds max所绘制的模型导入到实时3D环境虚拟实境编辑软件Virtools中,根据设备的物理特性配置Virtools中模型的所有特性,使用Virtools控制模型的运动和显示,在初始状态下可以实现全场景的漫游,搭建Cave环境实现全三维仿真。

    图形绘制程序的设计是面向对象的,本发明将钻井模拟器压力控制中涉及到的对象分为三类:设备类图、粒子类和shader管理类。

    系统中涉及到动画的物体具有一些相同的特点,例如每个物体都具有场景坐标、旋转角度等特点,于是就可以将各个类中的相同属性和方法抽象出来集成为类Device。类Device是一个父类,它向子类提供了一些公共属性和方法。就属性而言,类Device的属性中除了场景坐标、旋转角度、上升速度之外、还应有ID,Device.preObject、Device.subObject等属性。其中ID是用来标志物体类型,由于本发明中图形单元中动画涉及的物体类型较多,利用ID可以方便查找物体的类型。而属性Device.preObject、Device.subObject可以为查找某物体的前后物体带来便利。另外,类Device还应该具有公共方法,起钻中的物体都具有旋转、移动等动作,因此方法中必定有移动方法MoveDevice()和旋转方法RotateDevice()。鉴于所有物体都要以三维图形在计算机上显示出来,因此还应有物体的绘制方法,即Draw()。根据分析,从父类派生下来的是大钩、液压大钳等子类,它们不仅继承了父类的公有属性和方法,还具有自己的属性和方法。例如大钩就有SetState()这个方法以设置大钩当前的状态。

    图9是钻井模拟器压力控制过程中涉及到的设备类及其部分子类。

    由于系统模拟微观事物的多样性,粒子系统的使用在整个系统中也有较高的重用性,因此设计了粒子类。

    图10展示了粒子类及其子类。在系统设计中把粒子系统抽象为一个类,命名为Particle。与Device相同Particle是为完成粒子模拟功能中所设计的父类。父类Particle的属性有粒子分别在XYZ坐标轴上的位置以及坐标轴上的位置增量,还有粒子生命状态。而Particle的子类有Fire类、Gas类和Blowout类。Fire类主要用于火焰燃烧效果的模拟;Gas类主要用于正常钻进过程中钻到气层时,气体溢出的模拟;Blowout类主要用于发生井喷时,井口泥浆喷涌的效果模拟。这些子类还分别有自己的属性,例如:粒子大小、大小增量、颜色分量R/G/B等。

    Particle类的方法主要是Init()、Draw(),用于对粒子的初始化和绘制,而子类中引入了继承结构中的多态性概念。由于Fire、Gas、Blowout粒子系统采用的数学模型不同,所以各自的绘制方法都不尽相同,每个子类都有自己的初始化状态和绘制方法。除了共有的Init()、Draw()方法,每个子类有自己的私有方法,例如:Fire类就有计算尾焰、向量计算等方法。

    OpenGL是目前跨平台最广泛的三维图形引擎,它在真实感图形制作上的优秀性能使之成为诸大公司的图形标准,所以OpenGL成为新一代的三维图形工业标准。

    图11说明了Shader在OpenGL中的执行过程,Shader的使用是通过调用OpenGL API中的函数。OpenGL提供了一个新的函数glCreateShaderObjectARB,这个函数让Shader的应用可以直接与OpenGL驱动相连接,它是存储一个OpenGL着色片段不可缺少的数据结构。这些数据结构被称为着色对象(Shader Object)。在一个着色对象创建好后,应用程序通过调用glShaderSourceARB把着色代码提供给着色对象。

    为了有效的使用和管理编写好的Shader,在设计过程中专门设计了GLShader类。这个类主要用来设定Shader对象,读入编写好的Vertex文件和Fragment文件,读入参数类型和参数值,读入纹理信息,Shader的使用和删除等。GLShader类的设计能使Shader的使用更为有效,提高了Shader使用的灵活性和可重用性。

    由于父类Device和Particle所有的属性和方法都是公有的,因此子类可以调用父类的所有方法。鉴于子类较多,这里只给出父类间的调用关系,如图12所示。面向对象的设计方法非常灵活,系统可以根据需要方便的添加新的类、属性和方法,对程序的扩展是非常有利的。

    视景仿真控制程序主要负责与钻井模拟器压力控制模拟控制程序的通讯,获取实时动画的指令和数据,对图形绘制程序发出作业指令完成实时动画的绘制,由于在三维图形的运动仿真过程中是不允许有“穿墙而过”的状况发生的,所以视景仿真控制程序要对运动物体作碰撞检测与处理,为了提高图形效果和真实感,采用渲染特效,模拟火焰、气泡、液体喷涌效果,还使用GLSL实现电影级的光照效果,可以分别模拟白天,夜晚,探照灯等光照模式。

    在作业开始后,由钻井模拟器压力控制程序发出指令让视角固定,也可以通过钻井模拟器压力控制模拟控制程序发出指令让图形分成三个部分进行分屏显示,钻井模拟器压力控制模拟控制程序接收来自前端操作者发出的各种指令及参数信息,并行数据处理。然后通过TCP/IP协议将数据处理后得到的与图形有关的数据发向图形处理单元,这些数据包括:起下钻速度、转盘转速、控制图形各种动作的信号;压井中的钻井液颜色、气柱长度等,图形处理单元得到数据后,做出具体反映,体现出钻台上各种控制系统的运动参数、具体动作、视图选择(包括上视角、井下视角、防喷器视角、多视图显示等)等,并将一些设备状态参数和图形绘制完成标记反馈回压力控制模拟控制程序。

    图形处理单元与钻井模拟器压力控制模拟控制程序之间通信的数据格式如下:

    A钻井模拟器压力控制程序发送给图形处理单元的初始化及作业数据格式:

    union JSSendTUData

    {

        unsigned char buff[100];

        struct

        {

            unsigned short state;//0:表示初始数据,1:表示作业数据

            unsigned short d1;//表示动作指令

            float d2;//在初始状态下表示吊环下平面离钻台平面高度,在作业状态下表示物体上下的速度(单位:m/s,可正可负)

            float d3;//在初始状态下表示井深,在作业状态下表示顶驱旋转速度(单位:r/min,可正可负)

            unsigned short d4;//在初始状态下表示井下钻杆数量(单位:根),在作业状态下表示吊环前/后倾斜角度(单位:度,可正可负)

            unsigned short d5;//在初始状态下表示大钩下挂钻杆数量(注意:如果d5有值,则d4的值没有意义),在作业状态下表示吊环旋转角度(单位:度,可正可负)

            unsigned short d6;//在初始状态下表示立杆盒钻杆数量(单位:柱)

            unsigned short d7;//在初始状态下表示井下钻挺数量(单位:根)

            unsigned short d8;//在初始状态下表示立杆盒钻挺数量(单位:柱)

            unsigned short d9;//在初始状态下表示本次作业是否为压井作业

            unsigned short d10;//在初始状态下表示钻杆上是否有3根打捞线

        }data;

        struct

        {

            float js;//井深

            float gaslength1;//溢流气体长度

            float gasheight1;//溢流气体底部距井底高度

            float gaslength2;//在现有的作业中无用,保留

            float gasheight2;//在现有的作业中无用,保留

            float hkkillmudlength;//环空内压井泥浆长度

            float hkkillmudheight;//环空内压井泥浆距井底高度

            float hkovermudlength;//环空内重泥浆长度

            float hkovermudheight;//环空内重泥浆距井底高度

            float zzkillmudlength;//钻柱内压井泥浆长度

            float zzkillmudheight;//钻柱内压井泥浆距井口高度

            float zzovermudlength;//钻柱内重泥浆长度

            float zzovermudheight;//钻柱内重泥浆距井口高度

            unsigned short JingKongFlag;//在初始状态下表示本次作业是否为压井作业

            undigned short fireflag;//点火标志

        }jk;

    };

    B图形处理单元发送给钻井模拟器压力控制程序的状态信息数据格式

    union JSRevTUData

    {

        unsigned char buff[20];

        struct

        {

            float d1;//大钩高度

            float d2;//大钩速度

            unsigned short d3;//每个动作绘制完成标记

            unsigned short d4;//半封状态,0表示关,1表示中间状态,2表示开

            unsigned short d5;//全封状态,0表示关,1表示中间状态,2表示开

            unsigned short d6;//环形状态,0表示关,1表示中间状态,2表示开

            unsigned short d7;//小鼠洞是否有杆,0表示无杆,1表示有杆

            unsigned short d8;//吊环下挂物体是否在钻台平面下,0表示在下面,1表示在上面

        }data;

    };

    这样就把压力控制流程中的各种动作以及钻井现场各种设备的状态、空间位置等控制信号和数据准确的发给图形处理单元,使图形能迅速、准确地反映前端操作者的各种动作,完成全三维实时钻井模拟器压力控制的模拟。

钻井模拟器压力控制模拟方法.pdf_第1页
第1页 / 共23页
钻井模拟器压力控制模拟方法.pdf_第2页
第2页 / 共23页
钻井模拟器压力控制模拟方法.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《钻井模拟器压力控制模拟方法.pdf》由会员分享,可在线阅读,更多相关《钻井模拟器压力控制模拟方法.pdf(23页珍藏版)》请在专利查询网上搜索。

本发明公开的一种钻井模拟器压力控制模拟方法,包括以下步骤:1)读取前端设备的状态参数和操作指令;2)根据设备状态参数和操作指令类别及预先建立的压力控制模型计算出实现压力控制模拟动画的作业数据;3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据;4)图形处理单元根据此数据完成压力控制的动画展现;5)按照设定的数据格式与图形处理单元通讯,交换动画状态信息。本发明基于计算机仿真。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 教育;密码术;显示;广告;印鉴


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1