生产测井系统数据采集软件的设计与开发.pdf
第3 2 卷第5 期测井技术V 0 1 3 2N o 52 0 0 8 年1 0 月W E I,LI A K;G I N GT E C H N O I A)G YO c t2 0 0 8文章编号:1 0 0 4 1 3 3 8(2 0 0 8)0 5 0 4 3 5-0 40生产测井系统数据采集软件的设计与开发王鹏,李谦,李传伟(中国石油集闭测井有限公司测井仪器厂,陕西西安7 1 0 0 6 1)摘要:介绍了生产测井地面系统数据采集软件的设计思想和实现方法。其数据采集方式的硬件环境主要由测井信号采集处理电路、单片机系统、P D I U S B D l 2 及主机组成,软件则基于W i n d o w sX P 操作系统。按不同的软件平台分层获取数据。通过底层的设备驱动程序实现对硬件的访问;通过上层的多线程客户软件实现生产测井的数据采集与处理。采用多线程技术处理数据完成地面系统实时多任务的采集软件,满足生产测井数据采集要求。在W i n d o w s 操作系统多任务机制基础上,用户态的三参数七参数生产测井客户软件利用多线程实现测井功能。给出了处于核心态的底层设备驱动程序的主要例程和数据通讯方式。现场应用效果良好,系统具有准确性和实时性,运行稳定可靠,达到了生产测井系统的功能要求。关键词:生产测井;地面系统;数据采集;设备驱动程序;多任务;线程中图分类号:P 6 3 1 8 1 4文献标识码:AD e s i g na n dD e v e l o p m e n to fD a t aA c q u i s i t i o nS o f t w a r eo fT h eW A N GP e n g,L IQ i a n,L IC h u a n-w e i(I g g i n gI n s t r u m e n tP l a n t C h i n aP e t r o l e u mL o g g i n gC O 1 T D,X i a n,S h a a n x i7 1 0 0 6 1,C h i n a)A b s t r a c t:S t a r t e dw i t hi n t r o d u c t i o no nW i n d o w sX Po p e r a t i o ns y s t e ma r c h i t e c t u r e,d i s c u s s e di st h ed e s i g ni d e aa n di m p l e m e n tm e t h o do far e a l-t i m ea n dm u l t i-。t a s kd a t aa c q u i s i t i o ns o f t w a r ei nap r o d u c t i o nw e l ll o g g i n gs y s t e m T h eh a r d w a r eo ft h es y s t e mi sc o m p o s e dm a i n l yo fa c q u i s i t i o na n dp r o c e s sc i r c u i to fl o g g i n gs i g n a l。s i n g l ec h i pm i c y o c os y s t e m。U S Bi n t e r f a c ec h i pP D I U S B D l2a n dm a i nc o m p u t e r;t h es o f t w a r ei sb a s e do nW i n d o w sX Po p e r a t i o ns y s t e mt oa c q u i r ed a t ai nd i f f e r e n ts o f t w a r ep l a t f o r m s I nk e r n e lm o d eo ft h eW i n d o w sX Po p e r a t i o ns y s t e m,t h eh a r d w a r ev i s i t i n gi si m p l e m e n t e dt h r o u g hd e v i c ed r i v e ri nt h eb o t t o ml a y e r;i nu s e rm o d e,m u l t i t h r e a dt e c h n i q u ei su s e dt oc o m p l e t et h er e a l t i m ea n dm u l t i-t a s kd a t aa c q u i r i n gf r o mt h eU S Bt h r o u g hm u l t i t h r e a d i n gu s e rs o f t w a r ei nt h eu pl a y e r,b yw h i c ht h ef u n c t i o n a lr e q u i r e m e n t so ft h ep r o d u c t i o nw e l ll o g g i n gs y s t e mi sr e a l i z e d T h em a i ns u b r o u t i n ea n dd a t ac o m m u n i c a t i o nm e t h o do ft h ed e v i c ed r i v e ri nt h eb o t t o ml a y e ra r ep r e s e n t e d T h er e a l t i m ea n dm u l t i t a s ka c q u i s i t i o ns o f t w a r eo ft h ep r o d u c t i o nl o g g i n gs y s t e ms h o w se x c e l l e n tv e r a c i t y,r e a l t i m ep e r f o r m a n c e,s t a b i l i t y,c r e d i b i l i t ya n dg o o de f f e c ti no i l f i e l da p p l i c a t i o n K e yw o r d s:p r o d u c t i o nl o g g i n g,s u r f a c es y s t e m,d a t aa c q u i s i t i o n,d e v i c ed r i v e r,m u l t i t a s k,t h r e a d引#习油田开发越来越多地借助生产测井提供的资料了解井况。本文介绍的生产测井地面系统采集软件提供了一种应用于石油工程生产测井领域的数据采集方式,它的硬件环境主要由测井信号采集处理电-_-_ _ _-_-_ 一路、单片机系统、P D I U S B D l 2 及主机组成,软件则基于W i n d o w sX P 操作系统,按不同的软件平台分层获取数据 2 ,通过底层的设备驱动程序实现对硬件的访问,做到实时、高效;通过上层的多线程客户软件实现生产测井的数据采集与处理,采用多线程技术处理数据,使系统的效率大大提升,从而很好地作者简介:王鹏,男,1 9 6 9 年生。高级下程师从事测井仪器开发与技术管理工作。万方数据4 3 6 测井技术2 0 0 8 在完成了生产测井数据采集任务。1系统功能概述1 1W i n d o w sX P 体系结构W i n d o w sX P 通过硬件机制实现了核心态和用户态2 个特权级别 1 。当操作系统处于核心态时,C P U 处于特权模式,可以执行任何指令,并且可以改变状态;当操作系统处于用户态时,C P U 处于较低特权级,只能执行非特权指令。在核心态下,组件可以和硬件交互,组件之间也可以交互。用户程序一般都运行在用户态,当用户程序使用特权指令,操作系统就会借助于硬件提供的保护机制剥夺用户程序的控制权并做出相应处理。如图1 所示,上部的方框代表了用户进程,它们运行在私有地址空间中,有4 种类型:系统支持进程、服务进程、应用程序和环境子程序。其中,服务进程和应用程序是不能直接调用操作系统服务,它们必须通过子系统动态链接库和系统交互。下部是核心态组件,它们都运行在统一的核心地址空间中。核心类组件包括核心、执行体、硬件抽象层、设备驱动程序和图形引擎等内容。图1W i n d o w sX P 体系结构框图1 2 生产测井采集系统描述生产测井数据采集系统主要由生产测井信号采集处理电路、单片机系统、P D I U S B D l 2 及主机组成。测井任务开始后,生产测井井下仪器的信号经过信号的预处理、解码后,送人双端R A M 中。单片机系统完成数据通信,响应各种传输请求,完成数据传输的控制。通过D 1 2 型的U S B 接口芯片,实现了数据的串并转换,在F I F O 装满后将采集的数据自动打包送人主机。外围硬件电路实现了数据的预处理和采样,送人主机后由生产测井实时多任务采集软件进行处理。该软件在W i n d o w sX P 下开发,依据操作系统的要求,用核心态的设备驱动程序实现数据的底层采集工作,同时在用户态利用W i n d o w sX P 的线程运行机制编写多线程客户程序,实现数据实时处理工作。2 核心设备驱动程序按照硬件访问机制,W i n d o w sX P 提供4 种运行特权级,从R i n 9 0 R i n 9 3。R i n 9 0 级别最高、R i n 9 3 级别最低。操作系统和驱动程序运行在R i n 9 0 级别上,可以执行任何有效的C P U 指令,而应用程序运行在R i n 9 3 级别上,不能直接实现对端口的操作。为使应用程序实时采集数据,只有通过编写底层驱动程序才能访问硬件,从而获取数据。设备驱动通过应用层和硬件专用代码之间的转化完成任务。2 1U S B 设备驱动程序主要例程(1)D r i v e r E n t r y 初始化例程:初始化各驱动程序的数据结构,并准备其他驱动程序部分的运行环境。(2)P N P 例程:完成U S B 设备的热插拔功能。当系统检测到有设备插入U S B 总线时,驱动程序通过P N P 检测插入设备的特征,并对设备进行配置,最后调用启动设备例程启动设备。当系统检测到有设备从U S B 总线上拔除时,驱动程序调用系统撤除例程,撤除该设备所占用的系统资源。(3)A d d D e v i c e 例程:用于创建设备对象,并把创建的设备对象连接到设备对象堆栈中。(4)D r i v e r L o a d 例程:释放D r i v e r E n t r y 例程在全局初始化过程中申请的任何资源。2 2 驱动程序和应用程序通讯的实现在W i n 3 2 系统中,每一个设备都抽象为文件,应用程序通过A P I 函数可实现与驱动程序中的某个设备通信 3 。具体实现方法如下。(1)取消设备:首先获取设备的独特标识符G U I D;其次获取设备信息集,实现这个功能的函数是W i n d o w s 设备管理函数E T U P D I G E T C L A S 孓D E V S。接下来识别接口信息,调用E T U P D I E N U M D E V I C E I N T E R F A C E S S,最后通过S E T U P D I G E T D E V I C E I N T E R F A C E D E T A I L 获取设备路径名。(2)打开设备:通过调用A P I 函数C R E A T-F I I。E 来实现。它可以打开一个文件或其驱动支持C R E A T F I L E 的任何设备。(3)读写设备:写数据到设备。当应用程序获 万方数据第3 2 卷第5 期王鹏,等:生产测井系统数据采集软件的设计与开发得设备句柄,可以拷贝数据发送到缓存并且调用W R I T E F I L E。从设备读取数据。当应用程序有一个设备句柄,可以使用R E A D F I L E 从设备读取数据。2 3U S B 设备驱动程序的实现用D r i v e r S t u d i o 中的D r i v e r W o r k s 为开发工具,方便快捷、实用性强。U S B 设备驱动程序的设计是基于W D M 的,利用D r i v e rW i z a r d 向导生成W D M 类型的U S B 功能驱动程序是比较简单的,只要按照提示设置一些参数就能生成程序框架,在框架中填入少许程序代码即可 4 。需要注意的是,程序编译前,必须先编译需要的库文件,并对编译的环境参数进行设定。2 4U S B 驱动程序的安装运行驱动程序编写完成后,驱动程序以S Y S 文件的形式存在主机中,使用时需要安装。利用D r i v e r S t u d i o 开发驱动程序时,会自动生成相应的驱动程序I N F 安装文件。在安装时设备管理器通过读取相应的I N F 文件来安装驱动程序。3 客户应用软件3 1W i n d o w s 的多任务线程调度机制W i n d o w sX P 处理器采用线程调度,实现基于优先级的抢先式多处理器调度系统 1 。调度系统总是运行优先级最高的就绪进程。线程被调度进入运行状态时,按照系统分配给它的时间配额运行,待时间配额用完后系统会判断是否需要降低该线程的优先级,并查找是否有其他高优先级或相同优先级的线程等待运行。(1)主动切换。当1 个线程因为进入等待状态而主动放弃C P U 的使用,处于等待队列中,而C P U处理就绪队列中的第1 个线程。(2)抢先。当高优先级线程的等待完成或1 个线程的优先级被改变时,正在处于运行状态的低优先级线程被抢先,被抢先的线程被放回相应优先级的就绪队列中。(3)时间配额用完。当1 个处于运行状态的线程用完它的时问配额时,系统首先必须确定是否需要降低该线程的优先级,然后选择高优先级的就绪线程或相同优先级就绪队列中的下一个线程进入运行状态。(4)结束。当线程完成运行时,它的状态从运行状态转到终止状态。在客户软件的编写过程中,正是基于W i n d o w sX P 的多任务线程调度机制,充分运用多线程技术,淋漓尽致的发挥出操作系统多任务的特点,使生产测井的数据采集、命令交互和处理同步进行。在客户程序中,应用程序对象作为主线程,开始运行时启动。定时读取数据设置1 个线程,向井下仪器下发命令设置1 个线程。由于数据采集到后要实时处理,所以数据处理采用消息响应实现。在操作系统的统一协调控制下,通过多线程方式,客户程序成功地实现了生产测井系统的各项功能。3 2 多任务实时采集的实现方式(1)通过U S B 数据传输通道采集数据。首先进行系统初始化工作,然后打开U S B 设备,检测U S B 设备,启动信号采集任务开始后,通过U S B 底层读管道方式实时从U S B 接口采集数据。在U S B控制芯片D 1 2 中F I F O 定义为6 4B,当F I F O 中存满6 4B 后,数据自动打包由S I E 送人主机缓冲区中。(2)生产测井采用W T C 电缆遥测系统传输数据。W T C 正常工作时,每4 0m s 向地面传送l 帧数据。每当帧变化时,客户程序读取主机缓冲区中的数据,放入用户缓冲区。(3)当深度发生变化时,应用程序对用户缓冲区的数据进行计算、处理、实时绘图、显示、记盘,完成测井任务。为了保证在单位时间内采集到足够的数据,测速应当有所限制,以满足资料处理要求。(4)如果用户下发各种反馈命令,则通过U S B底层写管道方式将该命令发送到单片机系统,控制井下仪器完成相应的工作。3 3 客户应用软件的具体实现多任务机制在软件中由线程函数来实现,包括主线程和辅助线程。主线程负责用户界面,它的生命周期也就是整个用户程序的生命期,用户的各种动作都会触发主线程的消息机制,从而完成用户的响应。辅助线程是在主线程运行过程中产生的,它的生命周期就是它本身,是整个程序生命周期的一部分,一旦函数返回,线程就结束了。在生产测井采集系统中,设置读取主机数据的线程和下发命令的线程为辅助线程,使前台主线程在处理各种事件时,后台线程完成数据采集,下发命令,显示绘图等。线程具体编程实现方法如下。在客户软件的编写过程中,采用了V i s u a lC+6 0 作为程序的开发环境。由于M F C 程序只有1 个C W i n A p p 对象,而C W i n A p p 对象派生自 万方数据4 3 8 测井技术2 0 0 8 拒C W i n T h r e a d,即产生了应用程序的主线程。对于辅助线程,要先准备1 个线程函数,例如:U I N TT H R E A D N A M E(V O I D*p P a r a m);然后调用A f x B e g i n T h r e a d()启动线程,如:C w i n T h r e a d*p W tA f x B e g i n T h r e a d(T H R E A D N A M E。&p P a r a m)。o 川?1 5 0深度嬲C C m V2 00 删l m“j D 校深澍井罗4 5 1 5 胛弋之4 5 2 0声1 1 3 3蜘2 04 5 3 01 1 1 9气4 5 4 04 5 3 8 3 91 1 1 9歹一-4 5 5 04 5 4 9 5 0气,1 1 3 lj绷4 5 印u D 9声1 1 3 2图2 井测井曲线3 4 应用软件现场效果客户应用软件完成系统的数据采集工作是测井系统软件的瓶颈,也是核心技术之所在。使用该软件进行测井的生产测井系统已经在中国石油集团测井有限公司吐哈事业部、塔里木事业部投入使用,进行测井作业数1 0 口,取得了合格的测井资料,应用效果明显。图2 是该系统在新疆地区井的现场实测曲线图。4结论生产测井数据采集软件充分利用W i n d o w sX P体系结构的技术特点,用底层的设备驱动程序完成在U S B 总线上的数据采集,用上层的多线程客户应用软件实现与用户的交互及数据处理任务。通过系统的现场应用表明,系统具有准确性和实时性,运行稳定可靠,达到了生产测井系统的功能要求,目前采用该软件的仪器已投入批量生产。参考文献:1 尤晋元,等W i n d o w s 操作系统原理-M-I 北京:机械工业出版社,2 0 0 1 2 3 李安宗综合化测井地面系统实时多任务采集软件的设计与开发口 测井技术,2 0 0 7,3 1(2):1 5 9 1 6 2 3 廖济林U S B 2 0 应用系统开发实例精讲 M 北京:电子下业出版社,2 0 0 6 4 武安河W i n d o w s2 0 0 0 X PW D M 设备驱动程序开发 M 北京:电子工业出版社,2 0 0 5 5 张惠娟W i n d o w s 环境下的设备驱动程序设计E M 西安:西安电子科技大学出版社,2 0 0 2(收稿日期:2 0 0 8-0 1-0 2 本文编辑李总南)万方数据生产测井系统数据采集软件的设计与开发生产测井系统数据采集软件的设计与开发作者:王鹏,李谦,李传伟,WANG Peng,LI Qian,LI Chuan-wei作者单位:中国石油集闭测井有限公司测井仪器厂,陕西,西安,710061刊名:测井技术英文刊名:WELL LOGGING TECHNOLOGY年,卷(期):2008,32(5)参考文献(5条)参考文献(5条)1.廖济林 USB2.0应用系统开发实例精讲 20062.李安宗 综合化测井地面系统实时多任务采集软件的设计与开发期刊论文-测井技术 2007(02)3.尤晋元 Windows操作系统原理 20014.张惠娟 Windows环境下的设备驱动程序设计 20025.武安河 Windows 2000/XP WDM设备驱动程序开发 2005 本文链接:http:/