基于LabVIEW的连续油管随钻测量监控软件设计
2014-01-21陈文辉
陈文辉,双 凯
(中国石油大学(北京)地球物理与信息工程学院,北京 102249)
随钻测量是在钻井过程中进行井下信息实时测量和上传的技术的简称。连续油管随钻采用电缆传输井底信号,能及时的把地下所测得的随钻数据传输到地面,供地面人员分析使用。目前国内大多数仍采用泥浆脉冲随钻测量,相应的地面监控软件一般采用VC或VB开发,地面硬件系统一般采用数据采集卡、防爆箱以及信号调理电路等构成,通过USB或串口的方式与PC机通信[1],有关连续油管随钻测量监控软件的研究则很少。LabVIEW作为美国国家半导体公司推出的基于图形程序的虚拟仪器仪表开发平台,采用数据流的编程方式,内部包含了众多用于测试测量、控制仿真、信号处理等领域的函数工具包,以及友好美观的仪器仪表外观界面,采用LabVIEW进行原理研究,设计、测试并实现仪器系统时能够缩短开发时间,大大提高工作效率。在该背景下,本文提出了一种基于LabVIEW的连续油管随钻测量监控软件的设计与实现,并通过Altera公司的DE2-115开发板作为硬件测试平台对该软件的应用效果进行了测试。
1 整体设计
该监控软件采用模块化的方式实现,包括通信模块、数据库模块以及随钻测量模块,各个模块的结构和所包含的功能如图1所示。
图1 软件整体设计结构图Fig.1 Structure diagram of the software system
随钻测量模块是该监控软件最主要的模块,用于随钻测量数据接收、显示和储存的模块,进入该模块后需要先登陆数据库服务器并选择用于存储的数据库,然后需要输入上位机IP地址和端口号将监控软件和上位机建立连接,正确连接后即可看到显示界面。在该随钻测量显示界面,操作人员在控制命令发送区写入命令字符串并点击发送按钮,上位机接收到命令后返回井下仪器状态或随钻数据,这些状态和数据将在显示界面上实时显示,同时还可以观看历史数据以及历史曲线等信息,与此同时,这些随钻数据信息被保存在指定数据库中。
在该监控软件设计过程中,主要采用了基于XControl的随钻度盘设计、基于Winsock的中断式以太网通信设计以及基于LabSQL的数据库访问技术。
2 基于XControl的随钻度盘设计
随钻度盘是一种用于显示随钻井斜、方位和工具面参数数值的仪表盘,通常度盘除了显示井斜、方位和当前工具面值以外还可以显示4个历史工具面值,工具面分重力工具面和磁力工具面,分别用两种不同颜色的指针区分,5个工具面值中最外层是最新的值,最内层的是最老的值。
由于LabVIEW中没有具有随钻度盘功能的显示控件,本文采用LabVIEW的XControl技术设计和实现随钻度盘。XControl是 NI公司在LABVIEW 8.X新推出的一种特殊控件结构,XControl扩展了自定义控件的功能,允许用户以自定义控件的形式定义控件的功能,它不但可以定义控件的外观,还可以定义控件的行为,实现具有特殊功能的仪表控件。XControl控件由4部分组成[2]:
1)数据.ctl,定义 XControl的数据类型,即 XControl控件能接收的数据类型。
2)状态.ctl,定义 XControl的状态,记录 XControol内部数据状态变化。
3)外观.vi,定义XControl的外观和功能,前面板定义外观,程序面板编程实现功能。
4)初始化.vi,定义 XControl的初始状态。
设计随钻度盘时,主要设计状态.ctl和外观.vi。状态用于保存4个历史工具面的状态,共采用9个变量,其中8个用来表征4个历史工具面的数值和类型,最后一个变量记录接收数据的次数。外观是在LabVIEW自带的量表基础上,通过自定义控件实现,随钻度盘的外观.vi对应的程序流程图如图2所示。
外观.vi的前面板设计使用了11个自定义量表,将他们依次叠加放在一起,这样11个量表看起来就是一个随钻度盘。每次有新数据到来时,后面板程序读取出当前井斜、方位和工具面值并通过对应3个量表显示出来,然后程序通过查询历史工具面的状态值,确定历史工具面的数值以及是重力还是磁力工具面,控制其余量表进行显示。
图2 随钻度盘程序设计流程图Fig.2 Program flow diagram of the MWD gauge
3 基于Winsock的中断式以太网通信实现
LabVIEW自身带有TCP和UDP通信功能的Vi,但是它们都是基于轮询机制而不是事件机制,本文考虑到数据传输的实时性采用基于事件中断方式的Winsock控件实现网络通信。
WinSock控件是一个专门用于Windows网络编程的ActiveX控件。它提供了访问TCP和UDP网络服务的方便途径。它可以作为服务器被其他客户端软件调用,实现网络编程。用WinSock控件编写网络通信程序,不需要了解TCP/IP的具体细节或调用底层Winsock API,通过设置WinSock控件的属性、配置事件中断服务、调用该控件的方法,可容易的连接到远程计算机并进行双向数据交换[3-4]。
由于LabVIEW自身不带有Winsock控件,要在LabVIEW中正常调用Winsock控件,需要先注册MSWinsock.ocx文件,并将对应的License key导入注册表。本文设计的随钻测量监控软件以客户端的模式工作,主要用到了Winsock的Connect方法、SendData方法、Close方法以及DataArrival事件,采用Winsock进行中断式网络通信的程序如图3所示。
在该程序中,先通过Close方法关闭Winsock以防止其在上次应用完毕后没有关闭导致错误发生,再调用Connect方法重新打开Winsock,通过输入远程服务器IP地址和端口号与服务器进行连接,连接成功后即注册一个中断服务程序,该中断服务程序在有网口有数据到来时将数据接收存放在名为“收到的字符串”的队列中。图中的小while循环在队列有数据时将数据取出并显示在“收到的字符串”控件中,带有事件结构的while循环检测前面板按键,当前面板“发送”按键按下时即把“发送字符串”中的数据发送出去;当前面板“断开连接”按键按下时即关闭Winsock、取消注册事件并释放队列引用,从而控制整个程序停止运行。
4 数据库设计
图3 中断式网络通信程序图Fig.3 Program code of Ethernet communication in the interruption way
随钻测量参数多样、数据量大,为了有效的对随钻数据进行存储和管理,本文采用数据库SQL Server记录随钻数据。考虑到实际随钻测量所需存储的参数类型和其他相关信息,采用Power Designer设计了该连续油管随钻测量数据库,通过设计概念数据模型,生成物理数据模型,最后在SQL Server 2008中生成设计好的数据库。连续油管随钻数据库E-R图如图4所示。
图4 连续油管随钻测量数据库E-R图Fig.4 E-R diagram of the MWCTD database
在该连续油管随钻数据库中,主要设计了工程、井、钻次、专家、测量工程师、井队、测斜数据、伽马、电阻率、工具面和井深共11个实体。其中一个工程对应多口井,一口井对应多个钻次,而在每个钻次中主要记录的测量数据有定向数据、钻井参数和地层特性,对于本课题测量数据简化考虑只有测斜数据、伽马、电阻率、工具面和井深,此外,对应每一个钻次都有多个专家、测量工程师和井队负责[1]。
5 LabVIEW访问数据库
实现LabVIEW对数据库的操作主要可采用的方法有:LabVIEW SQL Toolkit、LabVIEW ActiveX、LabSQL 和 调 用 动态链接库DLL。由于LabVIEW SQL Toolkit工具包需购买且价格昂贵,采用ActiveX和DLL方式访问数据库需要进行复杂的编程,对程序员要求较高,而LabSQL是一个免费的、多数据库、跨平台的数据库访问工具包,所以本文采用LabSQL工具包开发数据库应用程序。
ODBC(Open Database Connectivity)即开放数据库连接,是一种强大而灵活的数据库访问标准,用户可以通过ODBC实现对不同操作系统下不同数据库软件的访问。而一般访问ODBC数据源接口采用ADO (ActiveX Data Objects)方式,LabSQL正是将复杂的底层ADO及SQL操作封装成一系列的LabSQL VIs,通过这些VI访问ODBC数据源从而实现对数据库的访问[5-6]。
如图5所示是LabSQL编程访问数据库的一般过程,先通过ADO Create Conn.vi建立一个自动化连接,再通过向ADO Open Conn.vi输入正确的连接字符串即可与数据库服务器或指定数据库实现连接,然后就可以通过SQL Execute.vi执行SQL语句并返回查询结果,最后通过Close Conn.vi和Destroy Conn.vi关闭并销毁连接。
图5 LabSQL以Windows身份验证方式登录访问数据库程序流程Fig.5 Program code of LabSQL accessing database by Windows user authentication
连接字符串的内容根据连接方式的不同而不同,图5中所示连接字符串通过Windows身份验证的方式连接到连续油管随钻数据库,将表格 “工程”中的数据读出显示在Data控件中,而不需要输入用户名密码进行验证。当通过SQL Server身份认证的方式登录连续油管随钻数据库时,则应当在连接字符串中加入用户名和密码信息。连接字符串可以通过以下方法获取:新建一个文本文档,重命名为xxx.udl,然后在打开方式中选择OLE DB Core Services,打开后将出现一个配置窗口,在“提供程序”里选择数据库,然后在“连接”里进行其他相关设置,最后点击确定。这时候再打开该udl文件即可看到生成的连接字符串,该字符串可用作与数据库的连接。
6 软件测试
为了测试该随钻测量监控软件,采用ALTERA公司的DE2-115开发板作为硬件测试平台,向该FPGA开发板移植嵌入式实时操作系统μC/OS-II,并采用NicheStack TCP/IP以太网协议栈和Socket套接字进行网络编程,最终开发了和监控软件进行以太网通信的上位机程序。系统测试结果如图6、图7所示。
图6 软件测试结果Fig.6 Test result of the software system
图7 数据存储测试结果Fig.7 Test result of data storage
测试中,DE2-115每隔一秒钟发送一次数据,发送的井斜、方位和工具面值为定值,伽马和电阻率在一定范围内是随机值。从图中可以看到监控软件能正确显示各随钻数据,同时这些数据被写入数据库的对应表格中。
7 结 论
本文开发了基于LabVIEW的连续油管随钻测量监控软件,经测试,该软件能够实时地接收、显示和存储上位机传来的数据,采用DE2-115硬件平台以及LabVIEW软件开发平台,节约了开发时间,收到了良好的实际效果。
[1]丁景丽.无线随钻测井仪软件系统的设计与实现[D].大连:大连理工大学,2006.
[2]陈寅,张方,姜金辉.基于虚拟仪器平台的海量数据处理分析系统开发[J].国外电子测量技术,2011,30(7):39-42.CHEN Yin,ZHANG Fang,JIANG Jin-hui.A mass data processing system based on virtual instrument platform[J].Foreign Electronic Measurement Technology,2011,30 (7):39-42.
[3]姜志廷.Winsock ActiveX控件在网络程序中的应用 [J].赤峰学院学报:自然科学版,2007,23(1):70-71.JIANG Zhi-ting.Application of winsock activeX control in network program[J].Journal of Chifeng College:Natural Science Edition,2007,23(1):70-71.
[4]胡吉朝,王定远,王占锋.中断式网络通信技术在LabVIEW下的实现[J].微计算机信息,2008,24(12-3):167-168.HU Ji-chao,WANG Ding-yuan,WANG Zhan-feng.Realization of network communication in LabVIEW using interruption Technology[J].Microcomputer Information,2008,24(12-3):167-168.
[5]毕虎,律方成,李燕青,等.LabVIEW中访问数据库的几种不同方法[J].微计算机信息,2006,22(1-1):131-134.BI Hu,LV Fang-cheng,LI Yan-qing.Several methods of accessing database in labview[J].Microcomputer Information,2006,22(1-1):131-134.
[6]刘翔宇,陈曾汉.利用LabSQL实现对远程数据库的访问[J].测控技术,2011,27(6):68-69.LIU Xiang-yu,CHEN Zeng-han.Access to remote database using LabSQL[J].Measurement&Control Technology,2011,27(6):68-69.