王續(xù)澎, 郭忠文, 劉穎健, 劉石勇, 王 璽
(中國海洋大學(xué)信息科學(xué)與工程學(xué)院,山東 青島 266100)
在工業(yè)制造、環(huán)境監(jiān)測、醫(yī)療護(hù)理、海洋探測等領(lǐng)域,傳感器網(wǎng)絡(luò)得到廣泛應(yīng)用[1]。傳感器網(wǎng)絡(luò)作為物聯(lián)網(wǎng)技術(shù)發(fā)展的一個重要產(chǎn)物,已經(jīng)得到專家、學(xué)者的廣泛認(rèn)可,數(shù)據(jù)采集技術(shù)作為傳感器網(wǎng)絡(luò)一個重要環(huán)節(jié),也在不斷向前發(fā)展。目前傳感器網(wǎng)絡(luò)數(shù)據(jù)采集正朝著高精度、高速度的方向發(fā)展[2]。
現(xiàn)階段傳感器網(wǎng)絡(luò)研究集中于無線傳感器網(wǎng)絡(luò),有關(guān)傳感器網(wǎng)絡(luò)的研究重點是降低傳感器能耗,延長生存周期[3-4],對有關(guān)于數(shù)據(jù)采集效率等的研究沒有足夠重視,而在一些環(huán)境下,對于數(shù)據(jù)的實時性要求較高[5-6],尤其是對于環(huán)境監(jiān)測等領(lǐng)域,需要迅速響應(yīng)、獲取數(shù)據(jù),并進(jìn)行應(yīng)急措施,來預(yù)防災(zāi)害的發(fā)生,因此需要更加高效的采集算法來處理當(dāng)前所面對的困境。并且前端傳感器節(jié)點數(shù)據(jù)響應(yīng)周期很短,數(shù)據(jù)采集大多數(shù)時間耗費在線路傳輸延遲之上[7],如果數(shù)據(jù)采集周期長、效率低,會造成大量的數(shù)據(jù)及時間浪費。目前數(shù)據(jù)采集接口廣泛采用串行口,傳感器網(wǎng)絡(luò)傳統(tǒng)的數(shù)據(jù)采集模式大多采用串行處理[8],從一個設(shè)備采集完數(shù)據(jù)后在繼續(xù)從另一個設(shè)備采集數(shù)據(jù),不同設(shè)備的響應(yīng)時間長短不同,整個采集周期是所有設(shè)備響應(yīng)時間的累計總和,一旦設(shè)備數(shù)量比較多,會使整個數(shù)據(jù)采集周期嚴(yán)重加長,可能會達(dá)到幾秒,甚至十幾秒,并且如果有設(shè)備發(fā)生故障,無法正常通訊,更加延長了采集周期。由于采集時間大多數(shù)耗費在傳輸延遲之上,如何通過改進(jìn)現(xiàn)有的數(shù)據(jù)采集算法,減小傳輸延遲的影響,縮短數(shù)據(jù)采集的時間,是一個急需解決的問題?;谏鲜鰡栴},結(jié)合傳統(tǒng)數(shù)據(jù)采集算法與并行技術(shù),本文建立了一種高頻數(shù)據(jù)采集處理模型,提出了高頻數(shù)據(jù)采集處理算法,該算法不再依次對每個設(shè)備進(jìn)行數(shù)據(jù)采集,而是批量進(jìn)行數(shù)據(jù)采集,根據(jù)接口的數(shù)量,依次發(fā)送所有設(shè)備的數(shù)據(jù)采集命令,待所有數(shù)據(jù)獲取之后統(tǒng)一進(jìn)行處理,并記錄每個設(shè)備的采集周期,如此,采集時間只與采集周期最長的設(shè)備相關(guān),整個采集時間縮短很多,解決了當(dāng)前數(shù)據(jù)采集速率較低的問題。
根據(jù)實際實驗室環(huán)境使用PC和智能儀表進(jìn)行了大量的模擬實驗,獲得了大量有關(guān)數(shù)據(jù)采集周期的數(shù)據(jù),經(jīng)過理論及可視化圖表分析,以及各種設(shè)備數(shù)據(jù)橫向和縱向比較,詳細(xì)驗證了高頻數(shù)據(jù)采集處理算法采集速率的高效性。
傳感器網(wǎng)絡(luò)數(shù)據(jù)采集物理結(jié)構(gòu)如圖1所示,主要包括3個部分:傳感設(shè)備、智能轉(zhuǎn)換模塊以及數(shù)據(jù)采集系統(tǒng)。傳感器是指數(shù)據(jù)采集的對象,位于傳感器網(wǎng)絡(luò)結(jié)構(gòu)的最底層,其功能為“感知”,即獲取設(shè)備運行信息。傳感設(shè)備是傳感器網(wǎng)絡(luò)的核心,是信息獲取的關(guān)鍵部分,主要任務(wù)為通過傳感器探測外界的聲音、溫度和壓力等物理量,并向外輸出。智能轉(zhuǎn)換模塊是將傳感設(shè)備輸出的物理量按照一定的規(guī)則變換成可以被計算機識別的電信號信息輸出,以及將計算機的電信號轉(zhuǎn)換為傳感器能識別的物理量信號。數(shù)據(jù)采集系統(tǒng)可以對外發(fā)送數(shù)據(jù)采集命令,并可以將智能轉(zhuǎn)換模塊輸出的電信號處理為具有實際意義的數(shù)值信息。
圖1 傳感器網(wǎng)絡(luò)數(shù)據(jù)采集物理結(jié)構(gòu)圖Fig.1 Physical structure of data acquisition in sensor network
傳感器網(wǎng)絡(luò)單節(jié)點數(shù)據(jù)采集邏輯流程如下,數(shù)據(jù)采集系統(tǒng)發(fā)送命令后,經(jīng)過智能轉(zhuǎn)換模塊處理,傳感設(shè)備接收命令后進(jìn)行響應(yīng),再經(jīng)過轉(zhuǎn)換后,發(fā)送給前端數(shù)據(jù)采集系統(tǒng),在數(shù)據(jù)采集系統(tǒng)判斷數(shù)據(jù)的完整性之后,進(jìn)行接收處理分析,然后將數(shù)據(jù)返回給前臺顯示或者在服務(wù)器中存儲。如果采集到的數(shù)據(jù)不完整或者沒有采集到數(shù)據(jù),則重新發(fā)送數(shù)據(jù)采集命令,在設(shè)定的時間或者重復(fù)采集次數(shù)上限內(nèi),重復(fù)執(zhí)行以上操作。具體算法見算法1。
算法1
單節(jié)點數(shù)據(jù)采集算法INPUT: Instrument, Comport // Instrument:采集設(shè)備序列;Comport:智能轉(zhuǎn)換接口序列OUTPUT: CollectCycle, Data //CollectCycle:每個設(shè)備數(shù)據(jù)采集周期序列;Data:采集到的數(shù)據(jù)1:Initialize(Instrument, Comport) //初始化設(shè)備以及智能轉(zhuǎn)換接口2: send(command) //發(fā)送預(yù)先設(shè)定好的數(shù)據(jù)采集命令3: if(receive data)4: record(CollectCycle, Data) //如果獲取到數(shù)據(jù),記錄采集周期及采集到的數(shù)據(jù)5: else6: return(cannot receive data) //如果獲取不到數(shù)據(jù),返回提示信息
傳感器網(wǎng)絡(luò)傳統(tǒng)的數(shù)據(jù)采集模式大多采用串行處理,具體處理算法見算法2,數(shù)據(jù)采集系統(tǒng)在發(fā)送采集命令,該命令通常是由設(shè)備生產(chǎn)廠家在說明文件中規(guī)定的,傳感器設(shè)備接收命令并進(jìn)行響應(yīng),此時數(shù)據(jù)采集系統(tǒng)判斷傳感器設(shè)備返回的字節(jié)長度是否正確、完整,如果是則進(jìn)行數(shù)據(jù)讀取操作,并對數(shù)據(jù)進(jìn)行分析、處理,記錄采集周期,否則進(jìn)入循環(huán)等待,直到返回數(shù)據(jù)被完整讀取,但循環(huán)等待需要有一個時間域,時間域是在前期經(jīng)過多次測試后人為設(shè)置的大小,通常是依據(jù)參與人的經(jīng)驗確定的,具有很大的不確定性。整個串行數(shù)據(jù)采集算法依據(jù)設(shè)備個數(shù)重復(fù)執(zhí)行以上過程,直到所有傳感設(shè)備循環(huán)執(zhí)行一遍。從以上描述可以看出,假設(shè)設(shè)備總數(shù)為L,每個設(shè)備的采集周期為ti(i=1,2……L),則傳統(tǒng)串行數(shù)據(jù)采集算法的采集時間為
T0=∑Lti。
(1)
算法2
串行數(shù)據(jù)采集算法INPUT: Instrument, Comport // Instrument:采集設(shè)備序列;Comport:智能轉(zhuǎn)換接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:數(shù)據(jù)采集時間;CollectCycle:每個設(shè)備數(shù)據(jù)采集周期序列;Data:采集到的數(shù)據(jù)序列1:Initialize(Instrument, Comport) //初始化設(shè)備以及智能轉(zhuǎn)換接口序列,并獲取到設(shè)備總數(shù)L2:for i=1to L//對所有設(shè)備進(jìn)行采集3: send(command) //發(fā)送預(yù)先設(shè)定好的數(shù)據(jù)采集命令4: if(receive data)5: record(CollectCycle, Data) //如果獲取到數(shù)據(jù),記錄采集周期及采集到的數(shù)據(jù)序列6: else7: return(cannot receive data) //如果獲取不到數(shù)據(jù),返回提示信息8:end for9: record(CollectTime) //記錄整個采集時間
從上述描述中我們可以發(fā)現(xiàn),串行數(shù)據(jù)采集算法是等待一個傳感設(shè)備數(shù)據(jù)采集結(jié)束之后開始執(zhí)行另一個設(shè)備的采集,采集時間是所有傳感設(shè)備采集時間的累計總和,數(shù)據(jù)采集時間主要耗費在等待每個傳感設(shè)備響應(yīng),并且如果傳感設(shè)備的數(shù)量較多,很容易造成數(shù)據(jù)采集周期較長的問題,嚴(yán)重影響了數(shù)據(jù)采集的效率。表1是對同種類型設(shè)備個數(shù)不斷增加數(shù)據(jù)采集周期的變化,并且每個接口直接有一個傳感設(shè)備,可以發(fā)現(xiàn)隨著設(shè)備個數(shù)增加,采集周期基本上呈線性增長。
表1 串行數(shù)據(jù)采集周期
并行計算是相對于串行計算來說的,它是一種一次可執(zhí)行多個指令的算法,目的是提高計算速度,及通過擴大問題求解規(guī)模,解決大型而復(fù)雜的計算問題。從上述描述我們可以知道并行算法是同時對多條指令進(jìn)行處理,基于這種思想,提出了高頻數(shù)據(jù)采集算法,即同時對多個傳感設(shè)備進(jìn)行數(shù)據(jù)采集。根據(jù)此思想建立了高頻數(shù)據(jù)采集模型,如圖2所示,該模型主要包含配置模塊、數(shù)據(jù)采集系統(tǒng)、智能轉(zhuǎn)換模塊以及傳感設(shè)備,數(shù)據(jù)采集系統(tǒng)調(diào)用配置模塊預(yù)先配置好的信息,通過智能轉(zhuǎn)換模塊發(fā)送數(shù)據(jù)采集命令給傳感設(shè)備,傳感設(shè)備進(jìn)行響應(yīng),并通過智能轉(zhuǎn)換模塊對影響數(shù)據(jù)進(jìn)行轉(zhuǎn)換之后,將數(shù)據(jù)返回給數(shù)據(jù)采集系統(tǒng)進(jìn)行處理分析。以下針對每個模塊進(jìn)行簡要的介紹:配置模塊是整個模型的基礎(chǔ),可以通過該模塊配置需要進(jìn)行采集的接口、接口對應(yīng)的傳感設(shè)備以及傳感設(shè)備上的傳感器。數(shù)據(jù)采集系統(tǒng)是整個模型的核心部分,包括主控模塊和采集模塊兩部分,主控模塊主要是獲取配置模塊配置好的信息,調(diào)用相應(yīng)的采集模塊,以及接收采集模塊返回的數(shù)據(jù)并進(jìn)行分析處理;采集模塊發(fā)送數(shù)據(jù)采集命令并接收響應(yīng)的數(shù)據(jù)幀。智能轉(zhuǎn)換模塊是整個模型的連接部分,對發(fā)送的數(shù)據(jù)采集命令進(jìn)行轉(zhuǎn)換通過對應(yīng)的接口發(fā)送給傳感設(shè)備,以及對傳感設(shè)備響應(yīng)的數(shù)據(jù)命令進(jìn)行轉(zhuǎn)換。傳感設(shè)備是整個模型的前端部分,接收數(shù)據(jù)采集的命令并響應(yīng)返回數(shù)據(jù)命令。
圖2 傳感器網(wǎng)絡(luò)高頻數(shù)據(jù)采集模型Fig.2 High fvequcncy data acquisition model sensor network
高頻數(shù)據(jù)采集算法核心思想是統(tǒng)一發(fā)送所有設(shè)備的命令,等待所有數(shù)據(jù)返回完畢后進(jìn)行分析,記錄采集周期。具體算法介紹見算法3。
算法3
高頻數(shù)據(jù)采集算法INPUT: Instrument,Comport // Instrument:采集設(shè)備序列;Comport:智能轉(zhuǎn)換接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:數(shù)據(jù)采集時間;CollectCycle:每個設(shè)備數(shù)據(jù)采集周期序列;Data:采集到的數(shù)據(jù)序列1:Initialize(Instrument,Comport) //初始化設(shè)備以及智能轉(zhuǎn)換接口序列,并獲取到智能轉(zhuǎn)換模塊接口數(shù)N,單個接口最多連接設(shè)備個數(shù)M2:for i=1to M//對所有設(shè)備進(jìn)行M輪采集3:for j=1to N //對所有接口上的設(shè)備按照輪次進(jìn)行采集4: send(command) //發(fā)送預(yù)先設(shè)定好的數(shù)據(jù)采集命令5: if(receive data)6: record(CollectCycle, Data) //如果獲取到數(shù)據(jù),記錄采集周期及采集到的數(shù)據(jù)序列7: else8: return(cannot receive data) //如果獲取不到數(shù)據(jù),返回提示信息9: end for10: end for11: record(CollectTime) //記錄整個采集時間
(2)
如表2所示,每個接口只接有一個傳感設(shè)備,在一定的設(shè)備數(shù)量范圍中,采集周期隨著傳感設(shè)備數(shù)量的增加,基本上保持不變;當(dāng)設(shè)備數(shù)量達(dá)到70時,采集周期突然變長,并且設(shè)備數(shù)據(jù)持續(xù)增加,采集周期更加變長。
表2 高頻數(shù)據(jù)采集周期Table 2 High frequency data acquisition cycle
從高頻數(shù)據(jù)采集算法的介紹我們可以知道,如果以每一次發(fā)送命令、數(shù)據(jù)響應(yīng)作為一輪采集的話,則每一輪采集的時間等于響應(yīng)時間最長的傳感設(shè)備的響應(yīng)時間,另外由于大多數(shù)系統(tǒng)傳感設(shè)備基本上是均勻分布在多個硬件接口上,所以整個數(shù)據(jù)采集周期就是多輪采集時間的總和T1,而傳統(tǒng)的串行數(shù)據(jù)采集是所有設(shè)備響應(yīng)時間的總和T0,在通常情況下T1?T0,因此大大縮短了數(shù)據(jù)采集的周期,提高了數(shù)據(jù)采集的效率。然而在設(shè)備數(shù)量達(dá)到一定程度后,超出了算法所能承受的范圍,高頻數(shù)據(jù)采集周期T1將會迅速變長,但在實際情況下,一套數(shù)據(jù)采集系統(tǒng)并不會接有大量的傳感設(shè)備,該算法仍然具有實際意義。
為了更好地驗證該算法的高效性,在相同的實驗環(huán)境下利用兩種不同的算法進(jìn)行數(shù)據(jù)采集,記錄數(shù)據(jù)采集周期,并且采用不同數(shù)量、種類的傳感設(shè)備進(jìn)行橫向與縱向驗證,從多個角度進(jìn)行全方位分析。
3.2.1 同一種設(shè)備數(shù)量不斷增加 如圖3所示,同種設(shè)備采集周期基本呈現(xiàn)以下趨勢:串行數(shù)據(jù)采集算法采集周期與設(shè)備數(shù)量成正比,而高頻數(shù)據(jù)采集算法采集周期在傳感設(shè)備數(shù)量上限內(nèi)與采集輪數(shù)基本成正比,并且當(dāng)設(shè)備數(shù)量達(dá)到70時,高頻數(shù)據(jù)采集周期上升的十分明顯。
圖3 同種設(shè)備采集周期圖
3.2.2 多種設(shè)備數(shù)量不斷增加 選取五種設(shè)備,并且每一個接口只連接有一個設(shè)備,每種設(shè)備在高頻數(shù)據(jù)采集算法中的采集周期如表3所示,每種設(shè)備選取1~20個,從圖4可以看出,串行數(shù)據(jù)采集周期仍然呈線性增長,而高頻數(shù)據(jù)采集周期在一定設(shè)備數(shù)量內(nèi)基本上保持不變,與設(shè)備一的采集周期基本一致,并且周期隨著輪數(shù)的增加呈現(xiàn)出倍數(shù)增加,但超過了數(shù)量上限會迅速增長。
表3 每種設(shè)備高頻數(shù)據(jù)采集周期Talbe 3 High frequency data acquisition cycle for euch Instrument
圖4 多種設(shè)備采集周期圖
從以上情況我們可以看出,在一定的傳感設(shè)備數(shù)量范圍內(nèi),高頻數(shù)據(jù)采集算法采集周期隨著設(shè)備數(shù)量的增加并沒有發(fā)生顯著的變化,采集周期與每一輪采集響應(yīng)時間最長的傳感設(shè)備關(guān)系最大,整個數(shù)采集效率提高很多,并且在實際情況下,每一個硬件接口上不會連接太多的設(shè)備,采集的設(shè)備總量也不會十分巨大,因而具有廣泛的使用性。另外,針對高頻數(shù)據(jù)采集周期變長進(jìn)行分析,發(fā)現(xiàn)當(dāng)設(shè)備數(shù)量達(dá)到一定的上限之后,由于設(shè)備之間命令響應(yīng)存在一定的沖突,導(dǎo)致響應(yīng)數(shù)據(jù)不能正常接收,采集周期也隨之變長,并且,設(shè)備數(shù)據(jù)越多,響應(yīng)命令沖突越劇烈,采集周期變長的越明顯,很可能導(dǎo)致無法接收到相應(yīng)數(shù)據(jù),采集周期達(dá)到無限長。
通過對傳感器網(wǎng)絡(luò)傳統(tǒng)數(shù)據(jù)采集算法采集周期較長的原因分析,結(jié)合并行計算的原理,建立了一種高頻數(shù)據(jù)采集模型,提出了一種高頻數(shù)據(jù)采集算法,提高了數(shù)據(jù)采集效率,并通過模擬實驗,驗證了該算法的可行性。
在未來的研究計劃中,我們將進(jìn)一步研究影響傳感器網(wǎng)絡(luò)數(shù)據(jù)采集效率的關(guān)鍵問題,進(jìn)一步優(yōu)化高頻數(shù)據(jù)采集算法,提高傳感設(shè)備采集的數(shù)量上限,并在此算法的基礎(chǔ)上,優(yōu)化設(shè)備通訊流程,減少響應(yīng)等待時間,進(jìn)一步提高傳感器網(wǎng)絡(luò)數(shù)據(jù)采集效率。