杨向前,郑清华,郭 华,曹建宇,张 甫,顾继俊
(1.中海油研究总院有限责任公司,北京 100028;2.中国石油大学(北京) 机械与储运工程学院,北京 102249)
石油是人类可使用能源的重要组成部分,是世界经济发展的重要影响因素。近年来,海洋油气开发的发展步伐明显加快,已成为全球油气资源的交替区,海洋石油开采难度较大,而模块钻机项目是海上石油勘测开采的重点项目之一[1-2]。传统的模块钻机设计工作通常采用二维图纸与三维模型相结合的方式,包括结构、机械、配管、重控等13个专业协同工作,最后形成241份设计文件,设计步骤繁琐,一旦得到的模块钻机不符合工程预期,就需要大量的优化工作。为此,该文将虚拟现实技术应用于海上模块钻机设计,在数据库中储存模块钻机大量的设备信息,利用计算机减轻设计人员工作量。目前国内外将虚拟现实技术应用于工业领域多集中于仿真模拟,例如张登峰等人构建虚拟飞机维修平台[3];高国雪等人基于Unity3D仿真模拟焊接机器人的工作过程[4];Eduardo H. Tanaka等研发出了一种沉浸式虚拟变电站[5];Gonzalez-Badillo等开发了一套基于触觉反馈的虚拟现实装配系统[6];Freitag等将虚拟现实用于家具行业的设计与展示过程[7];Bruzzone等开发了用于港口交通管理和驾驶员培训的虚拟仿真系统[8]。该文基于Unity3D虚拟现实引擎开发一套海上模块钻机三维设计系统。该系统结合模块钻机设计规范,可快速完成模块钻机三维模型搭建,实时显示各设备的详细信息,具备在设计完成后批量导出标准设计文件、重量控制计算、项目文件管理、连接VR设备进行虚拟漫游等功能,将计算机图形技术、人机交互技术、仿真技术、网络技术等综合应用于海洋油气领域,既通过计算机极大地减轻了设计人员的工作量,又呈现了可供漫游检查的虚拟海洋平台环境。
海上模块钻机三维设计系统采用Unity3D引擎和C#语言作为开发平台和编程语言。软件模型数据库源文件使用SOLIDWORKS建模工具,经过3ds Max软件做贴图、渲染、轴系转化后导出FBX格式储存。软件信息数据库采用EXCEL编写关系型数据库,经过文件加密后储存。软件的外部输入文件接口和文件输出均通过C#编写脚本实现。
海上模块钻机三维设计系统由软件和硬件结合组成,软件部分主要由软件数据库、接口、智能算法、文件输出系统和虚拟漫游系统五部分构成,硬件部分分为VR头盔、手柄、定位器。系统构成如图1所示。
图1 系统构成
(1)软件部分:软件数据库包含模块钻机设备模型及其详细信息,在系统中孪生出虚拟设备;接口分为文件接口和人机交互接口,系统通过接口获取用户指令和输入的文件;算法在后台处理用户的指令,反馈到UI界面或者储存至数据库;文件输出系统通过处理数据库信息及用户输入信息,批量输出设计文件;虚拟漫游系统可连接VR硬件设备和虚拟场景,实现全方位校验模块钻机设计的合理性。
(2)硬件部分:VR头盔、控制手柄以及定位器。手柄和定位器实时监测用户运动轨迹,输入进系统中,实现设计人员在虚拟环境中检查海洋平台模块钻机,进行空间调整与优化。
针对软件预期的功能, 采用如图2所示的软件开发流程。 第一步,在开发软件前,研究模块钻机设计规范及模块钻机各设备出厂资料及设计图纸,结合专业设计规范和详细的设备信息建立软件数据库;第二步使用UGUI完成软件UI界面制作;第三步,根据软件UI,通过微软Visual Studio编写C#脚本分步进行功能开发;第四步,在Unity3D内引用System类,编写文件输出及文件管理脚本;第五步,搭建虚拟漫游系统,调试硬件与软件的数据通信;最后使用软件复现设计陆丰14-4模块钻机项目,测试所有功能。
图2 系统开发流程
模块钻机三维设计系统可供13个专业协同工作,因此设有管理员权限管理所有项目信息和登陆权限。通过UGUI的Canvas下的Dropdown、Input field、Button等组件获取用户输入,经过加密函数转换成乱码储存,新建项目的数据写入时可用#new_project、#end_project等特定字符串隔开,然后通过识别字符串刷新Dropdown的选项。调用数据时通过Dropdown控件的监听方法,解密数据并反馈于UI交互面板上。
数据库包含模块钻机的设备模型文件和数据信息,在进行模型调用时,能够关联设备的数据信息。
(1)数据库模型种类应包含模块钻机所有独立的设备,对于管线、防喷器组这类设计方案灵活度高的模块,数据库也应包含其基本组件,如管线的管道、三通、阀门等。对于任意单个模型,应包含设备的物理信息,如尺寸、重心、质量、位置等。设备的三维模型可采用工业建模软件SOLIDWORKS建立,经过3ds Max软件进行贴图、渲染后转换成FBX格式的文件存入数据库中[9-10]。Unity3D引擎采用Y轴竖直向上的左手坐标系统,为了消除模型导入后初始角不统一的问题,在3ds Max中需要进行轴系转化。详细步骤为:采用Z轴向上建模,导入3ds Max时选择Z轴向上,将所有零件模型的X轴旋转-90°,导出FBX格式时选择Y轴向上。模型库搭建过程实例(绞车)见图3。
图3 绞车模型处理过程
(2)设备数据信息包括设备号、设备名称、规格参数、干重、操作重、设计寿命等在内,可通过软件内的模型标签关联设备的数据信息,通过构建关系型数据库关联设备的其他信息。
在海上模块钻机三维设计系统中,生成模块钻机结构有两种方式。一是预制成熟的几种模块钻机结构模型,按照2.2节模型库搭建过程存入模型库中,如果所设计的模块钻机工况类似于之前的项目,可以直接从模型库中调用加以修改;二是从外部导入已经经过强度校核的钢结构模型。本节讲述如何编写接口读取SACS模型。
2.3.1 SACS模型编码规则
SACS是用于海洋平台以及一般陆地结构工程设计的结构有限元分析软件,已经发展成为当今海事结构设计分析中最广泛的软件系统[11]。要实现在其他软件里编写SACS模型的接口程序,就要研究SACS模型的编码规则。SACS常导出的文件格式是带前缀“.inp”文件和带后缀“.mac”格式文件。.inp格式文件的编码逻辑是将所有节点的位置、组关系、材料属性、截面形状一一对应,这种格式是SACS默认的保存格式。.mac格式文件主要含有节点信息、截面属性、密度等与三维模型密切相关的信息,且读取逻辑性更强,更有利于与其他软件形成接口。下面是参考SACS导入PDMS的方法[12]并继续研究后所得的SACS软件导出后缀“.mac”格式文件更详细的编码规则。
(1)NEW STRU:创建结构。
(2)MM BOR/MM DIST:表示在SACS中单位是kg或者kN;FINCH BOR/ FINCH DIST表示单位为English。
(3)NEW POND/PSACXXXX:表示新建节点的编号为XXXX,编号位数小于或等于4位,由数字或者字母组成。
(4)NPOS EX.XXX NX.XXX UX.XXX:表示新建节点的位置。E表示SACS右手坐标系的X轴正向,N表示Y轴正向,U表示Z轴正向,X、Y、Z三轴的负方向则用W、S、D表示。
(5)STRINGFROM/PSACXXXATOPSACXXXB:表示以XXXA节点为起始点,XXXB节点为终点,存在一条线段。
(6)SPREF/AISC-SPEC/H200100:表示截面属性为标准规格的窄翼缘(HN)H型钢的截面,型号为H200×100×5.5×8×13。其他型号的标准H型钢,用H+高度+宽度表示。
(7)SPREF/DESPAR-SPEC/Beam with design parameters:表示自定义截面属性,Beam表示H型钢形状,在SACS中为Wide Flange或者Plate Girder。其他截面除名称代码外都相同,如Tube表示管型钢,Box表示矩形钢,自定义截面文本行后面紧跟截面属性,如第8条。
(8)DESP 1 650.000 MM 450.000 MM 25.000 MM 50.000 MM 0.0 0.0 7.849 MM:依次表示H型钢的高度、宽度、腹板厚度、翼缘厚度、密度。
(9)NEW PANE:表示新建钢板,下一行表示钢板某一个顶点的位置;NEW PLOO的下一行表示钢板的厚度;NEW PAVE下一行表示钢板顶点的位置。SACS中只能生成三角形钢板和四边形钢板,通过判断钢板代码段中的节点数量判断是哪种类型钢板。
(10)POSS WX.XXX SX.XXX UX.XXX/POSE WX.XXX SX.XXX UX.XXX:POSS行和POSE行相连表示上一条线段的首尾节点发生了偏移,POSE行表示偏移后的起始点位置,POSE表示偏移后的终点位置。在模块钻机结构设计中,为了使甲板平铺在梁的上表面,钢结构的节点经常做偏移处理。
2.3.2 SACS文件读取
读取SACS文件的重点是研究SACS文件编码规则和写生成网格的方法。Unity3D对于复杂模型,没有自动添加网格和碰撞体功能[13],因此必须有重建SACS模型算法。Unity3D中所有模型都是由大量三角面片组成,通过代码设置网格每个三角形面片的顶点与拓扑方向,就可以得到任意形状的物体模型。图4为编写.mac格式文件接口程序的流程图,图5为此系统SACS接口读取文件的效果图。
图4 SACS接口编程逻辑
图5 读取SACS模型
软件的UI界面设计综合考虑模块钻机的布置规范和模块化设计原则,分为窗口、主菜单、目录树、子菜单、对话框、提示栏等部分,完成模块钻机设计过程中的人机交互。系统可满足模块钻机设计流程,可分模块、逐层设计。对于任意设备,系统调用数据库生成模型,并可对模型进行鼠标交互、精准移动、智能装配、任意角旋转、尺寸修改、信息显示等基本功能。软件整体的UI界面与设计模块钻机的过程如图6所示。
对于模块钻机独立的设备,可以预制模型存入数据库中,设计时只需要从数据库中调用。但是模块钻机还有很多模块的设计方案灵活度高,例如管线设计、防喷器组设计、散装罐模块设计,需要根据工况,考虑其设计压力、占位尺寸、操纵方式等因素,从而会有多种设计方案。预制这些模块的模型,工作量大且有局限性。对于这类模块,可以在系统中建立模型智能装配系统,在子系统中由这些模块的基本组成单位,设计满足技术要求的方案。以管线设计中的同轴心装配关系为例,参考图7的流程,配合UGUI的UI组件,编写监听方法调整模型相对位置实现模型智能装配。
图7 管线装配系统工作流程
模块钻机质量重心控制直接影响着钻井平台甲板的可变载荷、平台的稳性和吊装运输[14]。在完成模块钻机设计后,提取结构杆件尺寸及材料属性进行结构重心计算;通过标签脚本对已布置的设备进行分层归类,提取设备数据,计算机械设备重心位置。通过计算模块钻机的重心,调整布置方案、优化重心位置可提高平台的抗风载能力以及稳定性。
(1)结构重控计算。
以某海上模块钻机DSM结构为例,提出基于Unity3D引擎开发系统软件,实现计算模块钻机结构重心的方法。图8为DSM结构模型,可以看出该结构由大量的H型钢、矩形钢、管材、板材等焊接而成。
图8 DSM结构模型
系统在数据库中提取每一根结构杆件的尺寸参数及密度,通过组合物体重心理论公式,求解整个结构的重心位置。从SACS模型文件中提取结构杆件尺寸和密度的方法可参考2.3.1节。下面为单根杆件的理论重量计算公式:
wi=[t1(H-2t2)+2Bt2+φr2]×ρ
(1)
式中:wi为H型钢单位长度理论重量,kg/m;t1为H型钢腹板厚度,m;H为H型钢的高度,m;t2为H型钢翼缘厚度,m;B为H型钢宽度,m;φ为焊缝系数,根据工程经验一般取0.858 4;r为圆角,m;ρ为钢材密度,kg/m3。
(2)
式中:wi为矩形钢管单位长度理论重量,kg/m;H为钢材高度,m;B为钢材宽度,m;d为钢材壁厚,m;r为钢材截面内腔圆角,m;ρ为钢材密度,kg/m3。
计算其他几类杆件的理论重量后,由式(3)~式(5)编写程序计算模块钻机结构的重心坐标。
(3)
(4)
(5)
(2)机械设备重控计算。
在系统数据库中写入设备的重心位置和重量,并给模型绑定自动添加标签的脚本,使设备实时获得表示层位置的标签。由Unity.Engine.GameObject类的FindGameObjectWithTag()函数获得某类设备后,查找设备的重量属性,可由式(3)~式(5)实时计算出设备的重心位置,如与预期位置不符,可以及时调整设备布局。
模块钻机项目设计文件总量达240份左右,分为规格书、数据表、料单、图纸、设备清单、计算书、报告。海上模块钻机三维设计系统通过数据库获得文件模板,通过软件UI输入获得封面信息,通过后台算法处理数据库设备信息,获得变量,实现批量输出标准设计文件,达到避免重复性输入和减轻工作量的目的。
标准设计文件分为.docx、.xlsx、.dwg三类。以.docx格式文件为例,通过Visual Studio使用C#调用NPOI.XWPF程序包并编写程序,通过FileStream和XWPFDocument类对.docx文件进行信息填充、文本替换、页眉页脚修改等操作,写入文件结束后,调用多个dll包实现.docx文件的生成。
海上模块钻机13个专业的标准设计文件可以由平台统一管理,软件通过查找项目文件夹的路径,实时获得任意项目的完成度,并且通过调用System.Diagnostics.Process.Start()函数打开程序查看文件。
系统虚拟漫游功能分为场景漫游和连接VR设备漫游两部分。虚拟漫游功能可以呈现虚拟海洋平台环境,设计人员可以头戴VR设备,在虚拟平台中“走”到模块钻机的各个工作间,近距离检查设备的操作环境、维护空间、管线排布等。实现方法为使用Translate()函数与Rotate()函数[15]编写程序控制多个Camera运动轨迹、欧拉角、相机切换,来改变屏幕的显示图像。图9为场景漫游和连接VR设备漫游的视角。
图9 虚拟漫游
为了验证该系统的实用性并统计其解放人工工作量占比,对陆丰14-4模块钻机项目进行测试,测试结果指标主要考虑场景还原度、计算结果精确度、可减工作量、软硬件通讯情况。表1为陆丰14-4案例测试结果,结果分析如下:
表1 陆丰14-4案例测试结果
(1)通过模型数量表示场景还原度,结果为100%,表明软件模型库的完整性。
(2)通过计算结果误差表示精确度,测试误差在5%以内。误差原因是模型库中预制模型的重心位置与设备实际出厂数据有偏差,解决办法是软件具有设置模型重心位置功能。
(3)通过计算软件可输出文件占比表示其可减少的人工工作量,结果为38.17%。模块钻机项目庞大,设计文件涉及的专业种类多,文件数量大。其中可通过计算机技术编程解放劳动力的占比不足一半,目前软件可一键快速输出92份设计文件,极大地减轻了人工工作量,表示软件具有良好的应用前景和发展空间。
(4)测试过程中定位传感器、手柄与系统的通讯顺畅,VR头盔显示图像质量高,总体情况良好。
(1)海上模块钻机三维设计系统通过搭建数据库、编写多个接口与算法,实现了快速搭建模块钻机三维模型、模块钻机重心布局优化、实时更新并批量输出设计文件、提高海上平台空间利用率,有效解决了模块钻机前期设计效率低的问题。
(2)给出了SACS模型文件详细的编码规则,对开发软件读取.mac文件具有借鉴意义,并在本系统中实现增减结构杆件,以适应模块钻机设备布置空间。
(3)由复现陆丰14-4模块钻机项目的过程与结果,证实了海上模块钻机三维设计系统的实用性;通过虚拟现实技术实现在虚拟环境中仿真设计,在海洋工程领域中具有应用前景。