莫正鹏, 张常年, 王泽来
(北方工业大学信息工程学院, 北京 100041)
熟料窑是烧结法制氧化铝的主体设备,熟料质量对氧化铝的产能有极大影响.目前,对氧化铝熟料质量的检测主要是通过工人听觉和现场观察,虽然熟料窑周围的声音包含熟料质量的信息,可以通过声音来区分声源的质量情况,但是人的主观因素起着很大的作用,而且不同的判别者有着不同的经验,没有一个统一的标准,所以存在着很大的误差.
随着自动化程度的提高,人们希望能利用仪器设备来判别熟料燃烧的是否正常,因此本文将设计一种新型的氧化铝熟料质量检测系统,对采集到的成品熟料与滚筒窑撞击的声音的频谱、幅度等数据进行智能分析,自动判断出熟料的3种状态:正常、过烧或欠烧.
图1 系统硬件模块整体框图
利用2440开发板和外置的声音采集器来对现场的声音进行采集,声音采集器通过一个监控拾音头来实现,另外为防止现场粉尘的落入和避免受潮,将声音采集器加一外罩[1],然后通过WINCE6.0系统在开发板上用MFC做一个人机交互界面[2].设定录音的时间长度、录音文件的保存地址,并设定要传输的远程服务器的IP地址等,然后将录音生成的wave文件自动发送给远程的服务器,在服务器上对读入的声音文件数据进行Fourier变换,在频域内观察3种状态的区别,提取其特征,让计算机能够自动识别熟料燃烧的3种状态(正常、过烧或欠烧).系统的硬件模块整体框图如图1所示.
WINCE 6.0是Microsoft公司针对有限资源的平台而设计的多线程、完整优先权、多任务及可裁减的32位嵌入式操作系统.它由许多离散模块构成, 每一模块提供特定的功能, 这使WINCE变得非常紧凑, 完全可以在内存中运行.采用Platform Builder软件对系统进行定制, 其流程为定制内核、导入硬件BSP、裁剪模块、生成NK镜像文件和导出SDK[3,4].
图2 应用程序整体框图
系统应用程序基于WINCE6.0操作系统开发, 用于实现声音数据的保存和声音数据的网络传输等功能.软件使用VS2005编写, 编程环境为MFC.应用程序整体框图如图2所示.
2.2.1 WAV声音文件格式设置
为了获得良好的音质便于后期的处理,系统采集的声音设置成wave的文件格式.wave文件作为多媒体使用的声波文件之一,是以RIFF格式为标准的,RIFF又包含两个子块,分别为“fmt”和“data”,其中“fmt”子块由WAVEFORMATEX所组成.该系统当中的wave文件WAVEFORMATEX结构设置为PCM编码,声道数为1,采样率设为11.025 kHz.
2.2.2 录入声音的保存
WINCE6.0系统通过MFC的Edit控件,将录音时间设置为60 s,并调用windows提供的一些API接口函数来实现控件的消息响应和声音的保存,其中最主要的是一组wave的函数: waveInOpen();waveInPrepareHeader(); waveInAddBuffer(); waveInStart(); waveInUnprepareHeader(); waveInReset(); waveInClose(); 利用这些接口函数对应的相关消息:MM_WIM_OPEN,打开设备时消息;MM_WIM_DATA,当缓存已满或者停止录音时的消息;MM_WIM_CLOSE,关闭录音设备时的消息等来实现对录音的操作.录音程序框架如图3所示.
图3 录音程序框架
每当设置的buffer已满时,将收到MM_WIM_DATA消息,然后处理该消息可以保存已录好数据.
2.2.3 网络数据传输
WINCE6.0系统可以调用Windows提供的Socket套接字进行传输数据[5].把2440开发板作为客户端,在客户端设定好服务器的IP地址及端口号,就可以实现客户端和服务器的网络连接,这样把每次录音完生成的wave音频文件自动由客户端发送给服务器,并在服务器端自动接收传来的wave文件,同时在客户端发送完毕后自动清除已经保存过的数据并进行下一次录音.
为了便于比较,在服务器端通过Matlab编程对已读入的60 s的声音文件进行数据分割,变为每部分10 s的数据,接着对每个部分进行FFT变化,然后将数据进行平滑去噪处理,去掉频谱上幅度值特别大的几处噪声,并将窗口进行归一化显示[6],如图4~图6所示,频率域内的波形大体呈3种状态. 从图4~图6中可以看出:
图4 频谱图 图5 频谱图 图6 频谱图
(1)图4中频域内低频部分的幅度值比较高,而高频部分幅度值很低,高频和低频部分幅值明显差别很大,与对应的工厂实际观测的燃烧状况时间表进行比较,发现此种状态为过烧;
(2)图5中频域内总体的幅度值比较平稳,高频和低频部分幅值差距比较小,与对应的燃烧状况时间表进行比较,发现此种状态为正常;
(3)图6中频域内总的幅度值都比较高,与图4相比高频和低频部分幅值也有一定差距,但差别不大,与对应的燃烧状况时间表进行比较,发现此种状态为欠烧.
根据以上频谱幅值的特点进行处理,考虑到现场声音采集器放置的位置不同则采集到的声音整体幅度可能不同,我们采用比值的方式对数据进行处理.我们取每一幅图频谱幅值差距最大的5 k到10 k之间的数据之和为sum1,15 k到20 k之间的数据之和为sum2,然后将这两段频率内的数据求平均avr1、avr2,然后取其比值:
表1 3种状态的比值统计分布
这样处理后3种状态的比值统计分布如表1所示.
从表1中可以看出过烧的比值会明显大于2,正常的比值最小,集中于1.42以下,欠烧的在1.42和2之间.但是观察发现在1.4和2之间在图像上也有一部分属于正常的状态,这一段区分的比较模糊,所以将比值落在1.4和2之间的数据进行细化,再加一个绝对值,取前5 k到10 k幅度值比较小的作为正常的情况.同样在1.42以下也有一部分是欠烧的状态,所以也取5 k到10 k的幅度值,把这时幅度值比较大的作为欠烧状态.运用这种方法将其它时间段的数据同样进行处理,发现基本可以比较准确地判断出不同的燃烧状态.
我们设计该系统的目的是实现熟料质量的自动检测,经过实际验证,该系统基本能够实现检测并且准确率较高,而且可以将该系统应用于其它的能够通过声音来判断状态的系统.但是,由于在短时间内熟料的状态可能连续发生多次变化,所以这里只是建立了一个在一定时间内状态稳定的检测系统框架,但这样的框架是可行的.对某一段时间状态稳定的情况,只要对它的频谱稍作分析,建立数据库就可对熟料燃烧状态进行检测.
参考文献
[1] 王黎明,陈双桥,闫晓玲.ARM9 嵌入式系统开发与实践[M].北京:北京航空航天大学出版社,2008:38-41.
[2] 张冬泉,谭南林.Windows CE 实用开发技术[M].北京:电子工业出版社,2006:101.
[3] 李大为.WinCE 工程实践完全解析[M].北京:中国电力出版社,2008:48-86.
[4] Samuel Phung. Professional Windows Embedded CE 6.0[M].北京:清华大学出版社,2009.
[5] 孙 鑫.VC++深入详解[M].北京:电子工业出版社,2010:523-556.
[6] 聂祥飞,王海宝,谭泽富.MATLAB程序设计及其在信号处理中的应用[M].成都:西南交通大学出版社,2005:76-80.
[7] 林 涛.嵌入式操作系统Windows CE的研究[J].微计算机信息,2006,(6):91-93.
[8] 殷小川.网络编程与开发技术[M].西安:西安交通大学出版社,2009:133-159.
[9] 许文仪,谷 雨,俞 熹.基于MATLAB的声波分析研究[J].实验室研究与探索,2008,27(7):38-41.
[10] 司岳涛.用MATLAB设计的两种滤波器的比较[J].长三角,2010,4(5):112-114.
[11] 陈怀琛.数字信号处理教程:MATLAB释义与实现[M].第2版.北京:电子工业出版社,2008:112-135.