文獻標識碼: 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)。文獻[1]中表明球磨機筒體表面振動信號與筒體內(nèi)部物料粉碎程度存在一定數(shù)學關(guān)系,,因此就球磨機筒體表面的振動信號分析來間接推斷和預(yù)測出球磨機內(nèi)部的負荷狀態(tài),,所以在設(shè)計球磨機負荷前端振動信號采集裝置中,要保證采集筒體表面的振動信號數(shù)據(jù)是準確,、實時和連續(xù)的,。
根據(jù)文獻[2],磨機負荷前端振動信號采集裝置在工作時會通過nRF24L01+無線設(shè)備源源不斷地向接收端發(fā)送數(shù)據(jù),,數(shù)據(jù)傳輸速度可達到nRF24L01+的最高速度2 Mbit/s,。在如此高速的情況下,則需要確保接收端準確接收數(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)需要處理遠程主機發(fā)送過來的大量數(shù)據(jù),每一個Socket都會配套一個緩沖區(qū),,該緩沖區(qū)用于解決應(yīng)用程序?qū)懭霐?shù)據(jù)時的阻塞現(xiàn)象,。文獻[3]、文獻[4]提出的緩沖區(qū)建立方法是單環(huán)結(jié)構(gòu)可選擇阻塞和非阻塞的緩沖模型,,易于負荷均衡,,在解決球磨機振動信號連續(xù)大劑量數(shù)據(jù)時有顯著的速度均衡作用,,可消滅相鄰數(shù)據(jù)包間的延時間隔,但無法解決數(shù)據(jù)包內(nèi)數(shù)據(jù)黏連問題,。文獻[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)
為了清晰表達螺旋緩沖模型的機構(gòu)設(shè)定和功能,使用圖1所示螺旋緩沖模型的思維導圖來解釋模型的結(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ū)導致數(shù)據(jù)包錯亂,。不幸的是,本文使用的無線設(shè)備同樣具備該問題,,這個現(xiàn)象將在下一節(jié)中詳細演示,。時間機制另一個工作就是給定數(shù)據(jù)傳輸?shù)墓潭ü?jié)律,保證數(shù)據(jù)包的完整性,,使數(shù)據(jù)包不會再次錯亂。
空間機制為文獻[3]~[5]中環(huán)形緩沖區(qū)的功能,,有一定的空間存儲數(shù)據(jù),、負載均衡作用。圖2所示為負載均衡器簡要功能示意圖,,D1,、D2、D3,、D4數(shù)據(jù)包之間的間隔差異明顯,,負載均衡器會消除這種差異,同時結(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ù)包完畢后清除超時標記位,,數(shù)據(jù)指針歸0,數(shù)據(jù)推入到緩沖區(qū)后被清除,,等到下一次超時計時使能開啟再接收下一個數(shù)據(jù)包,。在超時標志位被清除之后,此時無法接收任何數(shù)據(jù),。該機制能有效地解決由于包和包之間時間間隔問題導致的數(shù)據(jù)位錯亂問題,。要實現(xiàn)超時機制,務(wù)必要求處理器具備以下功能:
(1)具備定時器并且定時器具有中斷功能,;
(2)具備可讀電平狀態(tài)的IO口或外部中斷,。
2.2 原理介紹
時間機制本質(zhì)上是對有時間間隔的數(shù)據(jù)包進行同步讀取,保證數(shù)據(jù)是一個包一個包接收的,,而不是一個包的后半部分和下一個包的前半部分組成32 B的數(shù)據(jù)包,,圖3所示為數(shù)據(jù)包被拆開的一種可能性,錯位后組成的數(shù)據(jù)包包含了1 μs的時間延時分量,,不但影響速度,,還會因為數(shù)據(jù)斷載導致包丟失。
時間機制限定了以上在時間上自由讀取,,與無線發(fā)送數(shù)據(jù)包函數(shù)配合,,設(shè)定布爾標志位,判定可讀和不可讀兩種狀態(tài),。圖4所示為超時機制和發(fā)送函數(shù)配合的同步原理,,超時機制進行計時,如果超時則將布爾變量設(shè)定為“真”,,并停止計時,,此時,整個發(fā)送系統(tǒng)進入到可讀狀態(tài),,32 B數(shù)據(jù)發(fā)送完畢之后,,發(fā)送函數(shù)會將布爾標志位置為“假”,此時,,整個發(fā)送系統(tǒng)進入到不可讀狀態(tài),,計時系統(tǒng)開始計時等待下一個周期的數(shù)據(jù)包,,重復(fù)上述操作。
引入時間機制,,若發(fā)生數(shù)據(jù)錯位,,如圖5所示,在第二個包發(fā)送完畢后由發(fā)送函數(shù)拉低標志位開始計時,,恢復(fù)同步時序,。
3 空間機制
3.1 功能概述
任何系統(tǒng)中都有自己的一套數(shù)據(jù)管理方法,數(shù)據(jù)管理影響著整個系統(tǒng)的性能,。在第1節(jié)中介紹了時間機制,,解決了數(shù)據(jù)包黏連和錯位的問題,但在接收過程中數(shù)據(jù)包和數(shù)據(jù)包之間存在1 μs的延遲,,在對球磨機負荷振動信號的采集過程中,,不允許以32 B為分割,要求數(shù)據(jù)是無間斷連續(xù)的,。在螺旋緩沖中的數(shù)據(jù)還可以不斷對緩沖區(qū)域內(nèi)的數(shù)據(jù)進行判定,,所以就可以應(yīng)用于一般通信模型的響應(yīng)命令模式。
3.2 螺旋緩沖區(qū)模型
螺旋緩沖區(qū)的構(gòu)想源于數(shù)據(jù)結(jié)構(gòu)中先進先出的線性隊列,。通常在C語言中定義一個線形隊列使用一維數(shù)組的方式,,數(shù)組索引即是隊列中的序號。螺旋緩沖區(qū)也為一個先進先出的隊列,,但在定義方式上采取二維數(shù)組的方式,,例如data[x][y],索引代表在y層螺旋上的第x個元素,,如圖6所示,。螺旋緩沖區(qū)具有以下特性:
(1)可以有N層;
(2)每一層環(huán)形數(shù)據(jù)滿了之后可以進位到下一層,,也可以在自己的一層形成首位相接的回環(huán),;
(3)定義4個指針,分別為寫指針,、讀指針,、層指針和位置指針,可以實現(xiàn)任意位置的數(shù)據(jù)讀寫,;
(4)出口釋放速度可定義,實現(xiàn)非勻速數(shù)據(jù)進入,,數(shù)據(jù)勻速輸出,。
3.3 速度討論
在磨機振動信號采集過程中,nRF24L01+會以32 B為一個數(shù)據(jù)包向螺旋緩沖區(qū)內(nèi)推入,,每個字節(jié)數(shù)據(jù)的時序圖如圖7所示,。
在該設(shè)備中,,每當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)首尾相接,。當磨機振動信號裝置處于命令模式時,,需要對圓環(huán)進行銜接,形成閉合的圓環(huán),,啟用讀寫指針,,完成對命令的實時響應(yīng)。
文獻[2]中給出單個高性能環(huán)形緩沖區(qū)模型,,在模型中有一個不可忽視的弊端,,即沒有應(yīng)急命令區(qū)域。在整個系統(tǒng)設(shè)計過程中,,應(yīng)急操作尤為重要,,而單個圓環(huán)需要對圓環(huán)內(nèi)部數(shù)據(jù)進行處理完畢后,才能響應(yīng)應(yīng)急命令,。而在本文中給出的螺旋緩沖,,可以啟用兩層圓環(huán),其中一個作為應(yīng)急命令處理,,一旦有數(shù)據(jù)優(yōu)先對其進行處理,。
4 算法實現(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ù)存儲在計算機上,,進行一次性接收,。
由于數(shù)據(jù)十分龐大,故本文截取了8 000點的離散數(shù)據(jù),,為了讓數(shù)據(jù)分散度更清晰,,在繪制圖像時對該數(shù)據(jù)進行倍乘處理,圖9所示為采樣的時域離散圖,,從圖中可以看到,,每一數(shù)據(jù)點以“*”和外圍“○”表示,“*”表示接收的數(shù)據(jù),,“○”表示發(fā)送的數(shù)據(jù),。本文將數(shù)據(jù)呈現(xiàn)在一張圖上,可以看清楚明顯的差異,。
為了更清晰地表現(xiàn)數(shù)據(jù)樣本,,本文將坐標范圍縮小至0~200,如圖10所示,,研究開始的錯誤狀態(tài),。可以觀察到在一開始獨立的“○”和“*”分開了,。
從圖10中可以看到,,在一開始出現(xiàn)了不吻合狀態(tài),這也是一開始本文提到的問題,,當同步機制生效后,,數(shù)據(jù)開始連續(xù)吻合了。在約126點和195點的位置,,也發(fā)生了數(shù)據(jù)錯誤現(xiàn)象,,原因暫時不明,后續(xù)將進行研究,。
5 結(jié)論
針對球磨機數(shù)字振動信號的字節(jié)流搭建了時間機制和螺旋緩沖區(qū)域機制,,確保了數(shù)據(jù)包中數(shù)據(jù)組合的正確性和數(shù)據(jù)包間的數(shù)據(jù)連續(xù)性,為后續(xù)實時振動信號分析做好了鋪墊,。
本文提出的螺旋緩沖算法亦可以移植到其他協(xié)議傳輸上,,例如TCP、USB,、SCI,、I2C等,只需要更換底層通信代碼,,上層對于數(shù)據(jù)的處理只需進行少許的更改,。
參考文獻
[1] 譚仁鵬.球磨機振動信號采集與無線傳輸裝置的設(shè)計與開發(fā)[D].沈陽:東北大學,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.沈陽化工大學 信息工程學院,,遼寧 沈陽110142;2.西北工業(yè)大學 航海學院,,陜西 西安710072)