基于VB.NET的声波时差测井模型实验装置上位机软件设计

2016-01-16 02:50刘刚,王岗泰,乐凯军
石油管材与仪器 2015年3期
关键词:上位机

·开发设计·

基于VB.NET的声波时差测井模型实验装置上位机软件设计*

刘刚王岗泰乐凯军周洋何小英李嘉奇吴爱平

(长江大学机械工程学院湖北荆州434023)

摘要:文章以声波时差测井模型实验装置的设计为背景,在Visual Basic.NET环境中对声波时差测井模型实验装置的上位机软件的设计进行了详细说明,其中包括串口设置、数据的接收、计算、绘图、数据保存及回放。通过上位机与下位机的联调,验证了上位机软件的正确性和直观性。

关键词:Visual Basic.NET;上位机;声波时差测井

作者简介:第一刘刚,男,1992年生,长江大学机械工程学院机械11104班学生。E-mail:a289297@163.com

文章编号:中图法分类号:TP274

收稿日期:(2014-08-31编辑:屈忆欣)

Upper Computer Software Design of Experimental Equipment for Travel Time of Sonic Logging Based on VB.NETLIU GangWANG GangtaiYUE KaijunZHOU YangHE XiaoyingLI JiaqiWU Aiping

(SchoolofMechanicalEngineering,YangtzeUniversity,Jingzhou,Hubei434023,China)

Abstract:This paper discussed the design of experimental equipment for travel time of sonic logging. The Upper computer software design of experimental equipment for travel time of sonic logging based on Visual Basic.NET was described in detail, including: settings of serial ports, receiving, calculating, drawing, saves and data playback. The correctness and vivacity of upper computer software was verified by the joint debugging of lower computer and upper computer.

Key word: visual basic.NET,upper computer,travel time of sonic logging

0引言

声波时差测井,又叫声波速度测井,即测量滑行波通过地层传播的时差,是目前用以估算孔隙度、判断气层和研究岩性的主要测井方法之一[1]。声波时差测井模型实验装置采用了声波时差测井的原理,能控制测量探头的移动,上传数据并对测量数据进行处理及图形显示。实验装置通过实物让使用者直观地了解声波时差测井的原理,也以硬件和软件结合的方式让使用者明白测井的方法。上位机在测井中有重要的作用,它不仅可以控制井下仪器的工作状态,而且能以深度驱动方式记录测量数据,便于以后的研究。本文介绍了一种声波时差测井模型实验装置上位机软件的设计方法。

1上位机软件功能需求

根据声波时差测井模型实验装置的特点,上位机要能够实现数据可视化即显示地层信息的变化。在实验声波探头开始移动时,上位机要接收下位机传来的全部数据,并且对这些数据进行解析,转换成深度和时差值后,再把这些值以曲线的形式反映。上位机还应该具有保存数据的功能[2],在实验接收后,能够选择指定的数据进行回放。上位机软件主要功能如图1所示。

图1 上位机软件的主要功能

2开发环境的选择

在本设计中,开发环境选择的是VB.NET。作为VB6.0的后续版本,VB.NET不仅继承了VB6.0简单、易学、开发周期短的特点,而且做到了完全面向对象,很容易实现重载[3]。同时VB.NET 在代码编辑时加入了很多人性化的功能。代码有语法错误会自动提示,加快了开发的速度。如果程序运行后发现错误,VB.NET还会在错误旁边给出修改建议。在很长的一段代码中很难找到先前命名的变量,只要点击其中一个变量名,在其他地方的相同变量会自动以加深背景颜色来突出显示。这些功能都能够提高开发的效率。

3上位机软件设计

3.1串口设置

要正确的接收下位机传到上位机的数据,首先要对串口进行设置。串口的属性包括:波特率、数据位、停止位和奇偶校验[4],这些属性要与下位机的一致,在本实验装置中,这些属性值分别是:19 200 Hz、8位、1位、None 。在实现了基本功能后,还要有串口异常事件的处理,包括:串口未打开,串口被占用等。每一个异常事件都要有相应的程序来提示用户进行正确的设置。

串口异常事件的代码:

Comm_Error:

If Err.Number = 8002 Then

MsgBox("串口错误,请重新打开串口", vbOKOnly, "错误提示")

End

End If

If Err.Number = 8005 Then

MsgBox("串口已打开")

Else

MsgBox("其他错误")

End If

3.2数据的读取及转换

从下位机传过来的数据首先进入计算机的输入缓冲区,上位机软件从输入缓冲区获取数据后再进行数据的转换。串口每发送一次数据,电脑就接收一次数据。根据下位机与上位机的协议,下位机发送来的每组数据包括10个元素,其数据构成如图2所示。每组数据首先保存在一个多态型数组中,然后用16进制转10进制转换函数转换为10进制数。为了防止其他数据的干扰,上位机要对每一组数据进行检验[5]:前后特征位数据是否和协议中的相同。如果相同,这些数据才会进行下一步计算。在计算深度值时,根据实验装置的原理得出的计算深度值的公式把包含3个元素的数据转化为1个深度值。计算时差值同理。深度值与时差值都计算完后,把这两个数据保存到一个数组中,用于绘制时差—深度曲线图。

图2 上位机接收的数据构成

上位机读取及检测数据的代码:

For i = 0 To UBound(byteData)

strReadString = strReadString & CStr(byteData(i)) & " "

Next

For i = 0 To UBound(byteData)

arr_intNotSelected(i) = Val(byteData(i))

strTemp += CStr(arr_intNotSelected(i))

Next

If arr_intNotSelected(0) = 85 And arr_intNotSelected(1) = 85 And arr_intNotSelected(8) = 170 And arr_intNotSelected(9) = 170 Then

For i = 0 To 5

arr_intSelected(i) = arr_intNotSelected(i + 2)

Next

End If

3.3时差—深度曲线的绘制

动态曲线图可以直观地显示实验装置中模拟地层的变化[6]。首先对线条的线型和颜色进行设置,为了突出显示时差—深度变化曲线,该曲线的颜色设置为红色,然后在程序中使用PicBox控件,调整该控件到合适的位置与尺寸。曲线图就在这个控件上显示,接着对控件进行初始化设置,包括使用clear(color.white)语句把控件的背景设置为白色,在控件上绘制坐标轴及网格。绘制曲线是在每一次串口接收数据后进行的,串口接收到两组有效数据,将它们转换后分别保存到两个数组中,每个数组中包含2个元素,时差值作为X轴坐标,深度值作为Y轴坐标。这样2个数组就是2个点,使用DrawLine函数连接这两个点就形成了一条线。在串口接收到第3组数据后,再连接第2个点和第3个点,依次类推,最后就形成了动态的曲线。在图3中可以看到,时差—深度曲线值有3处明显的变化,这说明探头经过了不同的地层。

绘制时差—深度曲线的代码:

Dim p_red As New Pen(Color.Red)‘曲线的颜色设置为红色

g_Depth.Clear(Color.White)

If arr_intNotSelected(0) = 85 And arr_intNotSelected(1) = 85 And arr_intNotSelected(8) = 170 And arr_intNotSelected(9) = 170 Then

If jf >= 2 Then

g_Depth.DrawLine(p_red, arrDecDepthData_X(jf-1) / single_adjustment_Depth_X +30,arrDecDepthData_Y(jf-1)*single_adjustment_Depth_Y+30,arrDecDepthData_X(jf)/single_adjustment_Depth_X+30,arrDecDepthData_Y(jf)*single_adjustment_Depth_Y + 30)

End If

End If

图3 上位机运行时时差—深度曲线图

3.4上位机对下位机的控制

由于实验装置采用深度驱动的方式,在探头运行到实验装置的尽头时,要将深度值清零。根据下位机与上位机的协议,当上位机通过串口向下位机发送“a”字符时,下位机传到上位机的深度值从零开始。同时,上位机会清除之前的曲线。

按下“深度清零”按钮后的主要代码:

g_Depth.Clear(Color.White)

Axe() '绘制坐标轴子函数

If AxMSComm.PortOpen = True Then

AxMSComm.Output = "a"

Else

MsgBox("串口未打开,无法发送清零指令,请先打开串口")

End If

3.5数据的保存与回放

为了能在实验结束后对实验数据进行分析,上位机应该包含数据保存与回放功能。由于每次串口事件只需要保存时差、深度2个数据,并且每次实验的总数据量不大,故使用文本文件的方式来储存实验数据。为了方便用户,上位机允许用户自定义数据在电脑中的储存位置。

要实现该功能可以直接调用VB.NET提供的SaveFileDialog控件,然后在用户选择的储存位置建立文本文件,接着定义StreamWriter来写入数据。为了能保存指定深度区间的数据,上位机有一个保存的开关,开关打开时,保存开始,串口每接收一次数据,就保存一组数据,开关关闭时,停止写入数据到文本文件。在程序中的实现方式是使用一个布尔值,该值为True时,能够写入;该值为False时,不能写入。回放时曲线变化要比实验时快,实现方法是使用Timer控件,计数器每加1,就从文本文件中获取一组数据并画线,直到文本文件中的数据全部获取完毕。在图4中,实验装置运行时的实时时差—深度曲线和回放时的曲线完全一致,说明软件实现了数据保存和回放功能。

图4 接受数据时的曲线与回放的曲线对比

4结束语

声波时差测井模型实验装置上位机软件与下位机实现了联调,声波探头经过不同的模拟地层时,上位机上的时差—深度曲线特征明显,时差数据与示波器显示的一致。证明使用VB.NET设计的上位机软件是实用的。

参 考 文 献

[1] 刘思慧,首祥云. 一种声波时差测井曲线的校正方法[J]. 国外测井技术,2012,23(4):20-22,28.

[2] 廖崇琦,侯春萍. 基于VB.NET的数据采集系统软件设计[J]. 微处理机,2006,27(6):54-56.

[3] 齐兴斌,赵丽. VB与VB.NET编程的比较研究[J]. 电力学报,2009,24(5):441-442.

[4] 李湘江,彭建. 基于VB的实时数据采集程序设计[J]. 微计算机信息,2003,20(10):38-39,65.

[5] 刘东. 基于VB.net的串口通信方法设计[J]. 电脑知识与技术,2012,19(34):8304-8307.

[6]李飞,王江萍,孙志英. 基于VB的数据采集与处理系统的研究[J]. 计量技术,2004,48(6):24-27.

猜你喜欢
上位机
论网络通信技术
基于云的短波发射机机房中央空调自动控制系统的设计与实现