・56・ 工业仪表与自动化装置 2011年第6期 基于小波变换的声波法测油井动液面信号去噪 王海文,林立星 (中国石油大学(华东)石油工程学院,山东东营257061) 摘要:由于受到油套环空中各种噪声的影响,用声波法测油井动液面过程中,得到的反射声波 信号异常复杂,常常出现液面反射位置不容易辨识的情况。该文分析了噪声产生的原因,将小波阈 值去噪的方法用于声波法测油井动液面信号的噪声去除。结果显示,利用小波去噪方法处理油井 动液面信号能够有效地去除噪声,随着小波分解层数的增加,利用小波方法去噪的效果越好。 关键词:声波法;动液面;信号处理;小波去噪 中图分类号:029 文献标志码:A 文章编号:1000—0682(2011)06—0056—03 Signal denoising in liquid level detection with acoustic method using wavelet transform WANG Haiwen,LIN Lixing (College ofPetroleum Engineering,China University ofPetroleum(East Chia),Shandong Dongying n257061,China) Abstract:In liquid level detection with acoustic method,the reflected acoustic signal is complex due to the influence of the noises in the annulus between tubing and casing,and the real liquid level is difi— fcult to be identified.The noises that influence the liquid level detection are analyzed,and wavelet thresh- old denoising is used to filter the noises in the acoustic signal of liquid level detection with acoustic meth— od.The result shows that the wavelet denoising method is able to eliminate the noises effectively in the a— coustic signal of liquid level detection,and the result is better with the increase of wavelet decomposition leve1. Key words:acoustic method;liquid level;signal processing;wavelet denoising 0 引言 动液面深度是油井生产中的重要数据,获得准 确的油井动液面对生产制度的合理制定和调整具有 影响得到液面反射波位置的研究很少。 笔者对油套环空中噪声原因进行了分析,利用 小波阈值去噪方法对油井动液面测试数据进行去噪 处理,原本受到噪声干扰的复杂信号处理后噪声得 到了去除,可以从处理后的声波曲线中清楚地辨识 重要意义。现场一般采用声波法原理的回声仪测量 油井动液面,由于受到油套环空中各种机械噪声、电 磁噪声等噪声的影响,测试得到的反射声波曲线非 常复杂,液面反射波的位置不容易辨识。 出液面反射声波的位置,得到动液面深度的值。 1噪声原因分析 套管气流动产生噪声的影响。随着油井生产过 在对声波法测油井动液面的测试数据处理上, 很多学者对从接箍反射波提取声速做了大量的工 作,提出了短时自相关函数 (ACF)、短时平均幅 程中压力会降低,同时井筒中液柱从下到上压力也 是逐渐减小的,此时气体从原油中分离出来,油套环 空中积存着大量的气体。如果放气阀门打开,这些 套管气在流动的过程中,会产生“噬噬”的流动声 度差函数 (AMDF)、人工神经网络 等方法来研 究接箍反射波的周期进而计算声波在油套环空中的 传播速度,取得了较好的效果,但对于如何消除噪声 收稿13期:2011—04—29 响,即使放气阀门没有打开,为维持动态的平衡,这 些气体也不断地发生着流动,这种噪声严重影响着 作者简介:王海文(1965),男,山东省临沂市人,教授,博士,主 要从事采油工程理论与技术的教学与研究工作。 反射声波的记录,很多油井测动液面测不出来就是 受到套管气太大的影响。 2011年第6期 工业仪表与自动化装置 ・87・ 控制。 #define WMUPDATETIME WMUSER+1000 _—6)使用多媒体定时器timeSetEvent()函数,该 函数定时精度为ms级。利用该函数可以实现周期 3)然后在对话框的头文件中声明WM—UPDA— TETIME消息的响应函数OnUpdateTime。 性的函数调用。该函数设置一个定时回调事件,此 事件可以是一个一次性事件或周期性事件。事件一 4)在对话框的CPP文件中映射WM—UPDATE. TIME消息并定义响应函数。 5)在对话框的CPP文件中定义一个线程函数, 用来做定时器: UINT ShowTimeProc(LPVOID 1Param); 旦被激活,便调用指定的回调函数,成功后返回事 件的标识符代码,否则返回NULL。 具体应用时,可以通过调用timeSetEvent()函 数,将需要周期性执行的任务定义在LpTimeProc回 6)在对话框界面双击“开始”按钮,进行按钮定 调函数中(如:定时采样、控制等),从而完成所需处 理的事件。需要注意的是,任务处理的时间不能大 于周期间隔时间。另外,在定时器使用完毕后,应及 时调用timeKillEvent()将之释放。 7)对于精确度要求更高的定时操作,则应该使 用QueryPerformanceFrequency()和QueryPerfor- manceCounter()函数。这2个函数是VC提供的仅 供Windows 95及其后续版本使用的精确时间函数, 并要求计算机从硬件上支持精确定时器。 2.2高精度定时模块设计 该串口通信程序需要有定时发送的辅助功能。 当启用该功能时,系统需要自动屏蔽用户的发送按 钮,并创建自己的定时器线程,每到设定时间即对打 开的串口进行发送,在这期间用户可以修改发送 内容。 在串口通信程序中,对精度误差要求不大于1 ms,综合各个方面的因素,决定采用GetTickCount() 函数来进行相关的定时功能。这其中需要用到 Windows消息机制。 GetTickCount函数返回值类型是DWORD型, 表示以ms为单位的计算机启动后经历的时间间 隔。通过_timeb结构和一flime函数可以获得ms精 度的当前系统时间。 以下为定时程序的实现步骤: 1)在通信主对话框右侧添加一个UINT属性的 编辑框来接收用户定时时间,对应的子类为in—Tim. er,然后添加2个按钮IDC—STARTFIMER、IDC— STOI ̄IMER,分别取名为“开始”“停止”,用于定时 器的启动和停止。 2)在对话框的头文件中定义更新时间的消息 WM UPDATETIME: 义。当单击该按钮时,先是将已经打开的串口的 “发送”按钮置为无效,然后开启定时器,同时创建 相应线程。 一旦单击该按钮,即将线程循环标志frimer置 为trlle,同时创建线程,执行线程函数Show. TimeProc,在该函数中,根据用户设定的定时值,每 经过定时值时间便发送消息并执行消息函数OnUp— dateTime(),该函数完成对串口数据的发送工作。 这样便达到了定时发送的功能。 7)在对话框界面双击“停止”按钮,该按钮要停 止定时器,撤销定时器线程,将线程循环标志tTimer 置为false以停止循环。 3 总结 在水厂监控系统中,为了在有限的资源条件下, 上位机系统可以控制更多的下位机,设计了多串口 轮询方法;为了提高控制时间的精确性,设计了高精 度软件定时器。 参考文献: [1]贾蓓蕾.城市供水监控系统的研究与设计[D].大连 理工大学,2007. [2] 王鼎顺.现代自来水厂自动化控制系统的研究与实 现[D].湖南大学,2007. [3] 李青.应用Win32API函数开发串口通讯程序[J].机 械与电子,2007(10):56—58. [4] 黄心宇,杜民.串口通信中事件驱动方法与轮询端口 方法结合的应用[J].计算机应用,2003(6):70—71. [5] 李福华,李悦丽,段巧雄.Windows环境下多串口控制 软件设计中精确定时的实现[J].电子技术,2010 (6):10—11. [6] 李宣敏.用VC++6.0编程实现航海导航的多串口通 信[J].电脑技巧与维护,2007(4):51—66.