更全的杂志信息网

随钻测井仪器测试软件设计与实现

更新时间:2009-03-28

0 引 言

近年来,水平井技术是石油公司实现“少井高产”目标的主要技术手段,能够提高采收率、减少生产占地及降低环境污染。面对水平井勘探开发所面临的技术挑战,在工程方面需要解决水平井施工,确保钻进轨迹和储层钻遇率;在储层开发中需要对复杂和困难井段获取测井资料,实现地层评价应用。随钻测井技术针对施工和评价难题,通过与钻具组合的测井仪器实时测量地层参数和工程参数,为钻井施工实时提供决策信息。随着方法和仪器的深入研究,国外公司已经实现了各种电缆测井仪器随钻化,国内近几年也逐步形成随钻测井系列。中国石油集团测井有限公司在国家“十三五”油气重大专项的支持下,已经研究形成了随钻常规和随钻成像两个测井系列,基本实现现场应用[1]。面对越来越多的随钻测井仪器投入应用,急需完善仪器的室内测试方法、规范仪器的通信接口和协议。本文结合仪器研制调试和现场应用的实际,开发了一套仪器测试软件,在规范仪器通信协议基础上,实现各种仪器在室内调试、刻度标定、现场作业配置和测井数据读取等功能。

1 功能设计

1.1 系统架构与数据流系统架构按照顶层设计、业务主导的原则,坚持松耦合、高内聚对各功能模块分层划分,形成现场数据采集系统和仪器测试系统[2]。现场数据采集系统GLAS完成现场泥浆波数据的采集、分析与数据解码,根据解码得到的测量数据和刻度报告中的刻度系数计算出测井结果;在完成实时数据库存储的同时实时显示数值和曲线,并通过互联网方式将数据推送到远程解释评价数据库,使用解释导向软件实现地层分析或指导实时钻井。仪器测试系统LwdTest实现在仪器研发制造和维修过程中的测试,通过刻度标定将刻度数据存入测试数据库,为测井过程提供刻度系数,用于实现测量值与工程值间的转换;利用通信端口实现对仪器的内存管理和数据读写,并将数据实时绘制成曲线和打印输出;通过仪器测试形成的测试数据反映出仪器的工作状态,为后期仪器的维护、使用跟踪提供数据支撑。数据流分为测井数据和仪器数据。测井数据是现场数据采集系统获得的随钻测井仪器测量数据,都实时存入测井数据库中,包括两种参数:一是反映地层岩性、孔隙度和饱和度的地质参数;二是反映井况的井斜、方位和工具面等工程参数。仪器数据是仪器测试软件对仪器进行测试和刻度过程中形成的参数,存入测试数据库中,包括反映仪器工作状态的测试参数和反映测量特性与地层响应关系的刻度系数。两种数据库通过标准接口实现数据互访。系统架构和数据流如图1所示。

  

图1 系统架构与数据流

  

图2 系统功能模块划分

1.2 功能模块设计测试软件需要实现对仪器参数管理、刻度与标定、测试、调试、测井施工配置等功能,同时能够跟踪记录各功能操作并形成日志,能够简洁、直观地显示测试结果。(1) 参数管理模块 参数包括仪器自身参数(刻度系数、数据处理校正系数)、测试配置参数(时钟信息、测试延迟与间隔),以及仪器使用信息(井名、井深、作业时间)。该模块实现上述参数的设置与查询、发送给应用模块,参数的输入(手动或者文件导入)与输出。(2) 刻度标定模块 作为仪器刻度过程控制、刻度算法载入、刻度系数计算、刻度系数下发至仪器主控模块。按照仪器分为伽马刻度、电阻率刻度、中子孔隙度刻度、密度刻度、井径刻度、伽马成像刻度、密度成像刻度等子模块,将各种仪器在刻度过程中采集的数据按时间方式绘制成曲线图,同时将刻度结果按照测井作业标准格式中的刻度报告提供给操作员和作业小队。(3) 功能测试模块 用于测试仪器工作是否正常,测试数据是否准确,包括对仪器进行单板、集成测试,测试数据绘制成曲线图并形成测试结果报告。测试报告根据不同仪器测量参数标准和误差信息,给出测试结论,供用户参考;测试曲线直观反映出测试过程中仪器的测量参数变化。(4) 仪器测井模块 用于对仪器测井作业参数设置,查询和设置仪器工作模式,在测井模式下完成通信端口参数设置和存储器管理。通信端口设置包括串口不同传输波特率设置与查询,存储器管理实现对存储器中数据读取与清空、存储空间查询。1.3 数据结构定义为了实现随钻测井仪器的测试和数据通信[4],软件定义了满足数据传输的结构体,包括发送结构体、接收结构体、标识结构体;定义了满足数据通信的常量和变量,其中常量包括独立视个数NUMVIEWS、通信设置数据位8、停止位1、奇校验位、5 ms定时器间隔;变量包括独立视名称数组、视指针、串口类变量、绘图类变量。以发送结构体为例介绍数据结构定义。

第二日出殡,换上妈妈和姨妈熬夜赶制出来的镶着白花的鞋,披上小小的丧服,跟在大人后面又回到了令我胆寒的堂屋。大人们一个个上前去和老太太告别,他们有的紧紧地再次搂住那静静躺着的躯体,有的则轻轻印下最后一吻。孩子们却只敢围着那张床绕了大大的一圈,这是一种不可抗拒的仪式。

 

根据随钻仪器测量参数的种类,按照仪器类别软件设计了9种不同数据结构,满足居中伽马、伽马成像、钻井多参数、感应电阻率、电磁波电阻率、侧向电阻率、可控源中子、补偿密度、密度成像等仪器测试、刻度、测井数据的存储要求[5]。表1以伽马成像为例介绍仪器参数结构设计。

 

表1 伽马成像仪器参数结构

  

序号数据名称数据代码格式数据类型1北向伽马计数m_fGR_N%.2ffloat2南向伽马计数m_fGR_S%.2ffloat3东向伽马计数m_fGR_E%.2ffloat4西向伽马计数m_fGR_W%.2ffloat5伽马计数平均值m_fGR_A%.2ffloat6工具面m_fTF%.2ffloat7东北扇区数据m_fSection_NE%.2ffloat8西北扇区数据m_fSection_NW%.2ffloat

 

续表1

  

序号数据名称数据代码格式数据类型9东南扇区数据m_fSection_SE%.2ffloat10西南扇区数据m_fSection_SW%.2ffloat11东北Bin数据m_fBin_NE[4]%.2ffloat12西北Bin数据m_fBin_NW[4]%.2ffloat13东南Bin数据m_fBin_SE[4]%.2ffloat14东南Bin数据m_fBin_SW[4]%.2ffloat15温度m_fTemp%.2ffloat16震动数据m_fVibrate[80]%.2ffloat17钻速m_fRotate%.2ffloat

2 软件实现

2.2 CFormView实现浮动视窗实现各种仪器测试的对话框模板是以CFormView作为基类的派生类,从而继承了基类的浮动、停靠和嵌套功能和属性。在浮动视窗实现中,创建对话框模板生成CFormView类,创建CDockablePane的派生类CSolutionWnd,定义类的成员变量。浮动视窗截图如图5所示。代码实现:{ … RECT rect; GetClientRect(&rect); m_pFormView->Create(NULL, NULL, WS_CHILD|WS_VISIBLE, rect, this, 123, NULL); …} ……{ … CRect rect; GetClientRect(rect); m_StaticHtmlView.Create(_T("这个停靠
浮动窗口 "),WS_CHILD|WS_VISIBLE,rect,this,IDC_HTMLVIEW);…}2.3 曲线与列表实现结果输出软件运行结果输出是为操作人员提供结果的方式,为用户提供多种形式的结果输出是软件实现的关键[8]。结合随钻测井仪器测试结果的应用实际,采用测试数据列表与曲线绘图两种输出方式(如图6所示),既提供了详细测试数据,又满足用户直观显示测试结果的需求 [9]

  

图3 软件流程图

  

图4 多视窗与操作导航截图

2.1 多视窗实现测试操作为了满足软件中多种仪器的测试功能,采用单文档模式框架结构,结合多视窗设计实现测试时对不同仪器的独立操作。在打开主视图时,可以通过旁边导航窗口对各功能模块的操作进行导航[7] ,并快速切换到其他视窗。在多视窗实现中,左边导航栏引导用户操作,中间视窗进行数据处理,右边浮动隐藏视窗作为处理输出及参数管理。多视窗与操作导航截图如图4所示。 多视窗实现代码:CView* pActiveView=GetActiveView(); m_ViewName.RemoveAll(); m_ViewName.Add(_T("……")); m_pViews[0]=(CView*) new CTestLogView; …… CRect rect(200, 50,800, 600); for (int nView=0; nViewCreate (NULL, NULL, (AFX_WS_DEFAULT_VIEW & ~WS_VISIBLE), rect, this, AFX_IDW_PANE_FIRST + nView, &newContext); m_pViews [nView]->OnInitialUpdate(); }Outlook导航实现代码:CView* pNewView=m_pViews[nIndex]; if (!pNewView) return; CView* pActiveView =GetActiveView();…… UINT temp=::GetWindowLong(pActiveView->m_hWnd, GWL_ID); ::SetWindowLong(pActiveView->m_hWnd, GWL_ID,::GetWindowLong(pNewView->m_hWnd, GWL_ID)); ::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp); ::ShowWindow(pActiveView->m_hWnd,SW_HIDE); ::ShowWindow(pNewView->m_hWnd,SW_SHOW); SetActiveView(pNewView); RecalcLayout(); ……

  

图5 浮动视窗截图

软件实现首先是在系统结构和模块设计的基础上,确定实现系统功能的流程,功能齐全、流程简单;其次是对各模块进行编程实现,要求界面友好、操作方便。利用开发工具实现数据结构的定义,根据系统结构和功能模块确定测试软件流程图(如图3所示),流程图中反映了4种模块和3种功能的系统架构[6]。本软件主体框架采用传统Windows应用程序界面、Outlook风格、可浮动可嵌套可停靠的动静结合方式设计主体框架和软件界面。

虽然有刺激性气味可能不环保,但没有刺激性气味也不等于环保。除了甲醛,室内还有苯、氨、TVOC、放射性氡等多种有害气体,其中放射性气体氡是无色、无味、无法察觉的惰性气体。因此最真实有效的办法就是请专业机构用专业仪器检测。

 
  

图6 测试结果输出截图

曲线绘制综合了室内仪器测试和现场测井应用的出图需求,通过定义并封装绘图实现类,实现曲线输出时灵活调配,完成曲线的屏幕输出和设备硬拷贝输出。数值列表输出采用开发工具中的网格控件实现,利用控件功能实现数值的拖拽、编辑、重排、隐藏、加入图片等操作。曲线输出实现代码: hd.GetText().Add(*(LPCVARIANT)var1); hd.GetFont().SetColor(RGB(0,0,0)); m_Draw.GetAxis().GetBottom().GetTitle().SetCaption(_T("...")); m_Draw.GetAxis().GetLeft().GetTitle().SetCaption(_T("...")); …… m_Draw.GetTools().Add(tcCursor); CCursorTool ct=m_Draw.GetTools().GetItems(0).GetAsTeeCursor(); ct.SetFollowMouse(true); m_Draw.GetTools().GetItems(0).SetActive(TRUE);…… m_Draw.GetTools().Add(tcDraw); CDrawLineTool dl=m_Draw.GetTools().GetItems(2).GetAsDrawLine(); m_Draw.GetTools().GetItems(2).SetActive(false); m_Draw.GetPage().SetMaxPointsPerPage(m_DotValue); m_Draw.Repaint();

3 结 语

软件系统在Windows 7及以上操作系统,使用Visual C++ 2010开发工具完成[10]。在室内配接自主研发的仪器,实现了室内单板测试、整机测试以及标定刻度,完成了刻度测试数据的实时绘图处理、打印输出和仪器状态跟踪。在现场结合随钻测井作业,根据施工情况配置仪器测井参数,作业完工后通过通信接口读取内存数据,为后续测井资料的处理提供原始数据,并与现场测井数据库进行互访进行实时算法处理。论文介绍的软件首先在随钻测井仪器的研发中得到应用,项目组在伽马成像、方位密度成像仪器的研制中,利用测试软件验证井下仪器的通信、刻度和标定功能;其次是结合随钻测井系统在青海、新疆、陕北、吉林等油田进行现场施工作业中,利用测试软件进行仪器施工前的参数设置、测后数据读取,成功取得测井资料和钻井施工,保障了10余口井的现场应用。现场推广和工程应用表明:研发的测试软件界面友好、操作方便、通用性好,能够在通用界面下实现各种仪器的测试与刻度,数据读取与通信测试。该软件能够将测试结果以多种方式提供给操作员,仪器各种参数和信息实时存入数据库中,有助于对仪器的施工状态进行跟踪。在下一步工作中,将结合十三五期间随钻测井仪器的研制和系统在油田的应用,进一步改进和推广软件系统:一是按照系统中定义的数据格式和通信协议规范统一各种随钻测井仪器接口;二是结合现场使用情况,为了进一步提高作业小队的施工效率,与现场应用软件集成,形成随钻测井作业统一应用软件。

这天是个晴朗的天。太阳明晃晃。流云在高天滑过。秋风吹拂,温度不高不低,走在路上很是惬意。牛皮糖戴顶草帽,手里提个蛇皮袋,蛇皮袋里什么都没有。他并不想用蛇皮袋装什么,只是拿它来做个道具。他觉得手里拿上点东西,心里就踏实许多,自然许多。他脚蹬一双军用胶鞋,那是他的一个当兵的远房侄子送给他的。也许是常年穿用,风雨不换,鞋面因岁月漂洗,早已不见先前的颜色,鞋帮有些开裂。

参考文献

[1] 杨亮,李安宗,李传伟,等.基于网络化的随钻测井地面采集管理平台设计[J]. 计算机测量与控制,2014,22(9):2931-2933.

[2] 陈江浩, 余卫东, 雷晓阳,等. 基于OSGi的跨平台测井软件设计及应用[J]. 测井技术, 2014, 38(5):587-591.

[3] 贾富强,赵阳.基于VC++串口通讯软件的设计与实现[J].计算机技术与发展,2015,25(6):158-162.

[4] 韩小月, 骆丽. 基于VC的电子白板软件Word保存格式实现[J]. 计算机应用与软件, 2013, 30(4):26-28.

[5] 吕小维, 杨亚萍, 祝环芬,等. 随钻测量仪数据采集测试系统设计[J]. 石油管材与仪器, 2009, 23(1):21-23.

[6] 赵永发, 由大伟, 杨丽. Visual C++开发宝典[M]. 机械工业出版社, 2012.

[7] 蔡黎,代妮娜,邓明.自适应多汽车诊断协议的行车数据监测软件设计与实现[J].计算机应用与软件,2014,31(12):25-28,44.

[8] 白茹宝, 刘博达, 朱可可.基于VC++的测井图形属性保存和再编辑技术[J],电子制作,2015,33(8):81.

[9] 张向宇,由立志.基于VC++测井成果图编辑软件的设计与实现[J]. 国外测井技术,2016,26(5): 70-73.

[10] 王育坚.Visual C++面向对象编程教程[M]. 北京:清华大学出版社,2013.

 
李传伟,祝环芬,杨亮,陈国兴,孙博文,符涛
《计算机应用与软件》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号