2024年6月5日发(作者:)

基于Visual C++的液位检测系统设计与实现

于敬芬 亓 科

摘 要:介绍了某航空器液位加注过程中液位检测系统的软件设计。检

测到的数据通过串口传至PC机,本系统对实时数据进行处理,将数据曲线在

PC机界面上实时显示,并保存至数据库。文章重点介绍了实时数据处理软件滤

波、参数显示等技术关键。

关键词:液位检测 软件滤波 实时曲线

中图分类号:TP311 文献标识码:A 文章

编号:1006-7973(2006)10-0120-02 一、前言

在对某航空器液位进行加注时,需要对所加注的液面进行“定点”、

“定容”的液位测量;在液体使用过程中要对液体的“剩余”液位进行在线测

量。本文针对系统设计要求,设计了一种基于Visual C++的液位检测系统。该

系统是计算机测控系统的一个重要组成部分,其主要任务是把传感器输出的模

拟信号转换成计算机能识别的数字信号,然后由计算机进行相应的计算和处

理。

二、液位检测系统构建

液位检测系统主要由液位传感器、液位变送、A/D转换、微处理器、

D/A转换、数字通信等环节组成。其系统结构框图如图1所示。微处理器完成

传感信号的线性化、温度补偿、量程比调节等功能。EEROM储存所有的组态、

特征值以及微调参数。数字通信提供了数据采集系统与PC机系统的连接口。

图1 液位检测系统结构框图

三、液位检测系统软件实现

1.串行通信软件设计

串口通信程序采用Win32 API函数来实现。通信程序在CreateFile处

指定串口设备及相关操作属性,然后返回一个句柄,用于后续的通信操作,并

且贯穿于整个通信过程中。串口打开后,其属性被设置为默认值,根据具体需

要,可通过调用GetCommState(hComm, &&dcb)函数读取当前串口设备控制块

DCB的设置,把设置修改后再通过SetCommState(hComm, &&dcb)函数将其写回

DCB。串口的读写操作可运用ReadFile()与WriteFile()两个API函数来实现,

在读写函数返回值为FALSE时,调用GetLastError()函数,若返回值为

ERROR_IO_PENDING,则表明I/O操作悬挂,即操作转入后台继续执行。此时,

可用WaitForSingleObject()函数来等待结束信号并设置最长等待时间,或者

用GetOverlappedResult()函数设置不等待或一直等待直到事件发生才返回。

串口通信结束后将串口关闭。实现串行通信的程序流程如图2所示。

图2 PC机通信流程图

2.软件滤波

在储箱液位采集的原始信号中,存在噪声和干扰。为了提高信号的可

靠性,减少虚假信息的影响,可采用软件滤波。常用的数字滤波方法有限幅滤

波法、中值滤波法、算术平均滤波法、加权平均滤波法、移动平均滤波法、去

极值滤波法等。

根据本系统检测对象的特点,采取移动平均滤波法效果较好。移动平

均滤波算法的思想是对被测信号y连续采样n次,把这n个采样值看作为一个

定长的数组中的数据,当下一个采样时刻KT到来时,对参数采样,获得一个最

新的采样数据,这时把该数据装入数组尾部,同时淘汰数组中最前端的一个数

据,再把数组中此时的n个采样值进行算术平均,作为KT时刻的滤波输出。其

计算方法如公式(1)所示:

(1)

(1)式中,为第n次采样的滤波输出, 为未被滤波的第n-1次采样

值。

实现移动平均滤波算法的程序流程如图3所示。

图3 软件滤波流程图

经实验证实采用移动平均算法对检测信号进行软件滤波处理后,其噪

声干扰得到有效抑制,软件滤波去除信号噪声的效果十分明显。

3.曲线显示

为了使采集到的数据具有直观性和可视性,本设计在PC机上采用动态

实时曲线显示液位参数变化。曲线图较直观地反映了某一时段单个或几个参数

变化趋势,实时曲线反映的是监控参数当前值及变化趋势,是当前工作状态的

直观描述。

进行程序设计时,选用合适的ActiveX控件,可以大大减少编程工作

量。ActiveX 控件基于COM技术,作为独立的软件模块,可以在任何程序设计

语言中插入使用。本系统采用ActiveX控件中的Chart控件,其属性、事件

多,功能强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是

混合图表、二维或三维图表,并且能够选择带或不带坐标系,可以自由配置各

条目的颜色、字体等等。

由于PC机连续接收来自采集系统的数据,所以每一时刻屏幕上显示的

都是最近时刻的N个数据所描绘的曲线。实时曲线始终反映了输出信号与传感

器节数的对应关系,实现动态曲线显示的程序流程如图4所示,实时曲线界面

如图5所示。

图4 绘制动态曲线流程图

图5 实时曲线显示界面图

四、结束语

实验测试表明,该系统具备良好的动态性和可视界面,有很高的可靠

性和安全性。同时本设计还具有较好的可移植性,能够广泛适用于数据采集系

统的上位机部分。

参考文献

[1] 李现勇.VC++串口通信技术与工程实践[J].北京:人民邮电出版

社.2002.

[2] 马明建.数据采集与处理技术[J].西安:西安交通大学出版

社.2005.

[3] 张永强,申利永,田紫君.汽车安全性能检测系统中的软件滤波

[M].工业仪表与自动化装置.2005,(5):139~142.