APP下载

基于Visual C++平台的信号采集分析系统

2014-03-13邵雪飞

电子科技 2014年5期
关键词:波形图原始数据控件

邵雪飞

(兰州交通大学 机电工程学院,甘肃 兰州 730070)

随着工程检测复杂度的不断提高,数据运算量不断增加,对于传统的数据采集分析系统提出更高的要求。目前数据采集系统大体可分为两类:(1)采用各种功能版和嵌入式技术的数据采集系统,其成本较高,数据运算精度受制于硬件设备,功能单一且不便于维护。(2)采用软件即“虚拟仪器”实现数据采集分析功能[1]。目前实现这一技术的主要平台又可分为两类:一类是以NI 的LabView 为代表图形化编程工具,采用这种技术实现的数据采集分析系统不仅成本高,而且在实现底层驱动的受到较大限制。对于NI 自身以外的硬件设备的支持并不理想。另一类是以通用计算机编程语言如VB、VC、Delphi 等来实现其功能,这一类面向对象的可视化编程语言,可以实现复杂的数字信号处理算法,能够开发出功能强大、兼容性好、同时界面友好的信号采集与分析应用软件,大幅降低开发和维护的成本,并兼顾实时性和便携性,还可二次开发以适应不同的实际需求。

随着公路桥梁的建设,需要通过科学检测手段保证桥梁工程质量,荷载试验就是对桥梁结构直接加载测试的一项实验工作,即通过技术手段检测得到其结构强度。本文通过在Visual C++平台下设计实现了一个信号分析处理系统,可以实现设置通信参数,接收串口信号数据,显示数据,对其进行分析处理,显示处理结果以及保存和过后再现,并在实际应用中与常用硬件设备建立连接,对某简支桥梁进行荷载试验获取其基频以分析其结构强度[2]。

1 系统功能设计

1.1 功能设计

(1)通信设置。系统通过串口通信设置信号采集的通道参数、采样参数、采样频率等通信配置。(2)数据采集和显示。系统通过串口通信设置采样起始来采集原始信号并显示数据值,同时将数据以波形图的形式显示在面板上。(3)数据分析处理。对采集到的原始数据进行分析和处理,这里主要采用按时间抽取的基2FFT 算法对数据进行变换和处理,并将处理结果分别以数据和频谱图的形式显示在面板上。(4)数据存储。主要用于实现对原始数据的保存和再现,并对已保存的数据进行非实时分析与处理。

1.2 流程设计

系统的流程设计如图1 所示。原始数据的通信配置由系统设置完成,主要通过串口通信的方式实现,采集通道由通信配置的通道参数确定,信号数据由设定的采样参数和频率将原始数据采集到系统中,在实时工作的情况下,系统对采集到的数据作3 种处理:(1)直接在系统面板上显示数据数值及波形图。(2)对数据进行保存以便后续再现和再处理。(3)将数据进行实时的处理分析后,在系统面板上显示处理后的数据结果及频谱图。在非实时工作的情况下,系统主要完成两种功能:(1)对数据的复现。(2)对数据进行再处理后显示输出结果。

图1 系统流程图

2 系统的编程实现

2.1 通信设置与数据采集

为提高编程效率,增加代码可执行率和可复用率,这里采用设计串口通信Activex 控件的方式来实现系统结构中两方面的内容:(1)实现通信配置,即通道参数、采样参数、采样频率等功能的实现。(2)将采集得到的原始数据传送至其他模块。

在Visual C++平台下实现串口通信功能,系统采用Activex 控件,与传统的调用Windows API 函数方法相比,Activex 控件自身通信功能完备、使用方便,绕过了大量底层驱动级的编程工作,对于实现较为简单的串口通信功能实现起来更加便捷和现实。Activex 控件系统进行通信通过3 种方法实现,控件对系统的响应由事件触发完成,而系统对控件的使用是通过控件的方法和属性。方法和属性的实现和使用与C++中类的成员函数和成员变量的用法和用途相似。属性是ActiveX 控件中公开的数据成员,为包含ActiveX 控件的系统提供接口。ActiveX 控件中的方法和属性可以实现其一般常用功能,也可由用户自定义,其中由COleControl 类实现其常用属性的功能,自定义和常用属性都受某个机制的支持,该机制由处理属性与方法的调度映射和 COleControl 类的现有成员函数组成[3-5]。

表1 Activex 控件方法

数据采集设置了一个定时器函数,当主面板中点击开始采样后,对话框类中的定时器函数被调用,依据采样频率按照设置的通道对原始信号进行采集,直到停止采样被按下,对定时器销毁,此时数据已经被保存在设定好的缓冲区中等待下一步处理[6]。

2.2 数据分析与处理

本系统的数据处理主要是对由串口实时采集得到的和存储的非实时两个数据来源进行频域分析。频域分析是将数据的幅值、相位等变换以频率轴为坐标表示出来,从而分析其频率特性。系统采用时间抽取的基2FFT 方法,通过在C_Dlg 类中定义相关函数和变量来实现算法。基2FFT 算法利用DFT 系数的特性将长序列DFT 变为短序列DFT,从而降低运算量,减少占用资源,提高运算速度。当主面板上FFT 处理按钮被按下时,调用函数相应,将数据从缓冲区中读出,因为数据均为实数域范围内,所以在变换时需要先对数据进行解构,之后按照FFT 算法对数据进行变换。

2.3 数据存储

数据存储主要是对采集的原始数据以一定的格式保存至计算机空间中,考虑到数据的安全性,同时为便于将原始数据转化为其他格式再进行其它相应的处理,当保存按钮被点击时,在C_Dlg 类中对触发相应的事件响应,完成数据保存操作,由用户选择保存路径和文件名称,保存的格式是.dat 文件类型。当点击打开文件时,首先从原文件中读取数据,之后再调用其它类以完成原始波形图的绘制。

2.4 数据显示

系统对信号数据显示通过面板上两部分进行实现:一是以数据自身数值的形式显示;二是对原始数据以波形图的形式进行显示。显示时,图形横坐标为时间,纵坐标为采样数值的大小,将各点连接,随着时间的推移,在波形图上可以看到数据的动态变化。原始数据经过处理后,得到其模值,并依据频域分析结果显示其频谱图,横坐标显示频率分布,纵坐标显示模值大小,以便直观地分析数据的频率成分。在实际编程实现中,对数值的显示选择在C_Dlg 类的OnPaint 函数中实现,当系统的缓冲区接收到原始数据时同步显示在面板上,对频谱图的绘制定义了一个CWndOscilogram 类,这个类主要对图形显示背景进行相关的设置,包括显示坐标轴、单位,绘制网格,FFT 的处理结果由类成员变量接收,调用相应绘图函数完成频谱图的绘制。同时在实现原保存的信号数据的再现时,对C_Dlg 中打开文件函数的调用并完成波形图绘制[7-9]。

3 结束语

在对某简支桥梁进行荷载试验时,使用本系统与常用串口硬件采集设备相连接,在参数设置完成后,即可获得桥梁整体结构的振动波形数据,如图2 所示。

图2 振动数据波形图

对该信号进行频域分析,获得频谱图如图3 所示。

图3 一阶频谱分析图

由图中可判断出该简支桥梁的基频,对于简支梁结构,一阶频率如实反映了结构的整体刚度,并可进一步计算其冲击系数以及对桥梁荷载试验数据的后续分析,从而判断该桥梁的整体结构强度,对评估其承载能力具有重要参考作用。

利用Visual C++平台开发的信号采集分析系统,具有开发周期短、可移植性好、界面友好等特点,在实际使用中取得了较好的效果。同时该系统是一个通用信号分析平台,可扩展性好,根据不同需要在分析处理时加入算法就可实现相应功能。

[1] 李云飞,姜晓峰.基于构件技术的虚拟仪器的研究与实现[J].仪器仪表学报,2006,27(11):1550-1553.

[2] 张楠,秦开宇.基于Visual C++的实时频谱分析软件设计[J].测控技术,2008,27(1):78-80.

[3] 张静.姚肖芳.基于VC++.net 的振动信号的采集与分析系统的研究[J].仪器仪表与分析监测,2011(1):24-27.

[4] 陈天华.面向对象程序设计与Visual C++6.0 教程[M].北京:清华大学出版社,2006.

[5] 黄维通.Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2003.

[6] 杨金堂,喻剑平,李公法.基于VC 的振动信号采集与分析系统的研究[J].机床与液压,2009,37(8):254-256.

[7] 王琨.基于Visual C++平台的最少算术运算量裁剪算法实现[J].电子科技,2003(22):45-48.

[8] 吴桂军,张建州,尹武龙.VC 实现一维信号采集显示和分析[J].计算机工程与设计,2005,26(7):1715-1717.

[9] 王洪波,高玉.线性回波抵消器LEC 的实现[J].西安邮电学院学报,2001(3):34-38.

猜你喜欢

波形图原始数据控件
GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
由波形图领悟声音特性
浅析CH-γ方程中解的求法
受特定变化趋势限制的传感器数据处理方法研究
基于.net的用户定义验证控件的应用分析
关于.net控件数组的探讨
浅谈轨道动态检测资料在线路维修中的应用
轨道几何动态检测项目及病害成因分析
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
世界经济趋势