付 豪, 湯寶平, 黃 藝, 鄧 蕾, 何 灝
(重慶大學 機械傳動國家重點實驗室,重慶 400030)
同步觸發采集是無線傳感器網絡在機械振動監測中的關鍵問題。在進行機械振動無線傳感器網絡信號采集時,為保證信號分析結果的準確性需多節點同步觸發采集,但由于節點分散,難以保證各個節點同步測量[1-3]。目前同步采集主要采用信標同步[4]、時鐘同步[5]或采集節點間通信[6]等方法。信標同步或時鐘同步需頻繁獲取并發送信標、時間戳等,易增加節點功耗,采集節點間通信難以在距離較遠時實現同步信息傳輸[7]。此外,目前大多數節點均采用單控制器與單傳輸器的設計模式,其功能簡單,難以平衡傳輸速度、傳輸距離、節點組網、同步采集等需求。
目前,信標或時鐘同步采集方法主要有參考廣播同步算法[8]、傳感器網絡時間同步協議 (timing-sync protocol for sensor networks, TPSN)[9]、延遲測量時間同步協議[10]、動態傳感器網絡時間同步協議 (flooding time synchronization protocol,FTSP)及其改進算法。目前上述方法已在一些領域得到了廣泛的應用,但在機械振動測試方面同步觸發精度相對較低,如FTSP和TPSN最小同步精度分別為67 μs[11]和50 μs[12]。
本文在設計雙模復用基礎上,構建伴隨組網方法,提出路徑感知觸發方法,為機械振動無線傳感器網絡提供了一種不依賴時鐘、信標與節點間通信同步的路徑感知同步觸發方法。
本文采用以ARM(advanced RISC machine)架構為核心輔以恒流源驅動、信號選擇、濾波、信號差分、信號采集、數據存儲等電路的前端采集節點設計。在傳輸方面,采用以高效傳輸為特點的無線傳輸IEEE802.11協議模塊一與以自組網為特點的無線傳輸IEEE802.15.4協議模塊二[13],兩種通信模式復用采集前端,以平衡傳輸、組網與同步等需求。模塊一主要負責伴隨網絡的組建與同步觸發,模塊二主要負責主網絡的組建。
在采集節點內部,數據主要通過USART(universal synchronous and asynchronous receiver/transmitter)、SPI(serial peripheral interface)與SDIO(secure digital input and output)等協議進行有線傳輸。在無線傳輸方面,數據收發分為兩種:一種是通過IEEE802.15.4協議處理器;另一種是通過IEEE802.11協議。采集命令從終端發出,經輔助器、網關、單個或多個路由或直接到達采集節點,采集節點收到命令后通過USART協議將數據轉發至中央處理器,然后開始觸發采集。雙模復用系統整體架構如圖1(a)所示,本文設計的節點如圖1(b)所示。

圖1 雙模復用系統整體架構和雙模復用節點實物圖
實際機械振動測試中存在大單一模式傳輸效率低與組網困難等問題。為解決組網與傳輸等問題,提出雙模伴隨組網方法。雙模伴隨組網節點包括采集節點、路由節點與網關節點,其分別由IEEE802.15.4協議模1與IEEE802.11協議模2組成,兩者可通過有線方式進行拓撲結構信息傳遞。雙模伴隨組網示意圖,如圖2所示。

圖2 雙模伴隨組網
雙模伴隨組網分為兩個步驟:主網絡組建與伴隨網絡組建。主網絡組建時只有模1處理器參與,主組網按照其正常方式組網,主網絡組建完成后在終端分析主網絡拓撲結構,并生成包含模2的SSID(service set identifier)與WPA(Wi-Fi protected access)的伴隨網絡拓撲結構信息。獲得主網絡的地址關系就能獲得主網絡的拓撲信息[14]。當父設備可擁有子設備數量的最大值為Cm,父設備下將路由器作為它的子設備的最大數為Rm,網絡最大深度Lm,在給定網絡深度為d的條件下,父設備可分配給路由器子設備的地址數Cd計算方法如式(1)所示,第n個節點設備的網絡地址如式2所示。
(1)
An=Ap+Cd×Rm+n
(2)
構建Rm= 3,Cm= 8,Lm= 3的簇狀網絡,根據式(1)計算Cd如下所示
C0=1+Cm(Lm-d-1)=1+8×(3-0-1)=17
(3)
C1=1+Cm(Lm-d-1)=1+8×(3-1-1)=9
(4)
C2=1+Cm(Lm-d-1)=1+8×(3-2-1)=1
(5)
C3=1+Cm(Lm-d-1)=1+8×(3-3-1)=-7
(6)
當d為3時,代表該節點為采集節點,不能再進行地址分配,此時,C3=0。接著根據式(2)計算各個節點的短地址如下所示
Addr_0=0
(7)
Addr_1=Addr_0+C0·0+1=0+17×0+1=1
(8)
Addr_2=Addr_1+C1·0+1=1+17×0+1=2
(9)
Addr_01=Addr_0+C0·Rm+n=0+17×2+1=35
(10)
Addr_11=Addr_1+C1·Rm+n=1+9×3+1=29
(11)
Addr_21=Addr_2+C2·Rm+n=2+1×3+1=6
(12)
Addr_22=Addr_2+C2·Rm+n=2+1×3+2=7
(13)
伴隨組網在主網絡組建完成的條件下進行。伴隨組網主要分為兩個步驟:首先,獲取主網絡生成的拓撲結構,將在主網絡組建的拓撲信息發送至主網絡的各個模1上并分析保存,然后將與模1對應的SSID與WPA拓撲信息經有線方式發送至模2。接著,模2分析并設置自身的SSID與WPA。模2自身SSID設置完成后,各級節點開始進行無線連接各自的父節點SSID,其中網關節點無需連接父節點、采集節點無需設置自身SSID。
簇狀網絡是機械振動無線傳感器網絡中常用的網絡拓撲結構,以此分析命令到達采集節點同步的誤差具有典型代表性。同步采集誤差主要發生在采集開始時,由于節點處于異構空間網絡結構中,采集命令到達采集節點時刻不同;此外,在采集過程中溫濕度等環境變化及電磁干擾也會帶來時間與空間抖動,但由于在實際采集中,采集時間一般較短且節點所處的環境相對固定,因此在采集過程中影響較小。
典型簇狀網絡拓撲結構, 如圖3所示。在數據采集時,命令到達各個采集節點時刻不同的主要原因是傳輸路徑時間、數據轉發時間與程序指令執行時間存在差異。傳輸路徑時間是指命令從終端到采集節點在無線傳輸過程中消耗的時間,數據轉發時間是指數據在網關、路由及采集節點間命令轉發的時間,程序指令執行時間是指所有程序指令參與執行的時間。

圖3 典型簇狀網絡拓撲結構
簇狀網絡同步觸發采集時序,如圖4所示。命令從網關節點發出,理論上路徑越短、中間經過路由數量越少的采集節點越先收到命令。采集節點1先于采集節點2在T1時刻收到觸發命令,采集節點2先于采集節點3與采集節點4在T2時刻收到命令,采集節點3與采節點4理論上在T4時刻同時收到觸發命令,但實際應用中,由于指令執行的先后順序會存在細小的誤差。

圖4 簇狀網絡同步時序
路徑感知時間測量的作用在于獲得命令在不同路徑上傳輸所需要的時間,本文提出了基于采集節點計時、終端和輔助器計時的路徑感知時間測量方法。不含輔助器計時測量,如圖5(a)所示;含輔助器測量,如圖5(b)所示。

圖5 采集節點計時測量
當不含輔助器測量時,首先由終端發送第一次測量命令;當采集節點收到第一次測量命令后采集節點開始計時,計時指令執行完成后向終端設備發送第二次測量命令;終端設備收到第二次測量命令后立刻向采集節點發送第三次測量命令;采集節點收到第三次測量命令后立即停止計時,并計算第二次與第三次測量之間的時間差;然后將時間差發送至終端設備,終端收到時間差數據后進行統一處理。其中,第二、第三次為有效測量,在第二、第三次中間需經帶有操作系統的計算機處理多條程序指令,指令數量與節點數量成正比。當執行多條指令時,終端操作系統輪詢會導致指令毫秒級中斷,從而導致發送給各個節點的測量命令時間不連續,降低同步精度。
含輔助器測量時,除需由終端發起一次預測量命令,其余步驟與上述一致。發送正式命令過程不存在操作系統,因此可解決輪詢中斷指令的問題。但該方法以采集節點的處理器為計時基準,一般頻率較低,導致最小時間增量大,難以滿足高精度同步需求。
終端測量過程中,計時與測量命令均由終端設備控制,測量步驟同上述第二、第三次。由于測量命令仍存在多條程序指令,同樣存在操作系統輪詢導致指令毫秒級中斷的問題。輔助器測量只需由終端設備發送一次預測量命令后,測量命令由輔助器控制,其余步驟一致。輔助器在測量中無需任何操作系統干預,不存在指令中斷問題;輔助器還可選擇超高主頻的處理器以降低最小時間增量;且單次測量均為有效測量,可節省測量時間;因此本文采用輔助器測量,終端與輔助器計時測量,如圖6所示。

圖6 終端與輔助器計時測量
在進行輔助器測量時,每條線路需要進行一次路徑感知。由于輔助器不能確定何時發起測量,因此正式測量前需由終端向輔助器發出預測量命令,然后將控制權交給輔助器。測量前,首先為每個采集節點分配一個軟件計時輔助器,然后向各個節點依次發出正式測量命令,并立即開始計時;當各個采集節點收到測量命令后立刻發出反饋命令;輔助器收到各個節點的反饋命令后停止計時,并計算時間差。最后將時間差發送至終端設備進行數據處理。
輔助器測量精度主要取決于時鐘頻率,其最小時間增量Δti計算如式(14)所示,其中Fi為輔助器基準頻率。時鐘頻率較小時路徑感知測量出的時間精度較低,同步觸發精度較低,反之亦然。
(14)
輔助器計時測量可彌補上述方法的不足,且具有超高的同步精度,本文以輔助器計時測量分析測量方法。開始測量前分別將每個節點編號為i;然后終端設備向節點號為i的節點發送測量命令,并立刻計時,記錄初始時間為tsij;采集節點i收到測量命令后立即向終端設備返回測量命令;終端設備收到測量命令,并立即停止計時,并記錄收到測量命令時間為trij。以上步驟為單個節點測量一次的路徑時間,經大量重復測試試驗表明,受時間抖動與空間抖動等影響,每次測量的時間差有較小誤差,為降低誤差,采用多次測量取平均值的方法,每個節點測量的次數均為m。為避免信道競爭,當一個節點m次測量完成后才進行下一個節點的測量。下標:s為發送正式測量命令;r為接收反饋;i為第i個節點;j為第j次測量。
當所有節點的m次測試完成后,通過記錄的數據進行時間補償計算。首先第i個采集節點的第j次路徑感知測量的單程時間Twij,如式(15)所示。然后計算第i個采集節點從第一次到m次測量的平均時間/Twij,如式(16)所示。
(15)
(16)
式中:tcij為采集節點、終端與輔助器的指令執行時間;ttij為數據在路由節點上的中轉時間。
路徑時間最大值求法為:首先設定一個存儲器,存儲器初始值為第一個采集節點的平均值,然后將每個節點的平均時間與存儲器值比較,若大于存儲器的值則交換其值,若小于存儲器值則不交換;重復上述步驟,比較的次數為節點數量,最后一次比較后存儲器的值則為路徑時間最大值Max(Twij)。最大值與每個節點的平均時間相減,即可得到每個節點的單程平均路徑時間補償值Δi,如式(17)所示。
(17)
將式(15)與式(16)代入式(17)可得每個節點的平均路徑時間,如式(18)所示。
(18)
將式(15)~式(18)整理可得式(19),由于每次測量時指令執行時間tcij與中轉ttij相同,因此可以看出,各節點的補償時間只與每個節點測試的次數和路徑時間差有關,如式(20)所示。
(19)
(20)
通過式(19)可計算出每個采集節點應當補償的路徑時間,根據補償時間值可針對對應的采集點依次延時相應的補償時間后發送采集命令。由于目前輔助器一般采用定時器計時,定時器頻率是由輔助器經過多次分頻得到,直接使用定時器頻率計時將導致最小時間增量較大,難以滿足精度要求。針對上述問題,以輔助器主頻為最小計時時間增量,通過運行單指令的方式來進行延時。單指令時間Tc計算如式(21)所示。單指令周期由一個機器周期或n個狀態周期或q個時鐘周期組成,n與q與輔助器的類型有關,當輔助器固定時,n與q為固定值。
(21)
由式(21)可看出,當輔助器主頻率越大時,單指令執行時間越短,延時時間增量越小,同步觸發精度越高。輔助器長時間運行單指令時將導致輔助器異常,因此還需解決長時間延時的問題。
在開始測量前,首先獲取輔助器基準頻率,每條指令執行的時間計算公式如式(21),該指令時間一般可為到達微納秒級。因此可采用補償時間除以單指令時間的方式,獲得需要執行單指令時間的次數N,其計算如式(22)所示。
(22)
當N值較大時,單指令程序長期占用處理器操作系統時間片較長會觸發“看門狗”,且占用運行內存較大引起系統棧內存溢出,從而引發系統故障,無法獲得精確延時。因此在單指令時間基礎上進行封裝處理,即將單指令執行次數N拆分成執行M個時間段,執行K次。每執行K次單指令后清理一次棧內存,可解決輔助器棧內存問題。
Ni=Mi·Ki
(23)
將式(22)代入式(23)得
Δi=Mi·Ki·Tci
(24)
將式(21)代入式(24)得
(25)
將式(20)代入式(25)得
(26)
由式(26)可以看出,當每個節點路徑感知時間測量結束后,時間補償為固定值,即各個節點用于延時的單指令執行次數MK固定。當封裝的時間段M較大、K較小時,容易導致輔助器棧資源占用較多;當封裝的時間段M較小、K較大時,將頻繁清除棧內存,占用處理器時間。因此在實際應用中,需根據不同的輔助器基準頻率平衡M與K的取值。通過上述延時時間封裝方法,可有效解決普通定時器精度較低的問題。
進行開始采集時,首先每個節點在網絡組建完成的基礎上進行m次路徑感知,獲得各個節點的路徑時間。當全部節點測量完成后,經輔助器分析處理得到各個節點的補償時間。然后根據各個節點的延時補償值進行延時后,依次發送同步采集觸發命令。由于各個節點的路徑時間不同,經過補償延時后,采集命令最終到達各個采集節點的時間在同一時刻,最終可同步觸發采集。
為降低測量誤差,采用多次測量路徑感知時間取平均值的方法。為確定先行測量次數m的具體值,對每個節點進行了多次測量。每個節點的平均路徑時間與補償時間,如圖7所示。

圖7 路徑感知測量
可以看出,隨著基礎測試次數的增加,同步觸發平均路徑時間與補償時間均先大致趨于平穩,后在1 000次時有所增加。在基礎測試次數為500次左右時,所有節點的平均路徑時間與補償時間綜合來看處于較低值。因此,路徑時間測量次數在500次左右較為適合。
為比較實際工況下路徑感知同步觸發精度,在無同步方法和有本文提出的路徑感知同步方法下進行一組隨機測試,測試位置分別齒輪箱的X、Y方向,測試環境如圖8所示。輔助器向各個節點發送正式采集命令后,用邏輯分析儀捕捉各個采集節點數模轉換器上引腳的時序,分別測試有無同步方法下的誤差。

圖8 同步觸發精度應用平臺
無同步方法下采集的誤差,如圖9(a)所示。4個采集節點間命令觸發的最大時間誤差約為節點1與節點3的49.632 649 ms,最小誤差為節點3與節點4的10.001 258 ms。路徑感知同步觸發采集方法下的同步誤差,如圖9(b)所示。4個采集節點間命令觸發的最大時間誤差約為節點1與節點3的56.139 μs,最小誤差為節點3與節點4的11.300 μs。

圖9 無同步方法和含同步方法
為避免隨機測量帶來的偶然性,使用上述方法重復測量50次,并統計最大與最小誤差,統計結果繪制如圖10所示??梢钥闯觯畲笸秸`差在50~60 μs,最小同步誤差在10~16 μs,滿足機械振動高精度同步觸發要求。

圖10 多節點同步誤差測試統計
為解決無線傳感器機械振動信號采集時依賴信標時鐘同步觸發及精度問題,提出了簇狀網絡下的路徑感知時間補償同步觸發方法。通過試驗表明在:路徑感知同步觸發方法下的多跳同步精度最大同步誤差在50~60 μs,最小同步誤差在10~16 μs。相對于無同步方法提高了800多倍,相對于信標時鐘同步觸發300 μs提高了約6倍~10倍,最小同步誤差相對于FTSP和TPSN的精度提高了約6倍,結果表明路徑感知時間同步觸發方法具有良好的效果。