莫正鵬, 張常年, 王澤來(lái)
(北方工業(yè)大學(xué)信息工程學(xué)院, 北京 100041)
熟料窯是燒結(jié)法制氧化鋁的主體設(shè)備,熟料質(zhì)量對(duì)氧化鋁的產(chǎn)能有極大影響.目前,對(duì)氧化鋁熟料質(zhì)量的檢測(cè)主要是通過(guò)工人聽(tīng)覺(jué)和現(xiàn)場(chǎng)觀察,雖然熟料窯周圍的聲音包含熟料質(zhì)量的信息,可以通過(guò)聲音來(lái)區(qū)分聲源的質(zhì)量情況,但是人的主觀因素起著很大的作用,而且不同的判別者有著不同的經(jīng)驗(yàn),沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),所以存在著很大的誤差.
隨著自動(dòng)化程度的提高,人們希望能利用儀器設(shè)備來(lái)判別熟料燃燒的是否正常,因此本文將設(shè)計(jì)一種新型的氧化鋁熟料質(zhì)量檢測(cè)系統(tǒng),對(duì)采集到的成品熟料與滾筒窯撞擊的聲音的頻譜、幅度等數(shù)據(jù)進(jìn)行智能分析,自動(dòng)判斷出熟料的3種狀態(tài):正常、過(guò)燒或欠燒.
圖1 系統(tǒng)硬件模塊整體框圖
利用2440開(kāi)發(fā)板和外置的聲音采集器來(lái)對(duì)現(xiàn)場(chǎng)的聲音進(jìn)行采集,聲音采集器通過(guò)一個(gè)監(jiān)控拾音頭來(lái)實(shí)現(xiàn),另外為防止現(xiàn)場(chǎng)粉塵的落入和避免受潮,將聲音采集器加一外罩[1],然后通過(guò)WINCE6.0系統(tǒng)在開(kāi)發(fā)板上用MFC做一個(gè)人機(jī)交互界面[2].設(shè)定錄音的時(shí)間長(zhǎng)度、錄音文件的保存地址,并設(shè)定要傳輸?shù)倪h(yuǎn)程服務(wù)器的IP地址等,然后將錄音生成的wave文件自動(dòng)發(fā)送給遠(yuǎn)程的服務(wù)器,在服務(wù)器上對(duì)讀入的聲音文件數(shù)據(jù)進(jìn)行Fourier變換,在頻域內(nèi)觀察3種狀態(tài)的區(qū)別,提取其特征,讓計(jì)算機(jī)能夠自動(dòng)識(shí)別熟料燃燒的3種狀態(tài)(正常、過(guò)燒或欠燒).系統(tǒng)的硬件模塊整體框圖如圖1所示.
WINCE 6.0是Microsoft公司針對(duì)有限資源的平臺(tái)而設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)及可裁減的32位嵌入式操作系統(tǒng).它由許多離散模塊構(gòu)成, 每一模塊提供特定的功能, 這使WINCE變得非常緊湊, 完全可以在內(nèi)存中運(yùn)行.采用Platform Builder軟件對(duì)系統(tǒng)進(jìn)行定制, 其流程為定制內(nèi)核、導(dǎo)入硬件BSP、裁剪模塊、生成NK鏡像文件和導(dǎo)出SDK[3,4].
圖2 應(yīng)用程序整體框圖
系統(tǒng)應(yīng)用程序基于WINCE6.0操作系統(tǒng)開(kāi)發(fā), 用于實(shí)現(xiàn)聲音數(shù)據(jù)的保存和聲音數(shù)據(jù)的網(wǎng)絡(luò)傳輸?shù)裙δ?軟件使用VS2005編寫(xiě), 編程環(huán)境為MFC.應(yīng)用程序整體框圖如圖2所示.
2.2.1 WAV聲音文件格式設(shè)置
為了獲得良好的音質(zhì)便于后期的處理,系統(tǒng)采集的聲音設(shè)置成wave的文件格式.wave文件作為多媒體使用的聲波文件之一,是以RIFF格式為標(biāo)準(zhǔn)的,RIFF又包含兩個(gè)子塊,分別為“fmt”和“data”,其中“fmt”子塊由WAVEFORMATEX所組成.該系統(tǒng)當(dāng)中的wave文件WAVEFORMATEX結(jié)構(gòu)設(shè)置為PCM編碼,聲道數(shù)為1,采樣率設(shè)為11.025 kHz.
2.2.2 錄入聲音的保存
WINCE6.0系統(tǒng)通過(guò)MFC的Edit控件,將錄音時(shí)間設(shè)置為60 s,并調(diào)用windows提供的一些API接口函數(shù)來(lái)實(shí)現(xiàn)控件的消息響應(yīng)和聲音的保存,其中最主要的是一組wave的函數(shù): waveInOpen();waveInPrepareHeader(); waveInAddBuffer(); waveInStart(); waveInUnprepareHeader(); waveInReset(); waveInClose(); 利用這些接口函數(shù)對(duì)應(yīng)的相關(guān)消息:MM_WIM_OPEN,打開(kāi)設(shè)備時(shí)消息;MM_WIM_DATA,當(dāng)緩存已滿或者停止錄音時(shí)的消息;MM_WIM_CLOSE,關(guān)閉錄音設(shè)備時(shí)的消息等來(lái)實(shí)現(xiàn)對(duì)錄音的操作.錄音程序框架如圖3所示.
圖3 錄音程序框架
每當(dāng)設(shè)置的buffer已滿時(shí),將收到MM_WIM_DATA消息,然后處理該消息可以保存已錄好數(shù)據(jù).
2.2.3 網(wǎng)絡(luò)數(shù)據(jù)傳輸
WINCE6.0系統(tǒng)可以調(diào)用Windows提供的Socket套接字進(jìn)行傳輸數(shù)據(jù)[5].把2440開(kāi)發(fā)板作為客戶端,在客戶端設(shè)定好服務(wù)器的IP地址及端口號(hào),就可以實(shí)現(xiàn)客戶端和服務(wù)器的網(wǎng)絡(luò)連接,這樣把每次錄音完生成的wave音頻文件自動(dòng)由客戶端發(fā)送給服務(wù)器,并在服務(wù)器端自動(dòng)接收傳來(lái)的wave文件,同時(shí)在客戶端發(fā)送完畢后自動(dòng)清除已經(jīng)保存過(guò)的數(shù)據(jù)并進(jìn)行下一次錄音.
為了便于比較,在服務(wù)器端通過(guò)Matlab編程對(duì)已讀入的60 s的聲音文件進(jìn)行數(shù)據(jù)分割,變?yōu)槊坎糠?0 s的數(shù)據(jù),接著對(duì)每個(gè)部分進(jìn)行FFT變化,然后將數(shù)據(jù)進(jìn)行平滑去噪處理,去掉頻譜上幅度值特別大的幾處噪聲,并將窗口進(jìn)行歸一化顯示[6],如圖4~圖6所示,頻率域內(nèi)的波形大體呈3種狀態(tài). 從圖4~圖6中可以看出:
圖4 頻譜圖 圖5 頻譜圖 圖6 頻譜圖
(1)圖4中頻域內(nèi)低頻部分的幅度值比較高,而高頻部分幅度值很低,高頻和低頻部分幅值明顯差別很大,與對(duì)應(yīng)的工廠實(shí)際觀測(cè)的燃燒狀況時(shí)間表進(jìn)行比較,發(fā)現(xiàn)此種狀態(tài)為過(guò)燒;
(2)圖5中頻域內(nèi)總體的幅度值比較平穩(wěn),高頻和低頻部分幅值差距比較小,與對(duì)應(yīng)的燃燒狀況時(shí)間表進(jìn)行比較,發(fā)現(xiàn)此種狀態(tài)為正常;
(3)圖6中頻域內(nèi)總的幅度值都比較高,與圖4相比高頻和低頻部分幅值也有一定差距,但差別不大,與對(duì)應(yīng)的燃燒狀況時(shí)間表進(jìn)行比較,發(fā)現(xiàn)此種狀態(tài)為欠燒.
根據(jù)以上頻譜幅值的特點(diǎn)進(jìn)行處理,考慮到現(xiàn)場(chǎng)聲音采集器放置的位置不同則采集到的聲音整體幅度可能不同,我們采用比值的方式對(duì)數(shù)據(jù)進(jìn)行處理.我們?nèi)∶恳环鶊D頻譜幅值差距最大的5 k到10 k之間的數(shù)據(jù)之和為sum1,15 k到20 k之間的數(shù)據(jù)之和為sum2,然后將這兩段頻率內(nèi)的數(shù)據(jù)求平均avr1、avr2,然后取其比值:
表1 3種狀態(tài)的比值統(tǒng)計(jì)分布
這樣處理后3種狀態(tài)的比值統(tǒng)計(jì)分布如表1所示.
從表1中可以看出過(guò)燒的比值會(huì)明顯大于2,正常的比值最小,集中于1.42以下,欠燒的在1.42和2之間.但是觀察發(fā)現(xiàn)在1.4和2之間在圖像上也有一部分屬于正常的狀態(tài),這一段區(qū)分的比較模糊,所以將比值落在1.4和2之間的數(shù)據(jù)進(jìn)行細(xì)化,再加一個(gè)絕對(duì)值,取前5 k到10 k幅度值比較小的作為正常的情況.同樣在1.42以下也有一部分是欠燒的狀態(tài),所以也取5 k到10 k的幅度值,把這時(shí)幅度值比較大的作為欠燒狀態(tài).運(yùn)用這種方法將其它時(shí)間段的數(shù)據(jù)同樣進(jìn)行處理,發(fā)現(xiàn)基本可以比較準(zhǔn)確地判斷出不同的燃燒狀態(tài).
我們?cè)O(shè)計(jì)該系統(tǒng)的目的是實(shí)現(xiàn)熟料質(zhì)量的自動(dòng)檢測(cè),經(jīng)過(guò)實(shí)際驗(yàn)證,該系統(tǒng)基本能夠?qū)崿F(xiàn)檢測(cè)并且準(zhǔn)確率較高,而且可以將該系統(tǒng)應(yīng)用于其它的能夠通過(guò)聲音來(lái)判斷狀態(tài)的系統(tǒng).但是,由于在短時(shí)間內(nèi)熟料的狀態(tài)可能連續(xù)發(fā)生多次變化,所以這里只是建立了一個(gè)在一定時(shí)間內(nèi)狀態(tài)穩(wěn)定的檢測(cè)系統(tǒng)框架,但這樣的框架是可行的.對(duì)某一段時(shí)間狀態(tài)穩(wěn)定的情況,只要對(duì)它的頻譜稍作分析,建立數(shù)據(jù)庫(kù)就可對(duì)熟料燃燒狀態(tài)進(jìn)行檢測(cè).
參考文獻(xiàn)
[1] 王黎明,陳雙橋,閆曉玲.ARM9 嵌入式系統(tǒng)開(kāi)發(fā)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008:38-41.
[2] 張冬泉,譚南林.Windows CE 實(shí)用開(kāi)發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2006:101.
[3] 李大為.WinCE 工程實(shí)踐完全解析[M].北京:中國(guó)電力出版社,2008:48-86.
[4] Samuel Phung. Professional Windows Embedded CE 6.0[M].北京:清華大學(xué)出版社,2009.
[5] 孫 鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2010:523-556.
[6] 聶祥飛,王海寶,譚澤富.MATLAB程序設(shè)計(jì)及其在信號(hào)處理中的應(yīng)用[M].成都:西南交通大學(xué)出版社,2005:76-80.
[7] 林 濤.嵌入式操作系統(tǒng)Windows CE的研究[J].微計(jì)算機(jī)信息,2006,(6):91-93.
[8] 殷小川.網(wǎng)絡(luò)編程與開(kāi)發(fā)技術(shù)[M].西安:西安交通大學(xué)出版社,2009:133-159.
[9] 許文儀,谷 雨,俞 熹.基于MATLAB的聲波分析研究[J].實(shí)驗(yàn)室研究與探索,2008,27(7):38-41.
[10] 司岳濤.用MATLAB設(shè)計(jì)的兩種濾波器的比較[J].長(zhǎng)三角,2010,4(5):112-114.
[11] 陳懷?。?dāng)?shù)字信號(hào)處理教程:MATLAB釋義與實(shí)現(xiàn)[M].第2版.北京:電子工業(yè)出版社,2008:112-135.