钻井模拟器钻具提升模拟方法

文档序号:2570443阅读:156来源:国知局
专利名称:钻井模拟器钻具提升模拟方法
技术领域
本发明涉及一种钻井模拟器钻井过程模拟方法,特别是涉及一种钻井模拟器钻具
提升模拟方法。
背景技术
石油工业是一种技术密集型行业,钻井作业是石油工业拿储量、上产能的重要手 段之一。由于石油钻井生产条件的限制和井下情况的复杂性,使石油钻井作业面临极大的 风险。为了获得更好生产效率和经济效益,减少人为事故的发生,对钻井现场操作人员和工 程技术人员的技术技能培训就显得十分重要。钻井过程的模拟处于钻井过程中的较为重要 的一部分,所以钻井模拟器钻具提升的模拟也是举足轻重。 目前,钻井操作培训主要在生产现场进行,由于各种条件和因素的制约,使培训内 容受到极大的限制,培训的系统性、培训效果及培训人员数量等都受到极大的影响。

发明内容
本发明的目的即在于克服现有技术的缺点,提供一种基于计算机仿真技术的钻井 模拟器钻具提升的模拟,该钻具提升的模拟参照钻井作业现场的实际情况,对钻具提升的 过程和操作方法进行逼真模拟,增强教学培训的现场感,縮短培训周期、提高培训效果、降 低培训成本。 本发明的目的通过以下技术方案来实现钻井模拟器钻具提升模拟方法,专门针 对钻具提升模拟的控制程序,按照以下步骤实现钻具提升模拟
(1)读取前端设备的状态参数和操作指令; (2)根据获得的设备状态参数和操作指令类别以及预先建立的钻具提升模型,计 算出实现钻具提升模拟动画的作业数据; (3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作 业数据,图形处理单元据此完成钻具提升的动画展现; (4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;
(5)重复前述步骤(1) (4)。 钻具提升模拟控制程序必须持续不断的与前端设备进行通信,以获取前端的设备 状态以及培训学员的操作过程。这样做有以下几个原因 (1)实时获取前端硬件的设备状态后,经过钻具提升模拟控制程序处理,可以驱动 图形处理单元产生与硬件设备操作同步的动画过程 (2)实时获取的前端设备状态也是钻具提升模拟控制程序中模拟数学模型的基础 数据。在钻具提升过程的模拟中,需要获得大钩提升力F、钻柱的加速度a、泥浆密度P、某 段钻柱密度、管柱提升速度VP等参数。 钻具提升模拟控制程序所计算出的钻具提升参数也需要实时传输给前端设备,所 以钻具提升模拟控制程序和前端设备之间的通信具备双向、高速和稳定的特性。
操作指令类别包括正常下钻指令、下钻遇阻指令、控制波动压力下钻指令、正常 起钻指令、起钻遇卡指令和控制抽吸压力起钻指令。 正常下钻的操作过程包括开始本次作业,起控吊卡,然后摆立柱上扣,再移开吊 卡,下放钻具,摘开吊环,判断是否下钻,如果是返回起控吊卡,否则结束本次作业。
下钻遇阻的操作过程包括开始本次作业,正常下钻,如果下钻遇阻则冲阻,划眼, 结束本次作业,如果未遇阻则返回。 控制波动压力下钻的操作过程包括开始本次作业,起控吊卡,然后摆立柱上扣, 再移开吊卡,慢速下放钻具,按下相应按钮摘开吊环,判断是否继续下钻,如果是返回开始 本次作业,否则结束本次作业。 正常起钻的操作过程包括开始本次作业,提升钻具,卸下立柱,灌注泥浆,判断是 否起钻,如果是则返回开始本次作业,否则结束本次作业。 起钻遇卡的操作过程包括开始本次作业,正常下钻,如果起钻遇卡则循环解卡, 倒划眼,结束本次作业,如果未遇卡则返回正常起钻。 控制抽吸压力起钻的操作过程包括开始本次作业,慢速提升钻具,卸下立柱,灌
注泥浆,判断是否继续起钻,如果是则返回慢速提升钻具,否则结束本次作业。 本发明所述的钻具提升模拟必须建立在严格的数学模型基础上,这样才能使钻具
提升模拟的各种参数符合实际现场的情况,才能达到良好的培训效果。 本发明所采用的钻具提升模型包括起下钻时钻柱受力模型、起下钻时提升加速度 模型、起下钻时提升速度模型、起下钻时提升钻柱长度模型和起下钻时环空流速模型。模型 使用的设备状态参数包括初始状态参数包括运动管柱内径d。、运动管柱外径di、井径D、钻 柱的加速度a钻柱的单位质量qi某段钻柱的长度li泥浆密度P、流体黏附系数K。时 间步长A t、重力加速度g、单位时间排开的流体量Qt ; 动态参数包括刹把产生的摩擦力Fm、管柱提升速度Vp、管柱内返出的液体量Qp 提升钻柱长度Lp、泥浆泵体积流量Qp、环空平均流速^、某段钻柱密度P a、钻柱在井内的摩 擦力Fk。
钻具提升模型条件的假设 (1)钻井液环空携岩能力Lc > 0. 5 ;环空钻屑浓度Ca < 0. 09 ;环空流态稳定参数 值Z《井眼稳定值Z值。 (2)所用通用钻速方程是建立在地层统计可钻性的基础上的,它反映了不均质地 层可钻性的宏观规律。只要按《钻井手册(甲方)》选出相应的钻头类型,建立准确的地层 可钻性梯度公式,纳入设计的程序,即可得出符合实际的结果。 (3)波动压力的分析与计算是建立在刚性液柱(钻井液与井内管柱为不可压縮) 理论基础上的。
(4)钻井中发生溢流时,单位时间内进入环空的泥浆和气体形成的混气泥浆是均 匀混合的。在这种假设下,我们可以将单位体积的混和泥浆中的气体含量看成是相等的。
(5)发现溢流后,应及时停泵关井。在井内压力平衡前,地层气体仍然会不断地进 入井内。因此,假设从停泵关井到关井稳定这段时间内,井内形成一段连续的纯气柱;且在 压井过程中,此连续气柱不被破坏。
(6)气体从地层中进入井筒符合达西定律。
(7)若进入井内的溢流为气体,则假设气体溢流在环空内上升时要膨胀,其膨胀过
程符合气体状态方程,且忽略气体滑脱现象。若进入井内的溢流为液体,则假设液体溢流在
上升过程中不发生膨胀和滑脱现象。
(8)电动机的输出功率按恒定值考虑。
(9)假设井内的地温梯度为一常数,则井底压力=地温梯度X井深+井口温度
(10)地层破裂压力梯度为一常数,则井内任一点的地层破裂压力为该点井深乘以 地层破裂压力梯度。
(11)通用钻速方程式在假设影响钻速的钻压指数、转速指数、水力参数、钻井液密 度差与地层宏观性等这些单因素是互不影响的独立变量的基础上建立起来的函数关系。
由于本模型主要用于模拟培训,因此,在计算时间、计算精度和和准确度发生冲突 时,原则上以保时间为主,而将过分复杂的数学模型进行了适当简化,但保证定性方面的准确性。建立的钻具提升模型包括1.起下钻时钻柱受力模型起钻a( E qJi—Ff/g) = F-g E qJi—Fm+Ff—Fk下钻a( E q山-F乂g) = g E q山-F迈-Ff-Fk式中F—大钩提升力牛顿Fm—刹把产生的摩擦力(或制动力)牛顿Ff-浮力牛顿Ff = P ( E q山)P aa—钻柱的加速度米/秒2qi—钻柱的单位质量千克/米li一某段钻柱的长度米P —泥浆密度克/厘米3Pa__某段钻柱密度克/厘米3Fk—钻柱在井内的摩擦力牛顿g—重力加速度米/秒22.起下钻时提升加速度模型起钻<formula>formula see original document page 5</formula> 下钻<formula>formula see original document page 5</formula> 3.起下钻时提升速度模型
Vpt(i) = Vpt(i—d+aAt 式中A t—计算时取时间步长,秒 Vpt (i) —t (i)时刻钻柱速度,米/秒 刹把的作用是产生一个摩擦力,以阻止井内钻柱的运动,因此,将刹把作用考虑在
0 l之间,即当刹把完全压下时,其刹把作用为l,表示将绞车刹死;当刹把完全抬起时,其
刹把作用为O,表示将刹带完全松开。这个在0 1之间的刹车作用(刹车作用就是刹带与
刹车鼓产生的摩擦力)符合绞车刹车鼓摩擦模型。 4.起下钻时提升钻柱长度模型 Lpt(i) = Vpt(i—d At+0.5aAt2 ... LP=E Lpt(i) 式中Lp—提升钻柱长度米 Lpt(i)—某计算点内提升钻柱长度米 i—取A t时间步长的计算点 5.起下钻时环空流速模型 (1)堵口管,关泵情况下巧=(^^ + ^义

= 0細785《F,)
(2)开口管关泵情况
巧=(偶+ ^棚Q
=0扁785(《-《2)&
(3)开(堵)口管关泵情况
_ A2) 40000,,
^ = (^^^ + + 2 : 式中Qt—单位时间排开的流体量升/秒 Vp—管柱提升速度米/秒 Kc-流体黏附系数(无因次量) 紊流时,Kc = 0. 5 层流时,O. 3<KC<0. 5,一般取0. 4。 VT—环空平均流速米/秒 Qp—泥浆泵体积流量升/秒 Qi—从管柱内返出的液体量升/秒 D—井径毫米 dp d。一运动管柱内外径毫米 钻具提升模拟控制程序与图形处理单元的通信通过广泛使用的TCP/IP协议进 行。钻具提升模拟控制程序将通过数据处理得到的与图形有关的数据发向图形处理单元, 这些数据包括起下钻速度和控制图形各种动作的信号等。这样就能够把钻具提升流程中 的动作以及设备的状态、空间位置等控制信号和数据准确的发给图形处理单元,使图形能迅速、准确地反映前端操作者的各种动作。钻具提升模拟控制程序与图形处理单元) 数据格式如下
0091] (1)钻具提升模拟控制程序发送给图形处理单元的初始化及作业数据格式 0092] {
l信的
unsigned short state ;〃0 :表示初始数据,l :表示作业数据 unsigned short dl ;//表示动作指令
float d2 ;〃在初始状态下表示吊环下平面离钻台平面高度,在作业状态 下表示物体上下的速度(单位m/s,可正可负)
0098] float d3 ;〃在初始状态下表示井深,在作业状态下表示顶驱旋转速度
单位r/min,可正可负) 0099] unsigned short d4 ;〃在初始状态下表示井下钻杆数量(单位根),在作
业状态下表示吊环前/后倾斜角度(单位度,可正可负)
0100] unsigned short d5 ;〃在初始状态下表示大钩下挂钻杆数量(注意如果
d5有值,则d4的值没有意义),在作业状态下表示吊环旋转角度(单位度,可正可负)
0093] 0094] 0095] 0096] 0097]
struct
0101] 0102] 0103] 0104] 0105] 0106] 0107] 0108] 0109] 0110]
unsigned short d6 unsigned short d7 unsigned short d8 unsigned short d9 unsigned short dlO
}data ;
struct
在初始状态下表示立杆盒钻杆数量(单位柱) 在初始状态下表示井下钻挺数量(单位根) 在初始状态下表示立杆盒钻挺数量(单位柱) 在初始状态下表示本次作业是否为压井作业 /在初始状态下表示钻杆上是否有3根打捞线
0112] 0113] 0114] 0115] 0116] 0117] 0118] 0119] 0120] 0121] 0122] 压井作业
float js ;〃井深 float gaslengthl float gasheightl float gaslength2 float gasheight2 float hkkillmudlength float hkkillmudheight float hkovermudlength float hkovermudheight float zzkillmudlength float zzkillmudheight float zzovermudlength float zzovermudheight
溢流气体长度 溢流气体底部距井底高度 在现有的作业中无用,保留 在现有的作业中无用,保留 环空内压井泥浆长度 环空内压井泥浆距井底高度 环空内重泥浆长度 环空内重泥浆距井底高度 钻柱内压井泥浆长度 钻柱内压井泥浆距井口高度 钻柱内重泥浆长度 钻柱内重泥浆距井口高度
unsigned short JingKongFlag ;〃在初始状态下表示本次作业是否为皿digned short fireflag ;//点火标志
(2)图形处理单元发送给钻具提升模拟控制程序的数据格式 union J"SRevTUData
float dl ;〃大钩高度 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 unsigned short d8
小鼠洞是否有杆,O表示无杆,1表示有杆 吊环下挂物体是否在钻台平面下,0表示在 }jk;
};

{
struct
{






下面,l表示 在上面 }data; }; 由于系统规模较大,设计复杂,图形绘制程序的设计是基于面向对象的。鉴于在钻 井工艺中涉及到的物体较多,并且各个物体在不同的方面有不同的特性,因此在设计之前, 应确定设计类的准则。对本发明而言,这里关心的是用物体如何展现工艺流程,所以类的设 计应该围绕物体的动画功能需要来进行,而所涉及到的图形处理单元包括图形绘制程序和 视景仿真控制程序。 其中,图形绘制程序主要包括设备类图形绘制、粒子类图形绘制、管理类图形绘制 和工艺动画绘制,视景仿真控制程序主要包括场景初始化、工艺动画控制、碰撞处理和特效 渲染。类的设计包括
(1)设备类 钻具提升模拟中涉及到动画的物体具有一些相同的特点,例如每个物体都具有 场景坐标、旋转角度等特点,就将各个类中的相同属性和方法抽象出来集成为类Device。 类Device是一个父类,它向子类提供了一些公共属性和方法。就属性而言,类Device的 属性中除了场景坐标、旋转角度、上升速度之外、还应有ID, Device, pre0bject、 Device. sub0bject等属性。其中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实现电影级的光照效果,可以
分别模拟白天,夜晚,探照灯等光照模式,大大地提高了图形效果和真实感。 本发明的有益效果是提供了钻井模拟器钻具提升的模拟方法,即参照钻井作业
现场的实际情况,对钻具提升的过程和操作方法进行逼真模拟,增强教学培训的现场感,縮
短培训周期、提高培训效果、降低培训成本。


图l钻井模拟器的组成结构2钻井模拟器钻具提升模拟控制程.序组成框3钻井模拟器钻具提升模拟控制程.序流程4钻井模拟器钻具提升模拟控制程.序与前端设备通信框5正常下钻流程6下钻遇阻流程7控制波动压力下钻流程8正常起钻流程9起钻遇卡流程IO控制抽吸压力起钻流程11图形处理单元的组成框12设备类及其部分子类的结构图13粒子类及其部分子类的结构图14Shader在0PENGL中的执行过程图15设备类、粒子类和Shader管理类之间的调用关系
具体实施例方式
下面通过实施例进一步描述本发明的技术方案,本发明不限于所述实施例。
为了实施本发明所述的技术方案,构建了一个钻井模拟系统,如图l,它包括主控 计算机、图形处理计算机、前端设备和投影设备,主控计算机和图形处理计算机通过TCP/IP 互联,前端设备与主控计算机通过Siemens PPI协议互联,图形处理计算机连接投影设备, 主控计算机上运行钻具提升模拟控制程序,图形处理计算机运行图形处理单元,前端设备 包括节流管汇、高压管汇、防喷器控制台、阻流器控制台、远程控制台和司钻控制台,投影设 备包括两台投影仪和一个大尺寸屏幕。 如图2是钻具提升模拟控制程序的组成,钻具提升模拟控制程序包括与前端硬件 设备及图形处理单元通信的通信模块和钻具提升模拟模块,与前端硬件设备通信是为了实 时获得硬件设备状态,比如在钻具提升的模拟中,就需要获得大钩提升力、钻柱的加速度、 泥浆密度、管柱提升速度和运动管柱内外径等参数,然后在内部通过相关数学模型,模拟钻 具提升过程,钻具提升模拟包括正常下钻模拟、下钻遇阻模拟、控制波动压力下钻模拟、正 常起钻模拟、起钻遇卡模拟和控制抽吸压力起钻模拟。进而通过TCP/IP协议向图形处理单 元发送控制命令,驱动图形处理单元产生与硬件设备操作同步的动画过程;并将信号反馈 给前端硬件,使前端仪表参数的显示符合现场情况。 如图3,钻井模拟器钻具提升模拟方法,钻具提升模拟控制程序,按照以下步骤实 现钻具提升模拟 (1)读取前端设备的状态参数和操作指令; (2)根据获得的设备状态参数和操作指令类别以及预先建立的钻具提升模型,计 算出实现钻具提升模拟动画的作业数据; (3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元据此完成钻具提升的动画展现; (4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;
(5)重复前述步骤(1) (4)。 由于前端设备采用PLC进行控制和处理,因此本发明采用通用OPC技术实现通信 过程。 钻井模拟系统中,0PC服务器使用西门子公司提供的S7-2000PC Server。并且在 西门子公司提供的PC Access软件中建立OPC服务器和需要访问的PLC硬件系统存储单元 的映射关系。 在钻具提升模拟控制程序中实现0 (:客户端功能。利用支持[++81111(1^的IOCOMP 组件能够轻松建立客户端和服务器的通信过程。 如图4是钻具提升模拟控制程序与前端设备通信框图。该通信框图包括OPC客 户机,OPC服务器和PLC系统,其中OPC客户机通过OPC接口与OPC服务器连接,OPC服务器 通过PPI电缆与PLC系统连接。 操作指令类别主要包括正常下钻指令、下钻遇阻指令、控制波动压力下钻指令、正 常起钻指令、起钻遇卡指令和控制抽吸压力起钻指令。 如图5是正常下钻流程图,其工作流程大致可描述为开始本次作业,起控吊卡, 然后摆立柱上扣,再移开吊卡,下放钻具,摘开吊环,判断是否下钻,如果是返回起控吊卡, 否则结束本次作业。 如图6是下钻遇阻流程图,其工作流程大致可描述为开始本次作业,正常下钻, 如果下钻遇阻则冲阻,划眼,结束本次作业,如果未遇阻则返回。 如图7是控制波动压力下钻流程图,其工作流程大致可描述为开始本次作业,起 控吊卡,然后摆立柱上扣,再移开吊卡,慢速下放钻具,按下相应按钮摘开吊环,判断是否继 续下钻,如果是返回开始本次作业,否则结束本次作业。
如图8是正常起钻流程图,其工作流程大致可描述为开始本次作业,提升钻具,
卸下立柱,灌注泥浆,判断是否起钻,如果是则返回开始本次作业,否则结束本次作业。
如图9是起钻遇卡流程图,其工作流程大致可描述为开始本次作业,正常下钻,
如果起钻遇卡则循环解卡,倒划眼,结束本次作业,如果未遇卡则返回正常起钻。
如图10是控制抽吸压力起钻流程图,其工作流程大致可描述为开始本次作业,
慢速提升钻具,卸下立柱,灌注泥浆,判断是否继续起钻,如果是则返回慢速提升钻具,否则
结束本次作业。 本发明所述的钻具提升模拟必须建立在严格的数学模型基础上,这样才能使钻具 提升模拟的各种参数符合实际现场的情况,才能达到良好的培训效果。 本发明所采用的钻具提升模型包括起下钻时钻柱受力模型、起下钻时提升加速度 模型、起下钻时提升速度模型、起下钻时提升钻柱长度模型和起下钻时环空流速模型。模型 使用的设备状态参数包括初始状态参数包括运动管柱内径d。、运动管柱外径di、井径D、钻 柱的加速度a钻柱的单位质量qi某段钻柱的长度li泥浆密度P流体黏附系数K。时间 步长A t、重力加速度g、单位时间排开的流体量Qt ; 动态参数包括刹把产生的摩擦力Fm、管柱提升速度Vp、管柱内返出的液体量Qi、 提升钻柱长度Lp、泥浆泵体积流量Qp、环空平均流速^、某段钻柱密度P a、钻柱在井内的摩擦力Fk。 如图11是图形处理单元的组成框图,它包括一个全三维实体模型库、图形绘制程 序和视景仿真控制程序。 建立一个完美的模型,是钻井模拟系统真实感体现最为重要的元素,钻井模拟系 统中虚拟环境的实现过程基本分为三步第一步是几何建模,主要包括用多边形或三角形 构成对象的立体外形;第二步是物理建模,主要包括对几何建模的结果进行纹理、颜色、光 照等处理;第三步是具体程序控制,主要通过运动建模的方法实现虚拟环境下的物体运动 模拟。前两步是虚拟场景的构建过程,第三步则是运动建模。 几何建模是开发虚拟现实系统中最基本、最重要的工作之一。虚拟环境中的几何 模型是物体几何信息的表示,涉及表示几何信息的数据结构、相关的构造与操纵该数据结 构的算法。虚拟环境中的每个物体包含形状和外观两个方面。物体的形状由构造物体的各 个多边形、三角形和顶点来确定,物体的外观则由表面纹理、颜色、光照系数等来决定。因 此,用于存储虚拟环境中几何模型的模型文件应该能够提供以上信息,同时还要满足虚拟 建模技术的三个常用指标交互显示能力、交互式操纵能力、易于构造的能力对虚拟对象模 型的要求。 几何建模技术分为体素和结构两个方面。体素用来构造物体的原子单位,体素的 选取决定了建模系统所能构造的对象范围。结构用来决定体素如何组成新的对象。
物理建模指的是虚拟对象的质量、重量、惯性、表面纹理、硬度、变形模式等特征的 建模,这些特征与几何建模和行为法则相融合,形成一个更具真实感的虚拟环境。物理建模 是虚拟现实系统中比较高层次的建模,它需要物理学与计算机图形学配合,涉及到力的反 馈问题,主要是重量建模、表面形变和软硬度等物体属性的体现。 在虚拟环境中,物体的特性还涉及到位置改变、碰撞、捕获、縮放和表面变形等,仅 仅建立静态三位几何体对虚拟现实系统是不够的。 对象位置包括对象的移动、旋转和縮放。在虚拟现实系统中,不仅要涉及到绝对的 坐标系统,还要涉及到每个对象相对的坐标系统。碰撞检测是VR技术的重要技术,它在运 动建模中经常使用,例如虚拟环境中,人不能穿墙而过。碰撞检测技术是虚拟环境中对象与 对象之间碰撞的一种识别技术。为了节省系统开销,在本发明中采用矩形边界检测方法。
本实施例中用三维建模工具3ds max建立所有设备的模型,将3ds max所绘制 的模型导入到实时3D环境虚拟实境编辑软件Virtools中,根据设备的物理特性配置 Virtools中模型的所有特性,使用Virtools控制模型的运动和显示,在初始状态下可以实 现全场景的漫游,搭建Cave环境实现全三维仿真。 图形绘制程序的设计是面向对象的,本发明将钻具提升中涉及到的对象分为三 类设备类图、粒子类和shader管理类。 钻井系统中涉及到动画的物体具有一些相同的特点,例如每个物体都具有场景坐 标、旋转角度等特点,于是就可以将各个类中的相同属性和方法抽象出来集成为类Device。 类Device是一个父类,它向子类提供了一些公共属性和方法。就属性而言,类Device的 属性中除了场景坐标、旋转角度、上升速度之外、还应有ID, Device. preObject、 Device. sub0bject等属性。其中ID是用来标志物体类型,由于本发明中图形处理单元中动画涉及 的物体类型较多,利用ID可以方便查找物体的类型。而属性Device. preObject、 Device.subObject可以为查找某物体的前后物体带来便利。另外,类Device还应该具有公共方法, 起钻中的物体都具有旋转、移动等动作,因此方法中必定有移动方法MoveDevice()和旋转 方法RotateDevice()。鉴于所有物体都要以三维图形在计算机上显示出来,因此还应有物 体的绘制方法,即Draw()。根据分析,从父类派生下来的是大钩、液压大钳等子类,它们不仅 继承了父类的公有属性和方法,还具有自己的属性和方法。例如大钩就有SetState()这个 方法以设置大钩当前的状态。 图12是钻井模拟器钻具提升模拟过程中涉及到的设备类及其部分子类。 由于系统模拟微观事物的多样性,粒子系统的使用在整个系统中也有较高的重用
性,因此设计了粒子类。 图13展示了粒子类及其子类。在系统设计中把粒子系统抽象为一个类,命名为 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成为新一代的三维图形工业标准。 图14说明了 Shader在0penGL中的执行过程,Shader的使用是通过调用0penGL
API中的函数。OpenGL提供了一个新的函数glCreateShaderObjectARB,这个函数让Shader
的应用可以直接与0penGL驱动相连接,它是存储一个0penGL着色片段不可缺少的数据结
构。这些数据结构被称为着色对象(Shader 0bject)。在一个着色对象创建好后,应用程序
通过调用glShaderSourceARB把着色代码提供给着色对象。 为了有效的使用和管理编写好的Shader,在设计过程中专门设计了 GLShader类。 这个类主要用来设定Shader对象,读入编写好的Vertex文件和Fragment文件,读入参数 类型和参数值,读入纹理信息,Shader的使用和删除等。GLShader类的设计能使Shader的 使用更为有效,提高了 Shader使用的灵活性和可重用性。 由于父类Device和Particle所有的属性和方法都是公有的,因此子类可以调用 父类的所有方法。鉴于子类较多,这里只给出父类间的调用关系,如图15所示。面向对象 的设计方法非常灵活,系统可以根据需要方便的添加新的类、属性和方法,对程序的扩展是 非常有利的。 视景仿真控制程序主要负责与钻具提升模拟控制程序通讯,获取实时动画的指令 和数据,对图形绘制程序发出作业指令完成实时动画的绘制,由于在三维图形的运动仿真 过程中是不允许有"穿墙而过"的状况发生的,所以视景仿真控制程序要对运动物体作碰撞检测与处理,为了提高图形效果和真实感,采用渲染特效,模拟火焰、气泡、液体喷涌效果, 还使用GLSL实现电影级的光照效果,可以分别模拟白天,夜晚,探照灯等光照模式。
在作业开始后,由钻具提升模拟控制程序发出指令让视角固定,也可以通过钻具 提升模拟控制程序发出指令让图形分成三个部分进行分屏显示,钻具提升模拟控制程序接 收来自前端操作者发出的各种指令及参数信息,并行数据处理。然后通过TCP/IP协议将数 据处理后得到的与图形有关的数据发向图形处理单元,这些数据包括起下钻速度、转盘转 速、控制图形各种动作的信号;压井中的钻井液颜色、气柱长度等,图形处理单元得到数据 后,做出具体反映,体现出钻台上各种控制系统的运动参数、具体动作、视图选择(包括上 视角、井下视角、防喷器视角、多视图显示等)等,并将一些设备状态参数和图形绘制完成 标记反馈回钻具提升模拟控制程序。
图形处理单元与钻具提升模拟控制程序之间通信的数据格式如下
钻具提升模拟控制程序发送给图形处理单元的初始化及作业数据格式
union JSSendTUData
{ unsigned char buff[100]; struct
{ unsigned short state ;〃0 :表示初始数据,1 :表示作业数据 unsigned short dl ;〃表示动作指令 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 dlO } data ; struct
{ float js ;〃井深 float gaslengthl ;/
在初始状态下表示立杆盒钻杆数量(单位柱) 在初始状态下表示井下钻挺数量(单位根) 在初始状态下表示立杆盒钻挺数量(单位柱) 在初始状态下表示本次作业是否为压井作业 /在初始状态下表示钻杆上是否有3根打捞线
溢流气体长度 14
float gasheightl ;〃溢流气体底部距井底高度 float gaslength2 ;〃在现有的作业中无用,保留 float gasheight2 ;〃在现有的作业中无用,保留 float hkkillmudlength ;〃环空内压井泥桨长度 float hkkillmudheight ;〃环空内压井泥浆距井底高度 float hkove丽dlength ;〃环空内重泥桨长度 float hkovermudheight ;〃环空内重泥桨距井底高度 float zzkillmudlength ;〃钻柱内压井泥浆长度 float zzkillmudheight ;〃钻柱内压井泥浆距井口高度 float zzovermudlength ;//钻柱内重泥奖长度 float zzovermudheight ;〃钻柱内重泥桨距井口高度 unsigned short JingKongFlag ;〃在初始状态下表示本次作业是否为
压井作业 皿digned short fireflag ;//点火标志
} jk ;
}; 图形处理单元发送给钻具提升模拟控制程序的状态信息数据格式 union JSRevTUData {unsigned char buff[20] 5structfloat dl ;〃大钩高度float d2 ;〃大钩速度unsigned short d3 〃/每个动作绘制完成标记unsigned short d4 〃/半封状态,O表示关,l表示中间状态,2表示开unsigned short d5 〃/全封状态,0表示关,1表示中间状态,2表示开unsigned short d6 〃/环形状态,O表示关,l表示中间状态,2表示开unsigned short d7 〃/小鼠洞是否有杆,O表示无杆,1表示有杆unsigned short d8 ;//吊环下挂物体是否在钻台平面下,o表示在下面,
1表示在上面}data 5 }; 这样就把钻井工艺流程中的钻具提升动作以及钻井现场各种设备的状态、空间位 置等控制信号和数据准确的发给图处理单元,使图形能迅速、准确地反映前端操作者的动 作,完成全三维实时钻具提升的模拟。
权利要求
钻井模拟器钻具提升模拟方法,其特征是专门针对钻井过程中钻具提升模拟的控制程序,按照以下步骤实现钻具提升模拟(1)读取前端设备的状态参数和操作指令;(2)根据获得的设备状态参数和操作指令类别以及预先建立的钻具提升模型,计算出实现钻具提升模拟动画的作业数据;(3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元据此完成钻具提升的动画展现;(4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;(5)重复前述步骤(1)~(4)。
2. 根据权利要求1所述的钻井模拟器钻具提升模拟方法,其特征是所述的设备状态参数包括初始状态参数和动态参数,其中,初始状态参数包括运动管柱内径d。、运动管柱外径di、井径D、钻柱的加速度a钻柱的单位质量qi某段钻柱的长度li泥浆密度P、流体黏附系数K。时间步长At、重力加速度g、单位时间排开的流体量Qt ;动态参数包括刹把产生的摩擦力Fm、管柱提升速度Vp、管柱内返出的液体量Qi、提升钻柱长度Lp、泥浆泵体积流量Qp、环空平均流速、、某段钻柱密度P a、钻柱在井内的摩擦力Fk。
3. 根据权利要求1所述的钻井模拟器钻具提升模拟方法,其特征是所述的操作指令包括正常下钻指令、下钻遇阻指令、控制波动压力下钻指令、正常起钻指令、起钻遇卡指令和控制抽吸压力起钻指令。
4. 根据权利要求1所述的钻井模拟器钻具提升模拟方法,其特征是所述钻具提升模型包括起下钻时钻柱受力模型、起下钻时提升加速度模型、起下钻时提升速度模型、起下钻时提升钻柱长度模型和起下钻时环空流速模型。
5. 根据权利要求1所述的钻井模拟器钻具提升模拟方法,其特征是所述的数据格式包括初始化数据格式、作业数据格式和动画状态信息格式。
6. 根据权利要求1所述的钻井模拟器钻具提升模拟方法,其特征是所述的图形处理单元包括图形绘制程序和视景仿真控制程序,其中,图形绘制程序包括设备类图形绘制、粒子类图形绘制、管理类图形绘制和工艺动画绘制,视景仿真控制程序包括工艺动画控制、碰撞处理、特效渲染和参数显示。
全文摘要
本发明公开了一种钻井模拟器钻具提升模拟方法,它包括以下步骤(1)读取前端设备的状态参数和操作指令;(2)根据获得的设备状态参数和操作指令类别以及预先建立的钻具提升模型,计算出实现钻具提升模拟动画的作业数据;(3)按照设定的数据格式与专门设置的图形处理单元通讯,交换初始化数据和作业数据,图形处理单元据此完成钻具提升的动画展现;(4)按照设定的数据格式与图形处理单元通讯,交换动画状态信息;(5)重复前述步骤(1)~(4)。本发明基于计算机仿真技术,参照钻井现场实际操作流程,对钻具提升过程和操作方法进行逼真模拟,增强了教学培训的现场感,缩短了培训周期、提高了培训效果、降低了培训成本。
文档编号G09B25/02GK101710465SQ200910263419
公开日2010年5月19日 申请日期2009年12月16日 优先权日2009年12月16日
发明者梅大成, 胡卫东, 赵刚, 郑巧, 陈利学, 龚捷 申请人:西南石油大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1