《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 高速數(shù)字振動(dòng)信號(hào)無(wú)線接收螺旋緩沖算法
高速數(shù)字振動(dòng)信號(hào)無(wú)線接收螺旋緩沖算法
2018年電子技術(shù)應(yīng)用第4期
趙立杰1,魏昊晨1,2,田志穎1,2
1.沈陽(yáng)化工大學(xué) 信息工程學(xué)院,遼寧 沈陽(yáng)110142;2.西北工業(yè)大學(xué) 航海學(xué)院,陜西 西安710072
摘要: nRF24L01+無(wú)線設(shè)備將數(shù)據(jù)以32 B作為一個(gè)數(shù)據(jù)包進(jìn)行傳輸,但在上位機(jī)接收之后經(jīng)常發(fā)生數(shù)據(jù)包粘連和不連續(xù),致使在下一次接收之后出現(xiàn)數(shù)據(jù)不完整。以磨機(jī)采集信號(hào)和無(wú)線傳輸系統(tǒng)為例,系統(tǒng)需要振動(dòng)產(chǎn)生的數(shù)據(jù)信號(hào)連續(xù)不斷地被傳送進(jìn)來(lái),且要保證數(shù)據(jù)包的間隔一致。為保證接收數(shù)據(jù)的完整性和實(shí)時(shí)性,提出一種螺旋緩沖區(qū)域模型,該模型構(gòu)造出一個(gè)環(huán)狀隊(duì)列,可以臨時(shí)性地存儲(chǔ)一定量的數(shù)據(jù),這些數(shù)據(jù)在環(huán)形隊(duì)列中時(shí),就可以隨時(shí)對(duì)數(shù)據(jù)進(jìn)行操控。經(jīng)過(guò)球磨機(jī)筒體振動(dòng)信號(hào)采集和傳輸裝置驗(yàn)證,數(shù)據(jù)僅在不同步時(shí)刻發(fā)生丟失,大大降低了接收數(shù)據(jù)的錯(cuò)誤率,為大數(shù)據(jù)量的接收提供了一種穩(wěn)定機(jī)制。
中圖分類號(hào): TP274
文獻(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.
Helical buffering algorithm for wireless receiving of high speed digital vibration signal
Zhao Lijie1,Wei Haochen1,2,Tian Zhiying1,2
1.Institute of Information Engineering,Shenyang University of Chemical Technology,Shenyang 110142,China; 2. Institute of Navigation,Northwestern Polytechnical University,Xi′an 710072,China
Abstract: The way about nRF24L01+ wireless module to transmit the data takes 32 B data as a data package, and each time it will transmit one data package. Overlapping and discontinuity always occur after receiving the data by the host computer, which will lead to the next data package damaged or missed. Taking the system of ball mill signal acquisition and wireless transmission as an example, the vibration signal should be received continuously, and make sure that the packets are spaced identically. In order to ensure the data′s integrity and instantaneity, a helical buffer zone model is proposed. The model constructs a ring queue, which can temporarily store a certain amount of data, so you can manipulate the data at any time when these data are in the circular queue. After verification, the data are only missed in asynchronous time, which is known by the buffer algorithm simulation in the model of software design. This algorithm greatly reduces the error rate of data receiving,and offers a stabilisation mechanism for a large amount of data receiving.
Key words : large data reception processing;buffer design;algorithm model design;information processing

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ī)制。

qrs5-t1.gif

    時(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ù)。

qrs5-t2.gif

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)致包丟失。

qrs5-t3.gif

    時(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ù)上述操作。

qrs5-t4.gif

    引入時(shí)間機(jī)制,若發(fā)生數(shù)據(jù)錯(cuò)位,如圖5所示,在第二個(gè)包發(fā)送完畢后由發(fā)送函數(shù)拉低標(biāo)志位開(kāi)始計(jì)時(shí),恢復(fù)同步時(shí)序。

qrs5-t5.gif

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ù)勻速輸出。

qrs5-t6.gif

3.3 速度討論

    在磨機(jī)振動(dòng)信號(hào)采集過(guò)程中,nRF24L01+會(huì)以32 B為一個(gè)數(shù)據(jù)包向螺旋緩沖區(qū)內(nèi)推入,每個(gè)字節(jié)數(shù)據(jù)的時(shí)序圖如圖7所示。

qrs5-t7.gif

    在該設(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ū)其中的某一層次的俯視圖。

qrs5-t8.gif

    “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)在一張圖上,可以看清楚明顯的差異。

qrs5-t9.gif

    為了更清晰地表現(xiàn)數(shù)據(jù)樣本,本文將坐標(biāo)范圍縮小至0~200,如圖10所示,研究開(kāi)始的錯(cuò)誤狀態(tài)??梢杂^察到在一開(kāi)始獨(dú)立的“○”和“*”分開(kāi)了。

qrs5-t10.gif

    從圖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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。