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