(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf_第1页
(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf_第2页
(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf_第3页
(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf_第4页
(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(计算机应用技术专业论文)数控测井软件系统设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 数控测井系统是计算机技术引入测井系统的必然产物,测井软件是数控测 井系统中不可缺少的重要组成部分,发挥着越来越重要的作用。随着微软视 窗操作系统的普及和组件程序设计技术的应用,作为实时控制系统的测井软 件无论是运行平台还是设计方法都面临着升级和发展。 本文结合实际工作中数控测井软件系统的开发项目,从三个方面深入探讨 数控测井软件的设计与实现,一是将组件程序设计与数控测井软件系统的开 发结合起来,把测井软件设计为客户程序,用组件服务器完成独立的测井功 能模块;二是利用w i n d o w s 虚拟设备驱动程序模型实现测井系统的实时数据 采集和控制,使数控测井软件成为w i n d o w s 家族的应用程序:三是在测井资 料预处理中利用图像处理技术对变密度测井资料进行处理,使得图像细节清 晰,并在显示器上用伪彩色显示,在绘图仪上抖动成灰度图,便于用户观察 和判断地层特性。 通过对课题的丌展,利用组件程序设计方法完成数控测井软件的开发,有 效地将这一控制软件划分成几个独立的模块,分别实现数据显示、绘图、存 储等功能,便于软件的维护、升级;针对测井系统的硬件设备开发了各种板 卡的驱动程序,实现数据采集和设备控制,符合测并系统的现场施工要求; 对变密度测井数据进行综合处理,形成不同等级的灰度图像和伪彩色图,提 高图像的定性解释效果。该软件系统经过几个月调试,完成各种下井仪器的 配接,并在标准井和华北油田测井试验,取得满意的测井效果,得到用户的 认可,目前已经销售到中油测井公司在国外服务。 关键词:数控测井软件系统组件对象模型 记盘显示虚拟设备驱动程序 数字图像处理 服务表绘图 变密度测井灰度图像 a b s t r a c t c o m p u t e r i z e dl o g g i n gs y s t e m i sm o r e p o p u l a rw i t h t h e a p p l i c a t i o n o f c o m p u t e r si nt h el o g g i n gs y s t e m ,a n dt h el o g g i n gs o f t w a r ei sn o to n l yo n eo ft h e i n d i s p e n s a b l ec o m p o n e n t s ,b u ta l s op l a y sam o r ea n dm o r ei m p o r t a n tr o l ei nt h i s s y s t e m w i t ht h ep o p u l a r i t yo f w i n d o w so p e r a t i o ns y s t e ma n dc o m p o n e n to b j c o t m o d e lp r o g r a m m i n g ,l o g g i n gs o f t w a r em u s tb eu p d a t e da n dd e v e l o p e di nt h i s s i t u a t i o n c o m b i n i n g w i t hap r a c t i c a lp r o j e c to f c o m p u t e r i z e dl o g g i n gs y s t e ms o f t w a r e , t h i st h e s i sd e e p l yd i s c u s s e st h ed e s i g na n d c o m p l e m e n t o f l o g g i n gs y s t e ms o f t w a r e i nt h r e ea s p e c t s t h ef i r s ti st h ea p p l i c a t i o no fc o m p r o g r a m m i n g ,i n c l u d i n gt h e d e s i g no fl o g g i n gc l i e n t sa n dt h ei n d e p e n d e n tf u n c t i o ns e v e r s t h es e c o n di st h e d e v e l o p m e n to fd r i v e rp r o g r a m m i n g ,u s i n gv i r t u a lxd e v i c ed r i v e rm o d e l t h e t h i r di st h ed a t a p r o c e s s i n g o fv a r i a b l ed e n s i t y l o g g i n g ,u s i n gs o m ed i g i t a li m a g e p r o c e s s i n gm e t h o d si n c l u d i n g 掣a yt r a n s f o r m ,f i l t e ra n dd i t h e r i n go u t p u to nt h e p l o t t e r , w h i c hh e l p st h eu s e r st oi d e n t i f yt h ef o r m a t i o nc o n d i t i o n a f t e rd e v e l o p i n gt h e l o g g i n gs y s t e mb yc o m p o n e n tp r o g r a m m i n gm e t h o d s , t h i ss o f t w a r ei ss e p a r a t e df r o ms e v e r a li n d e p e n d e n tm o d e l se f f e c t i v e l y , r e a l i z e s t h o s ef u n c t i o n ss u c ha sd a t ad i s p l a y i n g ,p l o t t i n ga n d s a v i n gr e s p e c t i v e l y t h e r e f o r e , t h es o f t w a r ei se a s i e rt ob em a i n t a i n e da n du p d a t e d t h ed r i v e r p r o g r a mo f v a r i o u s b o a r d sa n dc a r d sc a na c c o m p l i s ht h ed a t ag a t h e r i n ga n dd r i v ec o n t r o l l i n g ,w h i c h s a t i s f i e st h en e c e s s i t yo fl o g g i n gs c e n e d i f f e r e n tg r a yi m a g e sa n dp s e u d o c o l o r i m a g e sc a n b ef o r m e da f t e rp r o c e s s i n gt h ed a t ao fv a r i a b l ed e n s i t yl o g g i n g a f t e r s e v e r a lm o t h s d e b u g g i n g ,t h et e s ti sp a s s e d t h i ss o f t w a r es y s t e mi sr a t i f i e db y t h eu s e r sa f t e ri tw a st e s t e di nh u a b e io i lf i e l d n o wt h es y s t e mi ss o l da n ds e r v e d a b m a d k e y w o r d s : c o m p u t e r i z el o g g i n g s o f t w a r es y s t e m c o m p o n e n to b j e c tm o d e l s e r v i c et a b l ep l o tr e c o r d d i s p l a y v i r t u a lxd e v i c e d r i v e rp r o g r a mv a r i a b l ed e n s i t y l o g g i n g g r a yi m a g e d i g i t a li m a g ep r o c e s s i n g 数控捌井软件系统设计与实现第一章绪论 1 1 研究背景 第一章绪论 数控测井软件是整个数控测井系统的关键组成部分,软件性能的优良直接 影响测井方法原理的应用、用户的使用和测井资料的可靠性。相比较而言, 国外的数控测井软件性能优良,可视化程度高,但它的最大缺点是只和硬件 系统配套销售,而且软件中的某些功能不符合国内油田的实际测井需要,这 就导致软件维护成本高,功能扩充困难,限制了系统性能的提高;国内的测 井软件大多数是在d o s 环境下开发的,操作系统的变化使得这些软件日趋淘 汰,少数基于w i n d o w s 的测井软件,由于与硬件设备间的通讯不畅通未能得 到广泛推广。目前没有性能优良、易于维护,符合现场实际要求的测井软件 满足油田现场需求。 为了改善这一局面,必须对数控测井软件进行深入研究,主要包括:( 1 ) 软件运行平台的改变,w i n d o w s 操作系统下测井软件涉及对测井硬件设备的 访问和控制,高效的驱动程序是测井软件开发的重点和难点,现有的数控测 井软件或利用d o s 单任务特性,或不能够很好地满足测井系统的实时性。( 2 ) 采用先进的程序设计技术,组件对象模型技术是在面向对象技术基础上软件 开发技术的新飞跃,已逐步应用于多种软件开发中,但目前在数控测井软件 研发中还没有使用这种新技术。( 3 ) 在测井数据资料预处理中增加图像处理与 在线分析功能,现有的数控测井软件只将变密度波形数据表现出来,没有对 其进行处理,将图像处理技术引入资料分析处理中,是测井数据处理的发展 方向。 本课题是在实际工作中,根据测井服务的特点和油田用户的要求,结合计 算机操作系统的变化和软件开发技术的发展及图像处理技术,从上述几个方 面讨论数控测井软件系统的设计与实现,旨在对数控测井软件进行一些探索 数控测并软件系统设计与实现 第一章绪论 和创新,以提高测井系统的可靠性、稳定性,更好地满足油田测井现场的需 要。 1 2 研究目的与意义 本课题的目的是将目前最为先进的软件开发技术,控制技术以及有效的数 据处理方法应用到数控测井系统的设计与实现中。按组件程序设计思想,将 测井系统作为客户程序,把测井软件通用的显示、绘图、记录数据文件、计 算处理等功能设计成组件,单独编译连接,提供给客户程序。根据数控测井 硬件设备的特性和要求,设计硬件驱动程序,实现硬件设备的实时访问与控 制,确保采集的数据是对实际地层的准确反映。利用数字图像处理方法对变 密度测井数据进行处理,生成直观的图像,更利于用户观察和判断地层状况。 通过本课题的研究,使得数控测井软件能够以w i n d o w s 9 x m e 2 0 0 0 x p 为操作平台,通过测井硬件设备的驱动程序,实现从硬件设备读取数据和根 据要求对硬件设备进行控制,很好地解决多用户多任务系统下对硬件设备请 求的实时响应。利用组件化程序设计方法,生成各种测井通用的显示、绘图、 记录数据、计算处理组件。使得在开发软件时,按约定的接口调用这些组件 即可实现相应的功能,大大提高软件的复用性,在软件维护中,由于各功能 块相对独立,很容易查找定位修改,易于维护,节省维护费用:不仅有助于 软件系统的扩展和升级,而且有助于充分利用前期开发的成果,节省人力、 物力。利用数字图像处理方法对变密度测井资料进行各种处理后,可以提高 资料的质量,以更清晰的图像真实地反映地层,为其它测井数据的处理探索 出一种行之有效的方法,从而将数控测井软件与图像处理技术有机地结合起 来。 1 3 课题内容和研究方法 本论文的内容包括基于组件的测井应用软件的设计和实现、与测井系统硬 数控测井软件系统设计与实现 第一章绪论 件紧密相关的驱动程序的开发和数字图像处理技术在测井数据处理中的应 用。 组件程序设计包括客户程序、组件服务器和组件接口三个部分。客户程序 如同结构化程序中的主程序,是应用程序是否满足要求的关键,有效地组织 测井客户程序的流程是客户程序设计的重点。根据测井系统的要求和测井工 艺流程设计客户程序,完成系统界面、测井信号采集和数据的处理,调用各 组件程序实现相应功能。组件服务器如同结构化程序中的功能模块,是被客 户程序调用的对象,能够完成独立的功能,合理地进行组件划分是组件程序 设计的难点,结合测井系统的特点,将设计显示、绘图、记盘和服务表编辑 四个组件服务器。组件接口是组件对象模型的重要内容,它不仅关系到组件 的性能和重用性,而且关系到整个测井软件系统的稳定性和扩充性,是组件 程序设计的关键,也是与其它程序设计方法的不同之处。 要设计w i n d o w s 操作系统下的数控测井软件系统,硬件设备驱动程序的 设计和实现是关键。驱动程序是w i n d o w s 环境下应用程序与硬件之间的接口, 应用程序通过驱动程序能够完成对硬件的访问与控制,驱动程序也能根据硬 件的要求向应用程序发出中断请求。在多任务操作系统下,测井软件必须保 证实时采集数据不发生丢失,而且要求能够准确响应硬件中断请求,这给驱 动程序的设计带来困难,采用有效的缓冲技术存储数据并传递给应用程序是 测井硬件驱动程序的难点。 要在数控测井系统中使用图像处理技术,测井数据转换成表示图像的灰 度值是基础,对图像数据进行处理和交换是测井资料处理的发展方向。利用 图像处理的抽样、量化等数字化过程,将变密度波列图像用灰度值表示并存 储到二维数组中,使用图像处理方法对灰度图像进行空间域变换,如对灰度 级进行修整、滤除图像中的各种噪声和灰度图的边缘提取,使图像的细节更 加清晰,提高图像质量;同时借助伪色彩技术得到对人眼来说增强了的视觉 效果;使用图像抖动的方法,选取合适的抖动矩阵将波形数据用灰度等级在 p r i n t e r x 8 2 0 绘图仪上绘制。 数控铡井软件系统设计与实现 第一章绪论 在组件程序设计中使用v i s u a lc + + 6 0 开发工具完成测井客户程序的编 制,利用微软的a t l 模板库定制各功能组件;采用v t o o l s d 驱动程序集成开 发环境实现测井驱动程序,并使用s o f t l c e 工具调试。 1 4 论文结构及章节安排 论文首先介绍了数控测井软件的功能和结构,并利用组件服务器构造测井 软件,然后用四章的篇幅详细介绍组件的设计、硬件驱动程序的设计、测井 数据资料预处理和软、硬件系统的测试程序。 第一章绪论介绍本文的研究背景、目的与意义,课题的内容和实现方法。 第二章从数控测井系统出发,介绍系统的硬件组成、软件功能,并用基于 组件的客户程序方法设计和实现测井软件。 第三章用组件程序设计思想实现测井系统中独立的模块,讨论几个通用测 井组件的设计与实现。 第四章讨论硬件设备驱动的基础和关键技术,介绍v t o o l s d 开发测井驱动 程序的实现方法。 第五章介绍测井资料预处理的功能和实现,重点讨论利用图像处理的方法 对变密度测井资料进行处理,完成图像的数字化、图像在空间域的变换与伪 彩色显示、绘图仪的灰度绘制。 第六章介绍测井软件系统的测试及对硬件测试程序的设计与实现 论文的结束部分总结了论文的技术成果和体会,并提出了几点设想,以 便更加深入的研究数控测井软件。 数控测井软件系统驶许与实现 第二章数控测井软件系统 第二章数控测井软件系统 在石油勘探开发中,通过各种仪器测量地层中的信息并加以分析处理,以 了解地质结构和岩性状况。数控测井系统f 1 是为了适应石油勘探发展的需要, 在测井仪器中应用计算机系统,将下井仪器测量地层中的各种信息传送到地 面进行处理,形成测井资料,包括下井仪器和地面系统两部分,本文着重探 讨地面系统中的软件系统。 2 1 数控测井系统概述 在国外,从事数控测井系统研制的主要三家公司,即斯伦贝谢、阿特拉斯、 哈里伯顿,近年来分别研制推出c s u m a x 5 0 0 、c l s 3 7 0 0 t 2 l e c l i p s 5 7 0 0 t 3 1 、 e x c e t l 0 0 0 e x c e l 2 0 0 0 。早期的产品中,软件系统是基于d o s 的字符界面,操 作起来单调乏味,系统也不够灵活,功能扩展非常麻烦。近年来,几家公司 也在软件方面做出很大改进,采用u n i x 系列的操作系统,利用图形化的用 户界面编程,操作方便灵活,软件功能也越来越强大,系统的扩展性很强, 易于维护和改进。e c l i p s 5 7 0 0 测井系统的软件是阿特拉斯公司在9 0 年代初开 发的以u n i x 为平台,运行在h p 工作站上的图形化界面测井软件,整个系 统采用面向对象程序设计方法,操作方便灵活;但系统程序复杂,功能扩充 困难,不易于维护。e x c e l 2 0 0 0 测井系统是哈里伯顿公司在9 0 年代中期推出 的以a i x ( i b m 在u n i x 基础上推出的操作系统) 为平台,运行在m m 工作 站上的图形化界面测井软件。 在国内,9 0 年代以来多家数控测井系统问世,主要有西安石油勘探仪器 总厂研制的x s k c 9 2 s k c 9 8 0 0 测井系统【5 】,新乡2 2 所生产的s k 8 8 s k h 2 0 0 0 测井系统,胜利测井公司生产的s l 3 0 0 0 测井系统,北京七院生产的5 2 0 5 2 1 测井系统。这些系统是几年前开始研制的,当时的软件技术限制测井软件系 统的设计,大多数是采用面向对象程序设计技术编写的图形化界面或类窗口 界面应用程序。s k c 9 8 0 0 测井系统【6 】的软件是以w i n d o w s 为平台,利用v i s u a l 数拄测卅:软件系统设计与实现第二章数控铡井软件系统 c + 十开发的3 2 位应用程序,该软件使用动态连接库实现测井计算方法,使得 增加、修改计算方法时不需修改测井程序,体现了组件程序设计思想,但整 个系统是应用面向对象技术设计的,系统程序非常庞大,维护工作量大。 国外几家公司推出的测并系统是软硬件整体销售,其软件设计采用面向对 象程序设计思想,没有用到组件程序设计方法,而且在测井软件中也没有引 入图像处理技术对测井数据进行处理;国内数控测井软件与国外测井软件相 差甚远,广泛使用的常规测井系统都不能很好地满足油田用户的要求。随着 电子技术的飞速发展和软件科学的进步,用户要求简化硬件,进一步提高系 统集成程度,对软件功能要求也越来越高。 2 2 数控测井系统的硬件 数控测井硬件主要完成测井信号的采集、处理,下井仪器的供电等任务, 形成测井数据资料。国内油田广泛使用的常规测井中,测井信号主要有模拟 信号、计数率信号、声波信号、p c m 编码信号、曼切斯特信号等几大类【7 1 。 为了能够处理这几类信号,地面系统中的硬件具有相应的处理电路。测井系 统硬件结构如图2 1 所示,由信号处理、接线控制、供电系统、计算机系统 和辅助系统五大部分组成。 图2 - 1 测井系统硬件结构图 数控测并软件系统设汁与实现 第二章数控测井软件系统 信号处理部分的功能是对下井仪器产生并经过电缆传送上来的信号进行 整形、放大、滤波等,实现各种信号预处理。接线控制部分主要完成不同下 井仪器测井时测量信号通道的建立,多种仪器组合测井时电缆分配,为需要 测并、刻度、对零换档的仪器提供换档电压,为带推靠的仪器提供马达工作 电压。地面系统通常采用2 2 0 v 输入,经过可调和升压变压器后,提供两组 o 一3 0 0 v 可调交流输出和一组直流输出,为下井仪器提供工作电压。计算机 系统是数控测井系统的核心,主要功能是在测井软件的配合下,完成数据的 采集与处理,将各种数据以屏幕显示、绘图仪出图、磁盘记录等方式表现给 用户,包括计算机、显示器、8 2 0 绘图仪。辅助系统是指数控测井系统中的稳 压器、不间断电源、示波器、信号模拟器、井口马达深度等,完成系统的供 电,提供系统调试设备,是检测地面系统不可缺少的组成部分。 2 3 数控测井软件系统 数控测井软件是对硬件处理后的信号进行采集,利用测井原理和方法对采 集到的数据进行处理,以测井资料图等形式将测井数据表现出来的数据采集 系统d a s ( d a t aa c q u i s i t i o ns y s t e m ) ,在w i n d o w s 环境下采用消息驱动的事件 控制策略实现,控制流程如图2 2 所示,在功能上分为数据采集、数据处理、 数据表现三部分,软件结构如图2 3 所示。 测井数据采集是将数控测井系统硬件处理后的数据读取到测井软件中,是 后续数据处理的基础,也是关系测井系统软件性能好坏的重要因素。在单任 务操作系统下,应用软件可以直接从硬件端口中读取数值,也可以向硬件端 口发送控制命令,实现对硬件的各种控制:而在w i n d o w s 操作系统下,由于 系统的多任务特点,位于r i n 9 3 环的应用程序必须进入系统的r i n 9 0 环才能 访问硬件。不同操作系统进入r i n 9 0 环的方法各不相同,在w i n d o w s 9 x 系统 下,常用虚拟设各( v i r t u a lxd e v i c e 即v x d ) 驱动程序的方式,在w i n d o w s n t 2 0 0 0 x p 系统下,采用视窗驱动模型( w i n d o w sd e v i c em o d e l 即w d m ) 方 式。 数控测鼻一软件系统设计与实现第二章数控潮井软件系统 件实时记录在计算机硬盘上,分为采集的原始数据和处理后的用户数据,目 的是将数据记录文件送到绘解中- i i , 通过各种解释软件对地层进行精细解释。 2 。4 测井客户程序的设计与实现 软件开发技术先后经历结构化程序设计、面向对象程序设计和组件程序设 计三个发展阶段,不同时期数控测井软件的具体实现方法各不相同。本节根 据数控测井软件的功能,结合油田实际要求,按照基于组件的程序设计方法 胯j ,讨论数控测井软件系统作为测并客户程序的详细设计和具体实现。 2 4 1 客户程序的设计 利用组件程序设计的方法,根据测井软件功能和图2 3 所示软件结构图, 将通用的各模块设计为组件,客户程序调用这些组件实现测井过程,流程如 图2 - 4 所示。在测井客户程序中,根据测井工艺的要求,用户通常可以运行 在三种不同的模式,一是空闲等待状态,利用w i n d o w s 系统时间片消息 w m _ t i m e r ,设置时间片大小和相应的消息处理函数,在函数中完成测井数 据的采集、工程值转化、信号滤波、曲线计算、特殊处理和曲线的屏幕显示, 流程如图2 5 所示;二是时间驱动,根据测井服务表中的时间驱动设置的时 间片大小,时间片到就执行时间驱动响应函数:三是深度驱动,根据测井深 度系统产生的深度中断,接收到中断消息时执行深度中断响应函数,在时间 驱动和深度驱动响应函数中不仅完成测井数据的采集、工程值转化、信号滤 波、数值计算、特殊处理和曲线的屏幕显示,而且还要进行不同测井信号的 深度延迟、数据记录、绘图仪资料绘制,流程如图2 - 6 所示。 数控涮并软件系统设计与实现 第二章数控测井软件系统 图2 - 4 数控测井软件流程图 数控测并软件系统设计与实现 第二章数控测井软件系统 根据测井软件结构图和流程图设计客户程序时,重点是要解决组件的调用 关系,尽可能减少传递的参数,使用接口函数完成功能调用,使得整个系统 结构清晰;难点是建立软、硬件间的数据通道,减少测井软件对硬件数据结 构的依赖性,为此定义测井数据对象,分剐保存1 6 道模拟信号、1 6 道p c m 编码信号、4 道计数率信号和4 道声波信号,在数据对象中还定义一个深度缓 冲区,以保存系统的深度数值。 开始 、- _ , 土 数据采集 二i 二 1 1 点滤波 二1 二 工程值转化 数值计算 i 特殊处理 丁 曲线显示 l 结束 图2 - 5 空闲等待响应函数 图2 - 6 时间和深度响应函数 数控钡0 并软件系统设计与实现 第二章鼓控测并软件系统 2 4 2 测井客户程序的实现 在解决数控测井软件的功能和程序结构流程,完成测井客户程序设计后, 本节详细讨论基于组件的测井客户程序的实现步骤,并给出客户程序对组件 的引用实例 9 1 。 1 、客户程序调用组件的基础 客户程序调用组件必须用到三个方面的知识,一是c o m 库,二是组件类 型库的引入,三是组件接口智能指针的定义。c o m 库是c o m 标准的实现, 不仅为c o m 规范的实现提供了一些核心服务,而且保证所有组件按照统一 方式进行操作,在实现基于c o m 的应用程序时,直接利用c o m 库提供的 a p i 函数完成c o m 间的通讯,因此c o m 库在c o m 对象体系中起着非常重 要的作用,是c o m 组件程序和客户程序之间的桥梁【1 0 】。客户程序要使用组 件提供的各种功能,必须引入类型库。# i m p o r t 指令是引入类型库的一种方法, 编译器可以从类型库中读出相关信息并创建组件接口的包装类,同时在客户 程序的输出路径中产生两个文件,后缀分别为“t l h ”和“t l i ”,包含包装 类的函数实现,结构声明和d c c l s p c c ( u u i d o f ( ) ) 声明。接口智能指针 定义,包括接口的所有方法和属性。通过引入类型库得到组件接口的智能指 针,是客户程序使用组件接口函数和变量的手段。 2 、客户程序实现的步骤 ( 1 ) 创建客户程序l o g g i n g 工程。 利用v i s u a lc + + 6 0 集成环境提供的a p p w i z a r d 工具,新建一个m f ce x e 工程,使用所有缺省设置值,就可以得到一个测井客户程序的框架,按照图 2 2 所示的软件结构和图2 3 、2 - 4 、2 - 5 所示流程,结合2 3 节介绍的数控测 井软件的功能要求,实现客户程序、完成数据的处理,调用第三章介绍的各 组件完成数据表现、服务表读取等功能。下面仅以曲线显示组件为例,介绍 客户程序如何使用组件,调用组件提供的函数实现各种功能。 数控测f 软件系统设计与实现第二章数控测井软件系统 ( 2 ) 初始化c o m 库 客户程序在引用组件服务器时要使用c o m 库函数,应在使用之前,对 c o m 库进行初始化,方法是在应用程序类的i n i t i n s t a n c e ( ) i 函数中调用a p i 函 数a f x o l e l n i t 0 。 ( 3 ) 引入类型库 引入类型库的方法有多种,结合实际使用# i m p o r t 指令法。在客户程序工 程的s t d a f x ,h 文件中,添加如下代码,指定组件类型库所在的目录。 # i m p o r t ”s h o w c u r v e c o m 、s h o w c u r v e c o m t l b n on a m e s p a c e 编译后将在组件目录的d e b u g 或r e l e a s e 子目录下产生相应的+ t l h 和 t l i 两个文件,这两个文件定义了该组件的包装类和接口方法,客户程序就可以 通过组件提供的接口函数实现相应的功能。 ( 4 ) 定义智能指针 在测并客户程序l o g g i n g 工程中定义组件接口的指针变量即s h o w p t r ,利 用指针的成员函数和变量访问组件的接口函数和接口变量,定义如下: i s h o w c u r v e s h o w p t r ; ( 5 ) 创建组件对象 在v i s u a lc + + 环境中,利用c o m 库函数c r e a t e i n s t a n c e 创建s h o w c u r v e 组件对象,该函数的参数为组件的名称,调用成功后该指针指向给定的对象。 代码如下: s h o w p t r = 士兀i i f ( f a i l e d ( s h o w p t r c r e a t e l n s t a n e e ( _ _ u u i d o f ( s h o w c u r v e ) ) ) ) a f x m e s s a g e b o x ( “s h o w c u r v ec o m p o n e n t n o tf o u n d ”) ; ( 6 ) 组件调用 客户程序在需要的地方通过组件接口的智能指针s h o w p t r 调用组件接口 中定义的方法,如调用屏幕显示的初始化屏幕上网格接口函数的方法如下: s h o w p t r - i n i t g r i d 0 : ( 7 ) 释放组件对象 1 4 数控测井软件系统设计与实现第二章数控测井软件系统 创建组件对象后,系统中占用一定的内存和资源,在使用完后一定要释放 这些对象,以腾出系统资源。利用c o m 库函数r e l e a s e ( ) 释放s h o w c u r v e 组 件对象,代码如下: s h o w p t r - r e t e a s e o ; 按照以上几个步骤,我们还在测井客户程序中实现服务表组件、记盘组件、 绘图组件的引入、智能指针的定义、组件对象的创建、释放和接口函数的调 用,通过组件提供的函数实现测井系统要求完成数控测井软件的功能。 数控测井软件系统设计与实现第三章测井组件设计与实现 第三章测井组件设计与实现 上一章详细讨论了数控测井软件系统的组成和功能,介绍了基于组件的测 井软件的设计与实现。本章探讨组件程序设计方法,介绍测井通用组件的设 计与实现,给出每个组件的接口变量和接口函数。 3 1 组件程序设计思想与应用 3 1 1 发展历史 结构化程序设计方法是上世纪7 0 、8 0 年代普遍采用的程序设计技术,设 计思路是自顶向下、逐步求精;其程序结构是根据系统的功能结构划分成若 干模块组成树状结构:要求各模块间的关系尽可能简单,功能相对独立; 每个模块内部均由顺序、选择、循环三种基本结构组成;其模块化实现的具 体方法是使用子程序。优点是采用模块分解与功能抽象,自顶向下,分而治 之的手段,有效地将一个较复杂的程序系统分成许多易于控制和处理的子任 务,由独立编程的子程序模块完成。但其缺点是程序结构复杂,维护困难。 面向对象程序设计方法是上世纪9 0 年代流行的程序设计方法,基本思想 是吸收结构化程序设计的所有优点,考虑现实世界与对象解空间的映射关系, 使现实世界的问题求解尽可能简化,采用数据抽象和信息隐藏技术,将对象 及对象的操作抽象成一种新的数据类型类,考虑不同对象间的联系和对 象类的重用性,是解决传统软件开发问题的最好方案,但软件的重用仅限于 程序源代码级,而且要求对象程序和使用对象的客户程序使用同样的编程语 言。 随着软件科学的不断进步,尤其是近几年i n t e r n e t 的飞速发展,软件应用 领域更加广阔,这要求软件跨语言设计、跨平台运行和更好的互操作性,实 现分布式应用。组件程序设计方法随之产生,基本思想是将复杂的应用程序 设计成一些小的、功能单一的模块,这些模块不是结构化程序设计的简单代 1 6 数控测井软件系统设计与实现 第三章铡井组件设计与实现 码集,而是一个自给自足的组件,既可运行在同一台计算机上,也可运行在 局域网、广域网甚至i n t e m e t 上,但要求组件程序间必须遵循严格的规范。为 此1 9 9 3 年微软引用面向对象的思想,提出c o m ( c o m p o n e n to b j e c tm o d e l ) 作 为组件间的通讯标准。目前已出现d c o m 和c o m + 技术。 3 1 2 组件程序设计的特点 将若干组件集成在一起,以搭积木式的工作无缝拼接功能模块来组成应 用程序( 如图3 1 所示) ,是计算机软件行业长期以来企盼的事情。软件组件是 基于面向对象技术的,支持拖放( d r u ga n d d r a g ) 和即插即用( p l u ga n d p l a y ) 的软件开发概念,基于组件的开发方法,具有开放性,易于升级和易维护等 优点,它以组合、继承、设计组件为基础,按照一定的集成规则,分期递增 式开发应用系统,缩短开发周期。 图3 - 1 用组件构造应用程序 组件程序设计思想1 2 1 开发软件系统有以下几个特点: 1 、组件易替换:在复杂的应用软件中,使用组件技术后将软件分成一个 个组件模块,程序修改或升级时只修改或替换相关的组件,而不影响其它组 件程序和客户程序。 2 、适应业务需求更改:软件的业务需求会随着软件的开发和用户的使用 不断涌现,运用组件方法后,可将业务放在组件中,当业务规则改变时,只 需要修改原组件或重建新组件即可,更新的是局部程序,使得程序的调试和 测试更为方便。 3 、实现二进制代码重用:组件之间在二进制级别上进行继承和重用,只 数控测井软律系统设计与实墁 第三章测井组件设计与实现 需一次编写代码而多处使用。 4 、有助于并行开发:应用软件由许多组件组成,只要组件接口设计正确, 这些组件的实现可以并列进行,缩短开发的周期。 3 1 3 组件接口 组件接口是组件程序设计的关键,是访问c o m 对象的唯一途径,组件 对象之间通过接口进行交换信息,客户请求组件服务也通过接口才能完成。 组件接口是一组逻辑上相关的函数集合,即接口函数,是组件与客户程序之 间通讯的协议。c o m 的核心接口是i u n k n o w n ,每个组件都必须实现这个接 口,其它所有接口都从它派生。组件可以包含多个c o m 对象,每个对象可 以实现个或多个接口,如图3 - 2 所示。 图3 2 组件、对象和攘1 :3 阃的关系 接口作为客户程序与组件程序间的桥梁 “】,具有以下特性: 1 、二进制特性:接口规范并不建立在任何编程语言的基础上,只规定二 进制级的标准。任何语言只要有足够的数据表达能力,就可以对接口进行描 述,从而可以用于与组件程序有关的应用开发。 2 、接口不变性:接口是组件客户和组件对象之闻的桥梁,如果经常发生 变化,则客户程序和组件程序也要跟着变化,这对于应用系统的开发非常不 利,也不符合组件化程序设计的思想。所以接口应该保持不变。 3 、继承性:组件接口具有不变性,但不变性并不意味着接口不再发展, 数控铡劳软件系统设计与实现第三章测井组件设计与实现 随着应用系统和组件程序的发展,接口也需要发展,通过接口继承性来实现。 接口继承只是说明继承,即派生的接口只继承基接口的成员函数说明,并不 继承接口的实现,因为接口定义不包括函数实现部分,同时,接口继承只允 许单继承,不允许多重继承。 4 、多态性:多态性是面向对象系统的重要特性,c o m 对象具有多态性, 其多态性是通过接口来体现。多态性使得客户程序可以用同一方法处理不同 的对象,只要它们实现了同样的接口,如果几个不同的c o m 对象实现了统 一接口,则客户程序可以用同样的代码调用这些c o m 对象。 3 2 测井软件结构及功能划分 测井软件的功能是各种测井原理和方法的实现,其结构必须符合测井流程 和现场用户的实际需要,对软件结构合理地划分功能模块是测井组件程序设 计的基础,这一阶段的工作是在借鉴国外测井软件的基础上,与油田用户相 互讨论完成的。 3 2 1 基于组件的测井软件结构 在2 - 2 节详细讨论了数控测井软件系统的组成和功能,基于组件的测并软 件可将这些功能设计成组件,用组件搭构系统。值得一提的是服务表,它是 控制系统运行的各种参数,在系统中多处被使用。 根据图2 2 所示的软件功能图,将数据采集用驱动程序实现,数据处理部 分在测井客户程序中完成,显示、绘图、数据记录等数据表现形式和服务表 编辑与读取功能分别设计成组件,测井客户程序通过调用组件的接i :3 函数完 成这些功能,通过接口变量实现客户程序和组件之间的变量传输,从而构造 测井软件系统,其系统结构如图3 3 所示。 数挎测升软件系统设计与实现 第三章测井组件设计与实现 数据采集 测井程序 ( 数据处理) j rt1 显绘图组件记 示盘 组组 件件 绘图底层组件 lli +0 读取服务表组件 盈3 - 3 基于组件的测井软件结构 硬件驱动 客户程序 既是组件 又是客户 3 2 2 组件的功能划分 曲线显示、绘图和数据记录是数控测井系统独立的组成部分,分别设计为 组件,独立开发、编译,但它们都要使用服务表中的信息,因此将编辑、读 取服务表功能设计为一个组件。使用时向该组件传递服务表文件名,通过接 1 :3 读取函数即可得到服务表( 包括曲线表、仪器表等) 信息。显示、绘图、 记盘对于客户程序来说是组件,完成客户程序需要的功能,而对于读取服务 表组件来说又是客户程序,调用该组件以获取服务表的信息。在确定绘图组 件功能时,由于绘图部分需要对物理设备一绘图仪进行操作,而不同的物理 设备又有不同的驱动程序,特设计绘图底层驱动组件,该组件实现不同设备 的驱动,为绘图组件和特定的绘图仪设备驱动程序提供接口。各组件的基本 功能如下: 1 、服务表组件服务表是测井系统的核心。系统中多个地方都要利用服务 表中的信息。服务表组件提供读取接口函数,应用程序通过该接口读取服务 表中的所有信息;将服务表中的信息定义成结构作为接1 :3 变量,调用接口函 数控测片软件系统设计与实现 第三章测,p 组件设计与实现 数后获得这些接口变量,返回给应用程序,应用程序调用接口函数时提供需 要读取的服务表名。 2 、显示组件显示是将测并采集的数据经过计算处理后的数值以连续 曲线的方式在显示器上滚动显示。显示组件将客户程序需要实现的功能( 如 刻度标尺、工程高低值、曲线绘制等) 做成接口函数,客户程序在需要的地 方直接调用接口函数实现相应的功能。 3 、绘图组件绘图是指将测井客户程序准备好的数值在8 2 0 绘图仪上 以曲线的形式绘制。绘图组件只接收来自应用程序的变量,在具体的物理设 备上出图,不需要向客户程序传递数据,将应用程序需要的各种独立的功能 设计为一个个接口函数,应用程序在需要的地方调用。 4 、记盘组件记盘是将测井系统的数据记录到计算机硬盘上,这些数据 既有原始的采样数据和经过处理后的用户数据,还包括测井现场的各种参数。 记盘组件需要应用程序提供记盘的文件名、记录的数据和文件头记录的测井 信息,还需要定义数据记录存放格式,提供数据记录的接口函数,应用程序 调用这些接口函数完成数据的记录。 3 组件服务器的设计与实现 本节详细讨论测井组件服务器的设计与实现【1 5 】。实现c o m 组件对象有三 种方法。即直接使用c + + 、使用微软基本类库( m f c ) 和使用活动模板库( a t l ) 。 三种方法各有优点,m f c 是一个用户界面库,注重界面的设计,不重视速度, 实现的组件相对比较容易,但写接口的工作比较繁琐,而且接口速度较慢; 相对而言,a t l 向导写接口比较简单。强调接口速度。根据m f c 和a t l 两 种不同库的特点,如果组件对象需要在用户界面上做很多工作就利用m f c 来 实现,否则选用a t l 库,以提藩接口访问速度,减少定制接口的工作。论文 在实现中使用a t l 模板库。 数控测并较 串系统设计与实现 第三章测井组件设计与实现 3 3 1 服务表组件的设计与实现 服务表【4 】是沿用美国阿特拉斯公司c l s 3 7 0 0 数控测井系统的技术,将测 井系统中多次应用的既与硬件紧密相关又控制软件的各种信息写入服务表 中,用来控制测井系统。对硬件设备进行初始化,提供软件需要的各种参数。 主要信息包括仪器表、采样命令表、继电器状态表、曲线表,这些信息都用 控件显示出来,既利于提示用户又有利于修改,使用户一目了然。 由于应用程序使用的许多控制变量都保存在服务表中,服务表组件必须将 这些变量设计为接口变量才能被客户程序访问;服务表中的仪器数、曲线数 等都可能有多支( 条) ,设计的仪器表、采样命令表、继电器状态表、曲线表 都是结构,用这些结构声明接口变量,应用程序通过调用读取接口函数给接 口变量赋值。结构名和功能描述如表3 1 所示。所有结构都在接口描述语言 ( + i d l ) 文件开始处定义。相互间关系如图3 4 所示。服务表组件提供读取接口 函数,客户程序要通过该函数读取服务表中的信息。 表3 - 1 服务表组件接口变量结构定义表 结构名功能描述 l o g t o o l保存测井组合中各支仪器的信息 l o g s a m p保存测并曲线采样命令 l o g s a t a u s保存不同测井组合硬件继电器状态的设置 p r o c t y p e保存计算曲线的相关曲线的曲线名、曲线数目和计算类型 l o g c u r v e保存各条曲线的控制信息,用于控制曲线的显示、绘图等特性 l o - g s e r v i c e定义结构变量保存服务表的所有信息。 数控测并软件系统设计与实现第三章测井组件笈计与实现 服务表组件的实现包括接口变量定义和接口函数的实现。接口函数的实现 方法是向组件工程添加新的a t l 对象r e a d ,生成c r e a d 类和t r e a d 接口,在 接e l 中添加r e a d s e r v i e e 方法即接口函数,方法原型如下: h r e s u i j r e a d s e r ( 【i n 】b s t rf i l e n a m e , o u t ,r e w a l l o g s e r v i c e + s e r i n f o ) ; 其中 【i n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论