王續澎, 郭忠文, 劉穎健, 劉石勇, 王 璽
(中國海洋大學信息科學與工程學院,山東 青島 266100)
在工業制造、環境監測、醫療護理、海洋探測等領域,傳感器網絡得到廣泛應用[1]。傳感器網絡作為物聯網技術發展的一個重要產物,已經得到專家、學者的廣泛認可,數據采集技術作為傳感器網絡一個重要環節,也在不斷向前發展。目前傳感器網絡數據采集正朝著高精度、高速度的方向發展[2]。
現階段傳感器網絡研究集中于無線傳感器網絡,有關傳感器網絡的研究重點是降低傳感器能耗,延長生存周期[3-4],對有關于數據采集效率等的研究沒有足夠重視,而在一些環境下,對于數據的實時性要求較高[5-6],尤其是對于環境監測等領域,需要迅速響應、獲取數據,并進行應急措施,來預防災害的發生,因此需要更加高效的采集算法來處理當前所面對的困境。并且前端傳感器節點數據響應周期很短,數據采集大多數時間耗費在線路傳輸延遲之上[7],如果數據采集周期長、效率低,會造成大量的數據及時間浪費。目前數據采集接口廣泛采用串行口,傳感器網絡傳統的數據采集模式大多采用串行處理[8],從一個設備采集完數據后在繼續從另一個設備采集數據,不同設備的響應時間長短不同,整個采集周期是所有設備響應時間的累計總和,一旦設備數量比較多,會使整個數據采集周期嚴重加長,可能會達到幾秒,甚至十幾秒,并且如果有設備發生故障,無法正常通訊,更加延長了采集周期。由于采集時間大多數耗費在傳輸延遲之上,如何通過改進現有的數據采集算法,減小傳輸延遲的影響,縮短數據采集的時間,是一個急需解決的問題。基于上述問題,結合傳統數據采集算法與并行技術,本文建立了一種高頻數據采集處理模型,提出了高頻數據采集處理算法,該算法不再依次對每個設備進行數據采集,而是批量進行數據采集,根據接口的數量,依次發送所有設備的數據采集命令,待所有數據獲取之后統一進行處理,并記錄每個設備的采集周期,如此,采集時間只與采集周期最長的設備相關,整個采集時間縮短很多,解決了當前數據采集速率較低的問題。
根據實際實驗室環境使用PC和智能儀表進行了大量的模擬實驗,獲得了大量有關數據采集周期的數據,經過理論及可視化圖表分析,以及各種設備數據橫向和縱向比較,詳細驗證了高頻數據采集處理算法采集速率的高效性。
傳感器網絡數據采集物理結構如圖1所示,主要包括3個部分:傳感設備、智能轉換模塊以及數據采集系統。傳感器是指數據采集的對象,位于傳感器網絡結構的最底層,其功能為“感知”,即獲取設備運行信息。傳感設備是傳感器網絡的核心,是信息獲取的關鍵部分,主要任務為通過傳感器探測外界的聲音、溫度和壓力等物理量,并向外輸出。智能轉換模塊是將傳感設備輸出的物理量按照一定的規則變換成可以被計算機識別的電信號信息輸出,以及將計算機的電信號轉換為傳感器能識別的物理量信號。數據采集系統可以對外發送數據采集命令,并可以將智能轉換模塊輸出的電信號處理為具有實際意義的數值信息。

圖1 傳感器網絡數據采集物理結構圖Fig.1 Physical structure of data acquisition in sensor network
傳感器網絡單節點數據采集邏輯流程如下,數據采集系統發送命令后,經過智能轉換模塊處理,傳感設備接收命令后進行響應,再經過轉換后,發送給前端數據采集系統,在數據采集系統判斷數據的完整性之后,進行接收處理分析,然后將數據返回給前臺顯示或者在服務器中存儲。如果采集到的數據不完整或者沒有采集到數據,則重新發送數據采集命令,在設定的時間或者重復采集次數上限內,重復執行以上操作。具體算法見算法1。
算法1

單節點數據采集算法INPUT: Instrument, Comport // Instrument:采集設備序列;Comport:智能轉換接口序列OUTPUT: CollectCycle, Data //CollectCycle:每個設備數據采集周期序列;Data:采集到的數據1:Initialize(Instrument, Comport) //初始化設備以及智能轉換接口2: send(command) //發送預先設定好的數據采集命令3: if(receive data)4: record(CollectCycle, Data) //如果獲取到數據,記錄采集周期及采集到的數據5: else6: return(cannot receive data) //如果獲取不到數據,返回提示信息
傳感器網絡傳統的數據采集模式大多采用串行處理,具體處理算法見算法2,數據采集系統在發送采集命令,該命令通常是由設備生產廠家在說明文件中規定的,傳感器設備接收命令并進行響應,此時數據采集系統判斷傳感器設備返回的字節長度是否正確、完整,如果是則進行數據讀取操作,并對數據進行分析、處理,記錄采集周期,否則進入循環等待,直到返回數據被完整讀取,但循環等待需要有一個時間域,時間域是在前期經過多次測試后人為設置的大小,通常是依據參與人的經驗確定的,具有很大的不確定性。整個串行數據采集算法依據設備個數重復執行以上過程,直到所有傳感設備循環執行一遍。從以上描述可以看出,假設設備總數為L,每個設備的采集周期為ti(i=1,2……L),則傳統串行數據采集算法的采集時間為
T0=∑Lti。
(1)
算法2

串行數據采集算法INPUT: Instrument, Comport // Instrument:采集設備序列;Comport:智能轉換接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:數據采集時間;CollectCycle:每個設備數據采集周期序列;Data:采集到的數據序列1:Initialize(Instrument, Comport) //初始化設備以及智能轉換接口序列,并獲取到設備總數L2:for i=1to L//對所有設備進行采集3: send(command) //發送預先設定好的數據采集命令4: if(receive data)5: record(CollectCycle, Data) //如果獲取到數據,記錄采集周期及采集到的數據序列6: else7: return(cannot receive data) //如果獲取不到數據,返回提示信息8:end for9: record(CollectTime) //記錄整個采集時間
從上述描述中我們可以發現,串行數據采集算法是等待一個傳感設備數據采集結束之后開始執行另一個設備的采集,采集時間是所有傳感設備采集時間的累計總和,數據采集時間主要耗費在等待每個傳感設備響應,并且如果傳感設備的數量較多,很容易造成數據采集周期較長的問題,嚴重影響了數據采集的效率。表1是對同種類型設備個數不斷增加數據采集周期的變化,并且每個接口直接有一個傳感設備,可以發現隨著設備個數增加,采集周期基本上呈線性增長。

表1 串行數據采集周期
并行計算是相對于串行計算來說的,它是一種一次可執行多個指令的算法,目的是提高計算速度,及通過擴大問題求解規模,解決大型而復雜的計算問題。從上述描述我們可以知道并行算法是同時對多條指令進行處理,基于這種思想,提出了高頻數據采集算法,即同時對多個傳感設備進行數據采集。根據此思想建立了高頻數據采集模型,如圖2所示,該模型主要包含配置模塊、數據采集系統、智能轉換模塊以及傳感設備,數據采集系統調用配置模塊預先配置好的信息,通過智能轉換模塊發送數據采集命令給傳感設備,傳感設備進行響應,并通過智能轉換模塊對影響數據進行轉換之后,將數據返回給數據采集系統進行處理分析。以下針對每個模塊進行簡要的介紹:配置模塊是整個模型的基礎,可以通過該模塊配置需要進行采集的接口、接口對應的傳感設備以及傳感設備上的傳感器。數據采集系統是整個模型的核心部分,包括主控模塊和采集模塊兩部分,主控模塊主要是獲取配置模塊配置好的信息,調用相應的采集模塊,以及接收采集模塊返回的數據并進行分析處理;采集模塊發送數據采集命令并接收響應的數據幀。智能轉換模塊是整個模型的連接部分,對發送的數據采集命令進行轉換通過對應的接口發送給傳感設備,以及對傳感設備響應的數據命令進行轉換。傳感設備是整個模型的前端部分,接收數據采集的命令并響應返回數據命令。

圖2 傳感器網絡高頻數據采集模型Fig.2 High fvequcncy data acquisition model sensor network
高頻數據采集算法核心思想是統一發送所有設備的命令,等待所有數據返回完畢后進行分析,記錄采集周期。具體算法介紹見算法3。
算法3

高頻數據采集算法INPUT: Instrument,Comport // Instrument:采集設備序列;Comport:智能轉換接口序列OUTPUT:CollectTime, CollectCycle, Data //CollectTime:數據采集時間;CollectCycle:每個設備數據采集周期序列;Data:采集到的數據序列1:Initialize(Instrument,Comport) //初始化設備以及智能轉換接口序列,并獲取到智能轉換模塊接口數N,單個接口最多連接設備個數M2:for i=1to M//對所有設備進行M輪采集3:for j=1to N //對所有接口上的設備按照輪次進行采集4: send(command) //發送預先設定好的數據采集命令5: if(receive data)6: record(CollectCycle, Data) //如果獲取到數據,記錄采集周期及采集到的數據序列7: else8: return(cannot receive data) //如果獲取不到數據,返回提示信息9: end for10: end for11: record(CollectTime) //記錄整個采集時間

(2)
如表2所示,每個接口只接有一個傳感設備,在一定的設備數量范圍中,采集周期隨著傳感設備數量的增加,基本上保持不變;當設備數量達到70時,采集周期突然變長,并且設備數據持續增加,采集周期更加變長。

表2 高頻數據采集周期Table 2 High frequency data acquisition cycle
從高頻數據采集算法的介紹我們可以知道,如果以每一次發送命令、數據響應作為一輪采集的話,則每一輪采集的時間等于響應時間最長的傳感設備的響應時間,另外由于大多數系統傳感設備基本上是均勻分布在多個硬件接口上,所以整個數據采集周期就是多輪采集時間的總和T1,而傳統的串行數據采集是所有設備響應時間的總和T0,在通常情況下T1?T0,因此大大縮短了數據采集的周期,提高了數據采集的效率。然而在設備數量達到一定程度后,超出了算法所能承受的范圍,高頻數據采集周期T1將會迅速變長,但在實際情況下,一套數據采集系統并不會接有大量的傳感設備,該算法仍然具有實際意義。
為了更好地驗證該算法的高效性,在相同的實驗環境下利用兩種不同的算法進行數據采集,記錄數據采集周期,并且采用不同數量、種類的傳感設備進行橫向與縱向驗證,從多個角度進行全方位分析。
3.2.1 同一種設備數量不斷增加 如圖3所示,同種設備采集周期基本呈現以下趨勢:串行數據采集算法采集周期與設備數量成正比,而高頻數據采集算法采集周期在傳感設備數量上限內與采集輪數基本成正比,并且當設備數量達到70時,高頻數據采集周期上升的十分明顯。

圖3 同種設備采集周期圖
3.2.2 多種設備數量不斷增加 選取五種設備,并且每一個接口只連接有一個設備,每種設備在高頻數據采集算法中的采集周期如表3所示,每種設備選取1~20個,從圖4可以看出,串行數據采集周期仍然呈線性增長,而高頻數據采集周期在一定設備數量內基本上保持不變,與設備一的采集周期基本一致,并且周期隨著輪數的增加呈現出倍數增加,但超過了數量上限會迅速增長。

表3 每種設備高頻數據采集周期Talbe 3 High frequency data acquisition cycle for euch Instrument

圖4 多種設備采集周期圖
從以上情況我們可以看出,在一定的傳感設備數量范圍內,高頻數據采集算法采集周期隨著設備數量的增加并沒有發生顯著的變化,采集周期與每一輪采集響應時間最長的傳感設備關系最大,整個數采集效率提高很多,并且在實際情況下,每一個硬件接口上不會連接太多的設備,采集的設備總量也不會十分巨大,因而具有廣泛的使用性。另外,針對高頻數據采集周期變長進行分析,發現當設備數量達到一定的上限之后,由于設備之間命令響應存在一定的沖突,導致響應數據不能正常接收,采集周期也隨之變長,并且,設備數據越多,響應命令沖突越劇烈,采集周期變長的越明顯,很可能導致無法接收到相應數據,采集周期達到無限長。
通過對傳感器網絡傳統數據采集算法采集周期較長的原因分析,結合并行計算的原理,建立了一種高頻數據采集模型,提出了一種高頻數據采集算法,提高了數據采集效率,并通過模擬實驗,驗證了該算法的可行性。
在未來的研究計劃中,我們將進一步研究影響傳感器網絡數據采集效率的關鍵問題,進一步優化高頻數據采集算法,提高傳感設備采集的數量上限,并在此算法的基礎上,優化設備通訊流程,減少響應等待時間,進一步提高傳感器網絡數據采集效率。