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