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