文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.173250
中文引用格式: 趙立杰,魏昊晨,田志穎. 高速數(shù)字振動(dòng)信號(hào)無(wú)線接收螺旋緩沖算法[J].電子技術(shù)應(yīng)用,2018,44(4):65-68.
英文引用格式: Zhao Lijie,Wei Haochen,Tian Zhiying. Helical buffering algorithm for wireless receiving of high speed digital vibration signal[J]. Application of Electronic Technique,2018,44(4):65-68.
0 引言
球磨機(jī)通過(guò)旋轉(zhuǎn)帶動(dòng)筒體內(nèi)部的研磨介質(zhì)粉碎物料。研磨介質(zhì)和物料在筒體旋轉(zhuǎn)過(guò)程中會(huì)不斷地撞擊筒壁內(nèi)側(cè),相應(yīng)地在筒體表面產(chǎn)生振動(dòng)響應(yīng)。文獻(xiàn)[1]中表明球磨機(jī)筒體表面振動(dòng)信號(hào)與筒體內(nèi)部物料粉碎程度存在一定數(shù)學(xué)關(guān)系,因此就球磨機(jī)筒體表面的振動(dòng)信號(hào)分析來(lái)間接推斷和預(yù)測(cè)出球磨機(jī)內(nèi)部的負(fù)荷狀態(tài),所以在設(shè)計(jì)球磨機(jī)負(fù)荷前端振動(dòng)信號(hào)采集裝置中,要保證采集筒體表面的振動(dòng)信號(hào)數(shù)據(jù)是準(zhǔn)確、實(shí)時(shí)和連續(xù)的。
根據(jù)文獻(xiàn)[2],磨機(jī)負(fù)荷前端振動(dòng)信號(hào)采集裝置在工作時(shí)會(huì)通過(guò)nRF24L01+無(wú)線設(shè)備源源不斷地向接收端發(fā)送數(shù)據(jù),數(shù)據(jù)傳輸速度可達(dá)到nRF24L01+的最高速度2 Mbit/s。在如此高速的情況下,則需要確保接收端準(zhǔn)確接收數(shù)據(jù)。nRF24L01+最大可設(shè)定在一次傳輸任務(wù)中傳遞一個(gè)包含32 B的數(shù)據(jù)的數(shù)據(jù)包,在傳遞下一個(gè)數(shù)據(jù)包時(shí)中間需要間隔至少10 ns的冷啟動(dòng)時(shí)間,這些數(shù)據(jù)包內(nèi)的數(shù)據(jù)常常在經(jīng)過(guò)協(xié)議轉(zhuǎn)換器件時(shí)發(fā)生數(shù)據(jù)丟失和粘連。在程序的接收中斷函數(shù)中如果直接以32 B為判定依據(jù)判定出接滿一個(gè)數(shù)據(jù)包,則會(huì)出現(xiàn)第一個(gè)數(shù)據(jù)包的后幾位和第二個(gè)數(shù)據(jù)包的前幾位組成一個(gè)32 B的數(shù)據(jù)包的情況,使數(shù)據(jù)位發(fā)生錯(cuò)亂,致使信息丟失。
數(shù)據(jù)緩沖和數(shù)據(jù)速度均衡在很多領(lǐng)域都有重要的應(yīng)用,例如Linux文件系統(tǒng)內(nèi)核代碼中含有inode緩沖區(qū)、dentry緩沖區(qū)、塊緩沖機(jī)制,這些對(duì)于數(shù)據(jù)IO性能有重要的作用;在速度均衡方面,Socket系統(tǒng)需要處理遠(yuǎn)程主機(jī)發(fā)送過(guò)來(lái)的大量數(shù)據(jù),每一個(gè)Socket都會(huì)配套一個(gè)緩沖區(qū),該緩沖區(qū)用于解決應(yīng)用程序?qū)懭霐?shù)據(jù)時(shí)的阻塞現(xiàn)象。文獻(xiàn)[3]、文獻(xiàn)[4]提出的緩沖區(qū)建立方法是單環(huán)結(jié)構(gòu)可選擇阻塞和非阻塞的緩沖模型,易于負(fù)荷均衡,在解決球磨機(jī)振動(dòng)信號(hào)連續(xù)大劑量數(shù)據(jù)時(shí)有顯著的速度均衡作用,可消滅相鄰數(shù)據(jù)包間的延時(shí)間隔,但無(wú)法解決數(shù)據(jù)包內(nèi)數(shù)據(jù)黏連問(wèn)題。文獻(xiàn)[5]提出的方法具備一般性,可應(yīng)用于連續(xù)性數(shù)據(jù)的讀取,但在本文的硬件條件限制下,存在數(shù)據(jù)傳輸格式錯(cuò)位問(wèn)題,無(wú)法套用該模型。
綜上,此軟件算法在整體的實(shí)時(shí)數(shù)據(jù)傳遞系統(tǒng)上要求數(shù)據(jù)是連續(xù)不斷持續(xù)供應(yīng)的,且不能出現(xiàn)數(shù)據(jù)位錯(cuò)亂。因此本文提出一個(gè)在軟件上建立的模型來(lái)解決nRF24L01+無(wú)線設(shè)備硬件規(guī)則與本設(shè)計(jì)要求的矛盾,以及協(xié)議轉(zhuǎn)換裝置出現(xiàn)的數(shù)據(jù)位錯(cuò)亂和數(shù)據(jù)不連續(xù)問(wèn)題。
1 模型結(jié)構(gòu)
為了清晰表達(dá)螺旋緩沖模型的機(jī)構(gòu)設(shè)定和功能,使用圖1所示螺旋緩沖模型的思維導(dǎo)圖來(lái)解釋模型的結(jié)構(gòu)和功能。模型設(shè)定有兩大機(jī)制,即時(shí)間機(jī)制和空間機(jī)制。
時(shí)間機(jī)制有兩個(gè)功能,糾正由于硬件設(shè)備自帶的緩沖功能造成的數(shù)據(jù)包內(nèi)的字節(jié)錯(cuò)亂問(wèn)題。問(wèn)題經(jīng)常出現(xiàn)在許多協(xié)議轉(zhuǎn)換芯片上,例如由沁恒公司生產(chǎn)的CH340串口轉(zhuǎn)USB協(xié)議的芯片中,常常由于芯片內(nèi)部的緩沖區(qū)導(dǎo)致數(shù)據(jù)包錯(cuò)亂。不幸的是,本文使用的無(wú)線設(shè)備同樣具備該問(wèn)題,這個(gè)現(xiàn)象將在下一節(jié)中詳細(xì)演示。時(shí)間機(jī)制另一個(gè)工作就是給定數(shù)據(jù)傳輸?shù)墓潭ü?jié)律,保證數(shù)據(jù)包的完整性,使數(shù)據(jù)包不會(huì)再次錯(cuò)亂。
空間機(jī)制為文獻(xiàn)[3]~[5]中環(huán)形緩沖區(qū)的功能,有一定的空間存儲(chǔ)數(shù)據(jù)、負(fù)載均衡作用。圖2所示為負(fù)載均衡器簡(jiǎn)要功能示意圖,D1、D2、D3、D4數(shù)據(jù)包之間的間隔差異明顯,負(fù)載均衡器會(huì)消除這種差異,同時(shí)結(jié)合控速機(jī)制這些數(shù)據(jù)會(huì)均勻輸出。另外,在空間機(jī)制中還存在隱性的功能,將設(shè)定管道為“透明的”,有指針可以隨時(shí)提取管道內(nèi)的數(shù)據(jù),這將有助于一些做命令識(shí)別的通信數(shù)據(jù)。
2 時(shí)間機(jī)制
2.1 功能概述
時(shí)間機(jī)制是數(shù)據(jù)包接收的時(shí)間測(cè)量工具,數(shù)據(jù)包與數(shù)據(jù)包之間接收的間隔為10 μs,以此來(lái)判定分時(shí)使能數(shù)據(jù)接收功能。在設(shè)定相應(yīng)的計(jì)時(shí)時(shí)間后,超過(guò)計(jì)時(shí)數(shù)時(shí)則使能接收功能,接收一組數(shù)據(jù)包完畢后清除超時(shí)標(biāo)記位,數(shù)據(jù)指針歸0,數(shù)據(jù)推入到緩沖區(qū)后被清除,等到下一次超時(shí)計(jì)時(shí)使能開(kāi)啟再接收下一個(gè)數(shù)據(jù)包。在超時(shí)標(biāo)志位被清除之后,此時(shí)無(wú)法接收任何數(shù)據(jù)。該機(jī)制能有效地解決由于包和包之間時(shí)間間隔問(wèn)題導(dǎo)致的數(shù)據(jù)位錯(cuò)亂問(wèn)題。要實(shí)現(xiàn)超時(shí)機(jī)制,務(wù)必要求處理器具備以下功能:
(1)具備定時(shí)器并且定時(shí)器具有中斷功能;
(2)具備可讀電平狀態(tài)的IO口或外部中斷。
2.2 原理介紹
時(shí)間機(jī)制本質(zhì)上是對(duì)有時(shí)間間隔的數(shù)據(jù)包進(jìn)行同步讀取,保證數(shù)據(jù)是一個(gè)包一個(gè)包接收的,而不是一個(gè)包的后半部分和下一個(gè)包的前半部分組成32 B的數(shù)據(jù)包,圖3所示為數(shù)據(jù)包被拆開(kāi)的一種可能性,錯(cuò)位后組成的數(shù)據(jù)包包含了1 μs的時(shí)間延時(shí)分量,不但影響速度,還會(huì)因?yàn)閿?shù)據(jù)斷載導(dǎo)致包丟失。
時(shí)間機(jī)制限定了以上在時(shí)間上自由讀取,與無(wú)線發(fā)送數(shù)據(jù)包函數(shù)配合,設(shè)定布爾標(biāo)志位,判定可讀和不可讀兩種狀態(tài)。圖4所示為超時(shí)機(jī)制和發(fā)送函數(shù)配合的同步原理,超時(shí)機(jī)制進(jìn)行計(jì)時(shí),如果超時(shí)則將布爾變量設(shè)定為“真”,并停止計(jì)時(shí),此時(shí),整個(gè)發(fā)送系統(tǒng)進(jìn)入到可讀狀態(tài),32 B數(shù)據(jù)發(fā)送完畢之后,發(fā)送函數(shù)會(huì)將布爾標(biāo)志位置為“假”,此時(shí),整個(gè)發(fā)送系統(tǒng)進(jìn)入到不可讀狀態(tài),計(jì)時(shí)系統(tǒng)開(kāi)始計(jì)時(shí)等待下一個(gè)周期的數(shù)據(jù)包,重復(fù)上述操作。
引入時(shí)間機(jī)制,若發(fā)生數(shù)據(jù)錯(cuò)位,如圖5所示,在第二個(gè)包發(fā)送完畢后由發(fā)送函數(shù)拉低標(biāo)志位開(kāi)始計(jì)時(shí),恢復(fù)同步時(shí)序。
3 空間機(jī)制
3.1 功能概述
任何系統(tǒng)中都有自己的一套數(shù)據(jù)管理方法,數(shù)據(jù)管理影響著整個(gè)系統(tǒng)的性能。在第1節(jié)中介紹了時(shí)間機(jī)制,解決了數(shù)據(jù)包黏連和錯(cuò)位的問(wèn)題,但在接收過(guò)程中數(shù)據(jù)包和數(shù)據(jù)包之間存在1 μs的延遲,在對(duì)球磨機(jī)負(fù)荷振動(dòng)信號(hào)的采集過(guò)程中,不允許以32 B為分割,要求數(shù)據(jù)是無(wú)間斷連續(xù)的。在螺旋緩沖中的數(shù)據(jù)還可以不斷對(duì)緩沖區(qū)域內(nèi)的數(shù)據(jù)進(jìn)行判定,所以就可以應(yīng)用于一般通信模型的響應(yīng)命令模式。
3.2 螺旋緩沖區(qū)模型
螺旋緩沖區(qū)的構(gòu)想源于數(shù)據(jù)結(jié)構(gòu)中先進(jìn)先出的線性隊(duì)列。通常在C語(yǔ)言中定義一個(gè)線形隊(duì)列使用一維數(shù)組的方式,數(shù)組索引即是隊(duì)列中的序號(hào)。螺旋緩沖區(qū)也為一個(gè)先進(jìn)先出的隊(duì)列,但在定義方式上采取二維數(shù)組的方式,例如data[x][y],索引代表在y層螺旋上的第x個(gè)元素,如圖6所示。螺旋緩沖區(qū)具有以下特性:
(1)可以有N層;
(2)每一層環(huán)形數(shù)據(jù)滿了之后可以進(jìn)位到下一層,也可以在自己的一層形成首位相接的回環(huán);
(3)定義4個(gè)指針,分別為寫(xiě)指針、讀指針、層指針和位置指針,可以實(shí)現(xiàn)任意位置的數(shù)據(jù)讀寫(xiě);
(4)出口釋放速度可定義,實(shí)現(xiàn)非勻速數(shù)據(jù)進(jìn)入,數(shù)據(jù)勻速輸出。
3.3 速度討論
在磨機(jī)振動(dòng)信號(hào)采集過(guò)程中,nRF24L01+會(huì)以32 B為一個(gè)數(shù)據(jù)包向螺旋緩沖區(qū)內(nèi)推入,每個(gè)字節(jié)數(shù)據(jù)的時(shí)序圖如圖7所示。
在該設(shè)備中,每當(dāng)CLK信號(hào)的上升沿到來(lái),無(wú)線設(shè)備寫(xiě)1 bit數(shù)據(jù),寫(xiě)滿8 bit的數(shù)據(jù)產(chǎn)生一個(gè)字節(jié)。上升沿來(lái)臨需要40 ns的時(shí)間,傳遞一個(gè)字節(jié)則需要640 ns的時(shí)間,字節(jié)和字節(jié)之間還需要10 μs的延遲。為了使輸出速度平均,需要在螺旋緩沖區(qū)的出口處設(shè)立控速機(jī)制,實(shí)現(xiàn)勻速輸出。
3.4 作為環(huán)形緩沖
圖8所示為環(huán)形緩沖區(qū)模型圖,環(huán)形緩沖區(qū)域?yàn)槁菪彌_區(qū)其中的某一層次的俯視圖。
“N”處為環(huán)形緩沖區(qū)中最后一個(gè)元素,這個(gè)元素可以和“1”處封閉起來(lái)作為環(huán)形緩沖區(qū),也可以斷開(kāi)后與上一層環(huán)和下一層環(huán)連接上。在球磨機(jī)振動(dòng)信號(hào)采集中,需要大型的緩沖區(qū)域,則需要每一層的圓環(huán)首尾相接。當(dāng)磨機(jī)振動(dòng)信號(hào)裝置處于命令模式時(shí),需要對(duì)圓環(huán)進(jìn)行銜接,形成閉合的圓環(huán),啟用讀寫(xiě)指針,完成對(duì)命令的實(shí)時(shí)響應(yīng)。
文獻(xiàn)[2]中給出單個(gè)高性能環(huán)形緩沖區(qū)模型,在模型中有一個(gè)不可忽視的弊端,即沒(méi)有應(yīng)急命令區(qū)域。在整個(gè)系統(tǒng)設(shè)計(jì)過(guò)程中,應(yīng)急操作尤為重要,而單個(gè)圓環(huán)需要對(duì)圓環(huán)內(nèi)部數(shù)據(jù)進(jìn)行處理完畢后,才能響應(yīng)應(yīng)急命令。而在本文中給出的螺旋緩沖,可以啟用兩層圓環(huán),其中一個(gè)作為應(yīng)急命令處理,一旦有數(shù)據(jù)優(yōu)先對(duì)其進(jìn)行處理。
4 算法實(shí)現(xiàn)
基于文獻(xiàn)[1],利用已采集好的離散磨機(jī)振動(dòng)信號(hào)作為數(shù)據(jù)樣本,對(duì)該系統(tǒng)中的數(shù)據(jù)模型實(shí)行可控速數(shù)據(jù)IO壓棧處理。利用TMS320VC5509A型號(hào)的DSP驅(qū)動(dòng)nRF24L01+無(wú)線設(shè)備作為發(fā)送機(jī),利用TMS320C6748型號(hào)的DSP驅(qū)動(dòng)nRF24L01+無(wú)線設(shè)備作為接收機(jī),接收的數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)上,進(jìn)行一次性接收。
由于數(shù)據(jù)十分龐大,故本文截取了8 000點(diǎn)的離散數(shù)據(jù),為了讓數(shù)據(jù)分散度更清晰,在繪制圖像時(shí)對(duì)該數(shù)據(jù)進(jìn)行倍乘處理,圖9所示為采樣的時(shí)域離散圖,從圖中可以看到,每一數(shù)據(jù)點(diǎn)以“*”和外圍“○”表示,“*”表示接收的數(shù)據(jù),“○”表示發(fā)送的數(shù)據(jù)。本文將數(shù)據(jù)呈現(xiàn)在一張圖上,可以看清楚明顯的差異。
為了更清晰地表現(xiàn)數(shù)據(jù)樣本,本文將坐標(biāo)范圍縮小至0~200,如圖10所示,研究開(kāi)始的錯(cuò)誤狀態(tài)??梢杂^察到在一開(kāi)始獨(dú)立的“○”和“*”分開(kāi)了。
從圖10中可以看到,在一開(kāi)始出現(xiàn)了不吻合狀態(tài),這也是一開(kāi)始本文提到的問(wèn)題,當(dāng)同步機(jī)制生效后,數(shù)據(jù)開(kāi)始連續(xù)吻合了。在約126點(diǎn)和195點(diǎn)的位置,也發(fā)生了數(shù)據(jù)錯(cuò)誤現(xiàn)象,原因暫時(shí)不明,后續(xù)將進(jìn)行研究。
5 結(jié)論
針對(duì)球磨機(jī)數(shù)字振動(dòng)信號(hào)的字節(jié)流搭建了時(shí)間機(jī)制和螺旋緩沖區(qū)域機(jī)制,確保了數(shù)據(jù)包中數(shù)據(jù)組合的正確性和數(shù)據(jù)包間的數(shù)據(jù)連續(xù)性,為后續(xù)實(shí)時(shí)振動(dòng)信號(hào)分析做好了鋪墊。
本文提出的螺旋緩沖算法亦可以移植到其他協(xié)議傳輸上,例如TCP、USB、SCI、I2C等,只需要更換底層通信代碼,上層對(duì)于數(shù)據(jù)的處理只需進(jìn)行少許的更改。
參考文獻(xiàn)
[1] 譚仁鵬.球磨機(jī)振動(dòng)信號(hào)采集與無(wú)線傳輸裝置的設(shè)計(jì)與開(kāi)發(fā)[D].沈陽(yáng):東北大學(xué),2009.
[2] 趙立杰,陳斌,魏昊晨,等.一種非接觸式的球磨機(jī)旋轉(zhuǎn)筒體振動(dòng)信號(hào)采集系統(tǒng):中國(guó),CN 105136276 A[P].2017-11-10.
[3] 姚章俊,陳蜀宇,盧堯.一種高性能環(huán)形緩沖區(qū)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2012,38(8):228-231.
[4] 楊澤林,李先發(fā).基于雙指針環(huán)形緩沖區(qū)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2016(11):67-69.
[5] 黃毅峰.支持阻塞與非阻塞模型且線程安全的環(huán)形緩沖的設(shè)計(jì)與實(shí)現(xiàn)——環(huán)形緩沖、攻克高級(jí)緩沖技術(shù)的關(guān)鍵[J].電腦編程技巧與維護(hù),2003(11):51-54.
作者信息:
趙立杰1,魏昊晨1,2,田志穎1,2
(1.沈陽(yáng)化工大學(xué) 信息工程學(xué)院,遼寧 沈陽(yáng)110142;2.西北工業(yè)大學(xué) 航海學(xué)院,陜西 西安710072)