VBA宏在流体性质优快判别中的应用 | ![]() |
2. 中国石油化工股份有限公司上海海洋油气分公司研究院, 上海 200120
2. Institute of SINOPEC Shanghai Offshore Oil & Gas Company, Shanghai 200120, China
在地质研究和测井解释中,常常需要对各种数据进行处理和成图,且这些工作重复性频繁,目前虽可以利用多种编程软件(如Matlab,VC等)来完成这些工作,但利用这些工具,往往需要很多精力来进行学习和编制软件,这使研究人员往往力不从心。因此积极寻找一种这样的工具,它既能快速完成重复的工作,且不需要进行复杂的编程工作,是目前很多研究人员迫切需要的[1]。流体性质识别是测井解释中一项非常重要的工作,在利用测井等资料识别流体性质的日常工作中,根据测井曲线解释出参数再对比多个标准的方法,不仅速度慢,效率低,而且解释结果也不能直观快速准确地显示出来。所以寻求一种速度快、直观显示的显示方法颇具意义。笔者认为Excel VBA编程是值得推荐的一种方法,这一方法在统计分析等方面早有应用,而在储层流体识别中使用相对较少。Excel VBA语句编写简单,同时宏程序直接面向Excel,使得数据获得和处理更加方便快捷,省去了对文件的输入输出操作,易于控制。特别是在图表数量多、数据量大的情况下,这一优势表现得尤为突出。下面就结合流体性质快速判别程序,对Excel VBA的开发作一些简要的介绍和探讨。
1 关键原理 1.1 VBA宏简介VBA(Visual Basic for Application)是从流行的Visual Basic编程语言中派生出来的一种面向应用程序的语言,具有界面简洁、友好,数据输入和结果输出方便,运行简单,兼容性和可移植性强等特点。用户在编写应用程序后,只需点击有关的按钮,即可启动相应的应用程序,并立即得到结果,大大简化了用户的操作。VBA是依附于Office等应用程序的一种自动化语言,它几乎继承了VB的所有功能,因此功能非常强大。它结合了VB语言的优点,并且能够充分利用Office各个应用程序自身包含的函数来进行编程,大大降低了编程的复杂度,同时又实现了频繁数据操作的自动化,节省了大量的时间。利用VBA语言编写的数据处理和图形绘制程序,可对地质数据批量处理,使地质人员更专注于地质研究工作,同时宏程序直接面向Excel,使得数据获得和处理更加方便快捷[2]。
1.2 交会图技术测井信息是地层岩性、物性及流体性质的综合反应,单一的测井信息不能准确反映储层流体性质。在实际的测井解释过程中,测井分析人员通常是根据个人的经验,综合测井资料、邻井测试资料,进行油水层的判别,这样往往增加测井解释的随意|生。为了提高对储层流体性质的认识,找到简单而行之有效的方法十分必要。因此利用交会图技术这一间接的方法进行流体性质识别成了必然[3]。
测井交会图是用于表示地层的测井参数或其他参数之间关系的图形,是测井解释常用的一种技术。在交会图上能清晰地看出油气水的分界和所分布的区域,能较直观地识别流体性质。由于单一的测井信息不能准确地区分储层流体特征,所以交会图通常选用两种或两种以上从不同角度反映含油、气、水特征的测井参数如孑L隙度、饱和度差值、气水比等参数进行交会,并从这些地区经验图版中选取界限明显、效果较好的多个交会图,按图上数据点的分布特征来进行地层评价[4],这样可以提高识别流体的精度。测井数据交会图法是识别储层流体性质简单而有效的方法,能够实现良好的人机交互,而且能把大量的信息用图示的方法反映出来[5],有助于解释参数的选取和规律的分析。
例如低孔低渗储层,针对研究区地质特征,主要选用了如下六个效果较好的交会图版,以备使用。交会图中颜色相同的数据点流体性质相同。图 1中图版(1)、(2)、(3)、(4)中点的大小反映油层产量高低,图版(5)、(6)中点的大小反映油层气油比高低。从图中可以看出油、气层和水层分界较明显,可以用于判别储层流体性质。
![]() |
图 1 优选的地区经验图版 |
在石油勘探中,利用测井识别流体性质的传统做法是由解释人员根据各个参数,人工地与地区解释标准做对比,然后再将所有对比结果进行综合,得出结论。这样重复性工作量大,而且识别效率很低,也非常容易出错,特别是在某些储层参数处于临界值时,就更难判断了。本研究根据地区资料绘制交会图版,设定好需要评价的储层参数后,利用VBA语言编程会自动将参数一次性投影到所有交会图版中,并直观地在相应区域显示以便识别流体性质。这样大大地简化了人工识别的工作量,而且解释结果直观明了,提高了工作效率和准确性。
2 程序设计设计此优快判别程序的总体思路是:在整理好研究区地质和测井数据之后,选取该地区效果较好的图版,开始运行程序,程序会自动将精选的储层参数投影到图版中,用户可根据其在图版中的相应区域直观快速地选择流体性质,程序将循环运行直到所有层位的储层全部识别完毕,实现了流体性质识别的自动化。利用VBA编译的流体性质快速判别程序的流程见图 2。
![]() |
图 2 程序设计流程框图 |
根据以上原理和思路并充分运用EXCEL内部函数与VBA的循环功能,力尽用最简洁的代码来完成任务[6]。在用户选择了图版和待解释层位的数据所在的工作表之后,程序自动确定图版数据源所在的工作表,再根据图版选择流体性质,最后将结果录人。程序的代码及注释如下:
(1) 选择新井数据和图版工作表:程序根据用户选择的新井数据和图版所在的工作表,读取其名字和路径。
Workbooks("自动定解释结论.xlsm").Activate
选择工作表.Show
FName=Application.GetOpenFilename(filefilter:="Excel文件,*.xlsx,Excel文件,*.xls,文本文件,*.txt,所有文件,*.*",_Title:="打开图版工作表")
Workbooks.Open Filename:=FName
For i=1 To js
ListBox1.Addltem Worksheets(i).name
Next i
(2) 确定数据源所在的工作表:程序根据用户选择的工作表,自动读取图版所在的位置和新井数据。
Call DataFind(crossplot)
Public Property Let SetResult(ByVal LiquidPro)
Result=LiquidPro
End Property
Public Property Let plot(ByVal PlotLoc)
crossplot=PlotLoc
End Property
(3) 根据图版选择流体性质:程序自动打开优选的图版,并以黄色坐标点将新井数据投影到所有图版中,这样用户可以根据其所落入的区域,综合选择流体性质。
Worksheets(crossplot).Activate
选择流体性质汇总.Show
Private Sub OptionButton1_Click()
图版法定结论.SetResult=-"气层"
End Sub
(4) 录入用户选择的解释结果:程序根据用户选择的流体性质,自动将结果录入到相应位置。
Worksheets(welldata).Cells(i,DataColumn+1)=Result
3 实例和应用效果一般情况下,单一的测井信息不能直接、准确地区分储层流体特征,因此我们需要综合很多测井参数和储层参数来判别流体。这就需要将待判别层位的参数值在各个图版中进行比对,如果参照所有的图版,势必会增加重复的工作量,而且也极易造成判别错误,特别是在某些储层参数处于临界值时,就更难判断了。利用Excel VBA编程将待判别层位的测井参数值一次性投影到所有识别图版中,既比较直观,又可以综合比对其在各个图版中的区域,最终得出准确的流体性质。
比如,针对低孔低渗储层,根据研究区域地质资料,利用测井资料再结合测试资料绘制交会图版,从中优选油气水界限明显、区分效果较好的若干个图版并将之汇总在一个工作表中(图 3),以便直观地识别流体性质。然后再将密度、中子、声波、孔隙度、饱和度等可以用来识别流体性质的待解释的新井储层参数数据按照相应格式整理在另一个工作表中,然后启动程序。
![]() |
图 3 图版和新井数据选择框图 |
程序启动后按选择的相应路径打开图版所在的工作簿,根据程序提示,在如图 3所示的对话框中,选择新井数据和图版所在的工作表。程序会将新井测井数据自动投影到各个交会图版中,并且落入图版中相应的区域,如图 4所示。图中新出现的黄色点子表示新井数据在图版中的投影,可看出该层在各个图版中投影的区域一致,落于油气层区域,然后程序会自动弹出一个“流体性质选择"对话框,如图 5所示。这样便可综合该层在所有图版中所处的区域来直观快速的判别流体性质,并选择相应结果。识别后程序自动将结果录入到指定的解释结论栏中。第一个层识别完毕后,程序会自动判断是否所有的新井数据都判别完,若未完成将自动转入第二个层的解释工作,如此循环进行,直到工作表内所有储层都判别完毕。
![]() |
图 4 低孔低渗储层流体性质判别图 |
![]() |
图 5 流体性质选择图 |
采用本程序识别了本地区5口井11层的储层流体,表 1为利用本程序和图版识别的流体性质与试油资料对比表,由表可知用本程序自动识别的流体性质与试油结果吻合度很高,减少了由于人为因素出现的误差,提高了准确性,并且能够将识别过程和结果直观地展示给用户,可操作性强。此程序通用性很强,只要优选好工区交会图版,利用程序加载新井数据,就可实现针对本地区的储层流体的快速判别。
表 1 新井流体性质快速识别结果与测试结论对比 |
![]() |
另外,我们也将此种方法运用到了低饱和度储层的流体性质的判别,也取得较好效果。根据地区地质特征和油气水的测井响应特征,得到相关储层测井参数(图 6所示5、6号层),根据原始曲线和解释成果数据,选择针对低饱和度储层油气水区分效果较好的判别图版,比如饱和度差值,气水比,含水饱和度与泥质含量等进行交会[7]。按照上述方法及流程,编译和运行程序,便可快速、直观的得出该研究区低饱和度储层的流体性质,如图 7所示。
![]() |
图 6 低饱和度储层测井处理成果图 |
![]() |
图 7 低饱和度储层流体性质判别图 |
利用流体性质优快判别程序,可以直观快速的识别储层流体性质,以及检验、评价交会图版的精度,为现场快速解释和测井综合解释提供快捷的方式和方法。该方法也可以借鉴到其他工程领域中。
4 结论利用测井等资料的交会图版是识别储层流体性质的简单而有效的方法,具有很强的针对性,简单、快速、直观。本程序是利用VBA语言编译,简便实用,并以计算机自动直观显示代替了.人工识别,大大地减轻了工作量、提高了工作效率和判别的准确性。程序实现了自动读取数据的行和列,自动将数据投影至多个交会图版中,并自动将用户选择的流体性质添加到解释结论栏,实现了准确、快速、直观地识别储层流体性质,并取得了较好的应用效果。应当指出的是,由于在不同的地区,不同的沉积环境,油气水的测井响应特征有很大差异,要很好地判别流体,单一的交会图有时是做不到的。要根据不同地区不同的地质特征及储层流体性质的差异,充分利用岩心、测试资料,分析油水层测井响应特征,建立适合研究区的交会图版,选择合理的地质信息进行综合识别,这时最好是利用多种图版进行多投点,才能最终解决实际问题,为储层测井评价奠定坚实的基础。
[1] |
鲍祥生, 梁兵, 周海燕, 等. VBA和EXCEL函数结合编程在数据处理中的应用[J]. 石油工业计算机应用, 2009, 64(4): 9-12. |
[2] |
王高成, 郭玲, 陈兴炳, 等. 基于VBA的储层评价数据处理方法[J]. 物探与化探, 2009, 33(6): 718-722. |
[3] |
雍世和, 张超谟. 测井数据处理与综合解释[M]. 山东东营: 石油大学出版社, 2007: 134-139.
|
[4] |
陈刚. 一种新的识别低电阻率油层的交会图及其应用[J]. 中国石油大学学报(自然科学版), 2008, 32(3): 36-39. DOI:10.3321/j.issn:1673-5005.2008.03.007 |
[5] |
赵建, 高福红. 测井资料交会图法在火山岩岩性识别中的应用明[J]. 世界地质, 2003, 22(2): 136-140. DOI:10.3969/j.issn.1004-5589.2003.02.006 |
[6] |
WalKenbach. Excel 2003高级VBA编程宝典[M]. 盖江南, 王勇, 等, 译. 北京: 电子工业出版社, 2005.
|
[7] |
陈现, 高楚桥. 双饱和度法在三湖地区低饱和度气层识别中的应用[J]. 石油物探, 2011, 50(1): 93-98. DOI:10.3969/j.issn.1000-1441.2011.01.015 |