跟着科技水平的不断提高,机械工程振荡测验技能也随之进入了一个簇新的阶段。动态信号剖析作为一门以捕捉和处理各种动态信息为意图的归纳技能在今世科学技能中占有适当重要的位置。近年来,多通道、高性能动态信号剖析体系推出并已广泛应用于各个领域。并且跟着运用者对动态信号的剖析需求越来越多样化,使得柔性化规划成为动态信号剖析体系研发的干流方向。国外的动态信号仪器采样精度高、功用强大,但产品的价格相对很高。而目前国内的测验剖析体系与国外的比较,还有必定的距离。因而,研发具有自主知识产权的实时的动态信号剖析体系有着十分实际的科学含义和工程实用价值。
依据此,本文以Windows XP体系为开发渠道,选用面向方针的编程技能和VC++为开发工具,研发一套依据VC++的动态信号剖析体系。软件开发选用模块化的规划细想,把各种功用方针化并进行封装,提高了各模块的可移植性和重复运用性。体系可完结对单个和多个信号的实时同步收集,并能对信号进行剖析处理,还能完结数据分段存储和波形回放检查。
1 体系整体规划
体系整体规划的好坏直接联络到整个测验剖析使命的胜败以及完结质量的好坏。从硬件上看,体系整体上由核算机、USB 接口、数据收集硬件、传感器等组成。
从软件上看,该体系包含固件程序、驱动程序及应用软件。
固件程序是收集卡商家以写好烧进收集卡硬件的程序,担任收集卡的收集作业。
驱动程序和应用软件则装在核算机中,驱动程序是遵从USB协议编写的担任应用软件与收集卡正常通讯的程序。
应用软件是人机交互接口,是完结信号剖析处理各项功用的要害部分。
软件体系规划与开发是本项目开发的要点和难点。运用VC++为开发渠道,进行体系软件规划。本项意图软件体系规划首要包含:软件体系整体结构规划、数据收集模块规划、信号剖析与处理模块规划、数据存储模块规划等。
动态信号剖析体系整体规划框图如图1所示。
2 体体系一架构
软件规划以Windows XP 体系为开发渠道,选用面向方针的编程技能和VC++ 6.0为开发工具完结。软件开发选用模块化的规划细想,把各种功用方针化并进行封装,提高了各模块的可移植性和重复运用性。选用一致的软件体系和整体模块组成结构,即每个模块都包含程序操控、参数设置、数据剖析和数据显现四个子模块。
其间参数设置模块、数据剖析模块和数据显现模块为功用模块,程序操控模块是体系的中枢部分,它担任和谐各个模块有用的配合和作业,承受操作者给出的各种指令,调用相应的剖析模块算法,并把剖析成果经过数据可视化接口显现给用户。子模块的菜单、工具条及快捷键是程序操控模块的外在体现,并经过这些外在的体现与操作者交互,转化为各个功用模块能够了解的内部指令,一致调用功用模块,完结用户预期的指令方针。
数据剖析模块选用动态链接库技能,集成和封装了体系所需的算法,并供给接口供程序操控模块调用,是每个子模块的中心部分。
数据显现模块担任将数据处理的成果以丰厚的办法出现给用户,供用户对处理成果进行评判或进一步的处理。
四个子模块的组成联络如图2所示。
3 体系的软件规划
软件体系规划与开发是整个剖析体系开发的要点和难点。选用VC++为开发渠道,进行体系软件规划。
软件体系规划首要包含:软件体系整体架构规划、数据收集模块规划、信号剖析与处理模块规划、数据存储模块规划等。
软件体系整体架构规划见第2部分,不再赘述。数据收集模块、数据剖析与处理模块和数据存储模块。三个模块之间,彼此联络,其功用别离如下:
数据收集模块:收集卡参数设置、收集设备的启停操控和复位,完结数据收集功用(接连收集或单次收集);数据剖析和处理模块:经过从数据收集模块或存储模块的取得数据,结合剖析参数的设置,完结信号实时波形显现、频谱剖析、相关剖析、包络谱剖析、核算特征剖析等;数据存储模块:完结数据的存储和读取,并回放显现、剖析处理的功用。
3.1 体系界面规划
程序规划中,选用单文档结构来编制应用程序。
根本布局规划如下:窗口顶部为菜单工具条区域,左下部分为数据显现区域,右下部为数据信息阅读和操控区域。体系主界面如图3所示。
首先将客户区分割为1行2列两个部分:左边为电压值数字显现窗口,相关的类为CADDigitView(派生自CScrollView);右侧为图形显现窗口,相关的类为CAD-WaveView(派生自CScrollView)。参数设置及剖析操控选用2个对话栏,派生自CDialogBar,用户能够经过其进行收集卡参数设置和信号收集、剖析操控。由于程序功用较为简略,故在界面上简直就能够进行悉数的操作,运用上极端便利。
3.2 首要处理算法
3.2.1 FFT
频谱剖析是数字信号处理技能的一个十分重要的手法,以便能清楚的看到某波形的频谱散布状况.而要对一个输入信号源作频谱剖析,将其由时域信号转变为频域信号,就必定要用到傅里叶剖析。快速傅里叶改换(Fast Fourier Transform,FFT)的迅速发展,使数字频谱剖析取得了突破性的发展。FFT的算法品种较多,并且挑选运用的办法也各不相同,本文选用时刻抽选奇偶分化快速离散傅里叶改换。
基2型FFT算法的进程如下:
(1)将原始序列按下标的奇、偶性质不断分化,一向由一个N 项序列分化为N 个单项重排序列;
(2)核算N 个单项序列的DFT.此刻,N = 1,而0 n N – 1,所以,n = k = 0,所以:
即单项序列的DFT便是其本身,这样就求得了N 个单项重排序列的DFT;
(3)对N 个单项重排子序列的DFT两两组成,终究得到一个N 项序列的DFT,这便是原始序列的DFT.
依据上面的指导思想,就可编制FFT核算程序。
在进行FFT时,依照“蝴蝶图”所描绘的核算办法对输入的时域序列按奇偶分化后的序列排序而输出的频域序列仍是按天然顺序排列的。此办法无须中心存储单元,但需求倒一次第.
下面代码用于完结对原始采样时域序列的快速傅里叶改换,A,M 别离表明指向原始采样数据数组的指针和序列长度的2的整数次幂:
1 kHz 矩形波频谱图,包含实谱、虚谱、幅值谱、相位谱如图4所示。
3.2.2 相关性剖析
在信号剖析中,相关性是一个十分重要的概念,它表达了两个信号(或一个信号不同时刻)之间的线性相关程度。
相关函数及其离散化数据核算公式为:
式中:N 为采样点数;Δt 为采样距离;n 为时刻序列;r为时延序列(时刻位移数)。
自相关剖析算法:
(1)规范办法
依据式(3)直接核算采样数据之间的均匀乘积,然后以此作为自相关函数估量。本次即选用该办法规划算法;
(2)直接办法
该办法得到的不是一般的自相关函数,是“循环”相关函数。该办法经过在原数据补0后经FFT,核算其自功率谱后做IFFT,取前半部分而得到其自相关函数。
互相关函数及其离散化数据核算公式为:
互相关剖析算法:
(1)规范办法
依据式(5)直接核算采样数据之间的均匀乘积,然后以此作为互相关函数估量。本次即选用该办法规划算法;
(2)直接办法
该办法同FFT,核算其互功率谱后做IFFT,取前半部分而得到其互相关函数。
两个不同频率的正弦波信号的相关信号如图5 所示,由于频率不同,所以不相关,其波形挨近值恒为零的直线。
3.2.3 包络线剖析
信号的包络一般有3种提取办法:Hilbert幅值解调法、检波-滤波法和高通绝对值解调法。
Hilbert法解调出的包络是对信号绝对值的包络,其解调幅值代表实在包络,且在ARM体系中,Hilbert改换能够便利地凭借FFT来完结,所以,本文选用Hilbert改换法提取信号的包络。
详细的进程如下:
(1)对x(t) 做FFT,得X(k),k = 0,1,2,-,N – 1,留意k = N 2,-,N – 1 对应负频率;
(2)Z(k) 的取值:
(3)对Z(k) 做逆FFT,即得到x(n) 的解析信号z(n) ;
(4)| z(n)|即为 x(n)的包络。
经过以上剖析编程完结了对信号的包络解调。
图6 所示为一调制波波形,对其进行包络剖析,成果如图7所示。
4 闪屏现象及其处理方案
VC 中依据MFC 编写的程序中,窗口的移动缩放、鼠标点击等操作都会引起窗口重绘.本应用程序中运用绘图办法输出收集数据、信号波形图、频谱图等,制作比较复杂,也比较耗费CPU时刻,因而频频的重绘会引起画面闪耀,影响信号动态显现剖析作用,为此这儿选用了双缓存技能,处理闪屏问题。
双缓存技能便是先在内存中预备一块区域,把要显现的位图都加载到内存中,然后调用BitBlt函数,把内存设备复制到显现设备上,这个进程比较简略,便是将图面的每个像素一次复制到输出设备,不需耗费太多的时刻,这样就能够避免闪屏,改进显现作用。
双缓冲绘图首要代码如下:
5 体系测验剖析
为验证体系的正确性和可靠性,发生如下信号:
取剖析长度(时刻块)T = 10 s,从式中能够看出有4种频率