付 豪, 湯寶平, 黃 藝, 鄧 蕾, 何 灝
(重慶大學(xué) 機械傳動國家重點實驗室,重慶 400030)
同步觸發(fā)采集是無線傳感器網(wǎng)絡(luò)在機械振動監(jiān)測中的關(guān)鍵問題。在進行機械振動無線傳感器網(wǎng)絡(luò)信號采集時,為保證信號分析結(jié)果的準(zhǔn)確性需多節(jié)點同步觸發(fā)采集,但由于節(jié)點分散,難以保證各個節(jié)點同步測量[1-3]。目前同步采集主要采用信標(biāo)同步[4]、時鐘同步[5]或采集節(jié)點間通信[6]等方法。信標(biāo)同步或時鐘同步需頻繁獲取并發(fā)送信標(biāo)、時間戳等,易增加節(jié)點功耗,采集節(jié)點間通信難以在距離較遠時實現(xiàn)同步信息傳輸[7]。此外,目前大多數(shù)節(jié)點均采用單控制器與單傳輸器的設(shè)計模式,其功能簡單,難以平衡傳輸速度、傳輸距離、節(jié)點組網(wǎng)、同步采集等需求。
目前,信標(biāo)或時鐘同步采集方法主要有參考廣播同步算法[8]、傳感器網(wǎng)絡(luò)時間同步協(xié)議 (timing-sync protocol for sensor networks, TPSN)[9]、延遲測量時間同步協(xié)議[10]、動態(tài)傳感器網(wǎng)絡(luò)時間同步協(xié)議 (flooding time synchronization protocol,FTSP)及其改進算法。目前上述方法已在一些領(lǐng)域得到了廣泛的應(yīng)用,但在機械振動測試方面同步觸發(fā)精度相對較低,如FTSP和TPSN最小同步精度分別為67 μs[11]和50 μs[12]。
本文在設(shè)計雙模復(fù)用基礎(chǔ)上,構(gòu)建伴隨組網(wǎng)方法,提出路徑感知觸發(fā)方法,為機械振動無線傳感器網(wǎng)絡(luò)提供了一種不依賴時鐘、信標(biāo)與節(jié)點間通信同步的路徑感知同步觸發(fā)方法。
本文采用以ARM(advanced RISC machine)架構(gòu)為核心輔以恒流源驅(qū)動、信號選擇、濾波、信號差分、信號采集、數(shù)據(jù)存儲等電路的前端采集節(jié)點設(shè)計。在傳輸方面,采用以高效傳輸為特點的無線傳輸IEEE802.11協(xié)議模塊一與以自組網(wǎng)為特點的無線傳輸IEEE802.15.4協(xié)議模塊二[13],兩種通信模式復(fù)用采集前端,以平衡傳輸、組網(wǎng)與同步等需求。模塊一主要負責(zé)伴隨網(wǎng)絡(luò)的組建與同步觸發(fā),模塊二主要負責(zé)主網(wǎng)絡(luò)的組建。
在采集節(jié)點內(nèi)部,數(shù)據(jù)主要通過USART(universal synchronous and asynchronous receiver/transmitter)、SPI(serial peripheral interface)與SDIO(secure digital input and output)等協(xié)議進行有線傳輸。在無線傳輸方面,數(shù)據(jù)收發(fā)分為兩種:一種是通過IEEE802.15.4協(xié)議處理器;另一種是通過IEEE802.11協(xié)議。采集命令從終端發(fā)出,經(jīng)輔助器、網(wǎng)關(guān)、單個或多個路由或直接到達采集節(jié)點,采集節(jié)點收到命令后通過USART協(xié)議將數(shù)據(jù)轉(zhuǎn)發(fā)至中央處理器,然后開始觸發(fā)采集。雙模復(fù)用系統(tǒng)整體架構(gòu)如圖1(a)所示,本文設(shè)計的節(jié)點如圖1(b)所示。
圖1 雙模復(fù)用系統(tǒng)整體架構(gòu)和雙模復(fù)用節(jié)點實物圖
實際機械振動測試中存在大單一模式傳輸效率低與組網(wǎng)困難等問題。為解決組網(wǎng)與傳輸?shù)葐栴},提出雙模伴隨組網(wǎng)方法。雙模伴隨組網(wǎng)節(jié)點包括采集節(jié)點、路由節(jié)點與網(wǎng)關(guān)節(jié)點,其分別由IEEE802.15.4協(xié)議模1與IEEE802.11協(xié)議模2組成,兩者可通過有線方式進行拓撲結(jié)構(gòu)信息傳遞。雙模伴隨組網(wǎng)示意圖,如圖2所示。
圖2 雙模伴隨組網(wǎng)
雙模伴隨組網(wǎng)分為兩個步驟:主網(wǎng)絡(luò)組建與伴隨網(wǎng)絡(luò)組建。主網(wǎng)絡(luò)組建時只有模1處理器參與,主組網(wǎng)按照其正常方式組網(wǎng),主網(wǎng)絡(luò)組建完成后在終端分析主網(wǎng)絡(luò)拓撲結(jié)構(gòu),并生成包含模2的SSID(service set identifier)與WPA(Wi-Fi protected access)的伴隨網(wǎng)絡(luò)拓撲結(jié)構(gòu)信息。獲得主網(wǎng)絡(luò)的地址關(guān)系就能獲得主網(wǎng)絡(luò)的拓撲信息[14]。當(dāng)父設(shè)備可擁有子設(shè)備數(shù)量的最大值為Cm,父設(shè)備下將路由器作為它的子設(shè)備的最大數(shù)為Rm,網(wǎng)絡(luò)最大深度Lm,在給定網(wǎng)絡(luò)深度為d的條件下,父設(shè)備可分配給路由器子設(shè)備的地址數(shù)Cd計算方法如式(1)所示,第n個節(jié)點設(shè)備的網(wǎng)絡(luò)地址如式2所示。
(1)
An=Ap+Cd×Rm+n
(2)
構(gòu)建Rm= 3,Cm= 8,Lm= 3的簇狀網(wǎng)絡(luò),根據(jù)式(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āng)d為3時,代表該節(jié)點為采集節(jié)點,不能再進行地址分配,此時,C3=0。接著根據(jù)式(2)計算各個節(jié)點的短地址如下所示
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)
伴隨組網(wǎng)在主網(wǎng)絡(luò)組建完成的條件下進行。伴隨組網(wǎng)主要分為兩個步驟:首先,獲取主網(wǎng)絡(luò)生成的拓撲結(jié)構(gòu),將在主網(wǎng)絡(luò)組建的拓撲信息發(fā)送至主網(wǎng)絡(luò)的各個模1上并分析保存,然后將與模1對應(yīng)的SSID與WPA拓撲信息經(jīng)有線方式發(fā)送至模2。接著,模2分析并設(shè)置自身的SSID與WPA。模2自身SSID設(shè)置完成后,各級節(jié)點開始進行無線連接各自的父節(jié)點SSID,其中網(wǎng)關(guān)節(jié)點無需連接父節(jié)點、采集節(jié)點無需設(shè)置自身SSID。
簇狀網(wǎng)絡(luò)是機械振動無線傳感器網(wǎng)絡(luò)中常用的網(wǎng)絡(luò)拓撲結(jié)構(gòu),以此分析命令到達采集節(jié)點同步的誤差具有典型代表性。同步采集誤差主要發(fā)生在采集開始時,由于節(jié)點處于異構(gòu)空間網(wǎng)絡(luò)結(jié)構(gòu)中,采集命令到達采集節(jié)點時刻不同;此外,在采集過程中溫濕度等環(huán)境變化及電磁干擾也會帶來時間與空間抖動,但由于在實際采集中,采集時間一般較短且節(jié)點所處的環(huán)境相對固定,因此在采集過程中影響較小。
典型簇狀網(wǎng)絡(luò)拓撲結(jié)構(gòu), 如圖3所示。在數(shù)據(jù)采集時,命令到達各個采集節(jié)點時刻不同的主要原因是傳輸路徑時間、數(shù)據(jù)轉(zhuǎn)發(fā)時間與程序指令執(zhí)行時間存在差異。傳輸路徑時間是指命令從終端到采集節(jié)點在無線傳輸過程中消耗的時間,數(shù)據(jù)轉(zhuǎn)發(fā)時間是指數(shù)據(jù)在網(wǎng)關(guān)、路由及采集節(jié)點間命令轉(zhuǎn)發(fā)的時間,程序指令執(zhí)行時間是指所有程序指令參與執(zhí)行的時間。
圖3 典型簇狀網(wǎng)絡(luò)拓撲結(jié)構(gòu)
簇狀網(wǎng)絡(luò)同步觸發(fā)采集時序,如圖4所示。命令從網(wǎng)關(guān)節(jié)點發(fā)出,理論上路徑越短、中間經(jīng)過路由數(shù)量越少的采集節(jié)點越先收到命令。采集節(jié)點1先于采集節(jié)點2在T1時刻收到觸發(fā)命令,采集節(jié)點2先于采集節(jié)點3與采集節(jié)點4在T2時刻收到命令,采集節(jié)點3與采節(jié)點4理論上在T4時刻同時收到觸發(fā)命令,但實際應(yīng)用中,由于指令執(zhí)行的先后順序會存在細小的誤差。
圖4 簇狀網(wǎng)絡(luò)同步時序
路徑感知時間測量的作用在于獲得命令在不同路徑上傳輸所需要的時間,本文提出了基于采集節(jié)點計時、終端和輔助器計時的路徑感知時間測量方法。不含輔助器計時測量,如圖5(a)所示;含輔助器測量,如圖5(b)所示。
圖5 采集節(jié)點計時測量
當(dāng)不含輔助器測量時,首先由終端發(fā)送第一次測量命令;當(dāng)采集節(jié)點收到第一次測量命令后采集節(jié)點開始計時,計時指令執(zhí)行完成后向終端設(shè)備發(fā)送第二次測量命令;終端設(shè)備收到第二次測量命令后立刻向采集節(jié)點發(fā)送第三次測量命令;采集節(jié)點收到第三次測量命令后立即停止計時,并計算第二次與第三次測量之間的時間差;然后將時間差發(fā)送至終端設(shè)備,終端收到時間差數(shù)據(jù)后進行統(tǒng)一處理。其中,第二、第三次為有效測量,在第二、第三次中間需經(jīng)帶有操作系統(tǒng)的計算機處理多條程序指令,指令數(shù)量與節(jié)點數(shù)量成正比。當(dāng)執(zhí)行多條指令時,終端操作系統(tǒng)輪詢會導(dǎo)致指令毫秒級中斷,從而導(dǎo)致發(fā)送給各個節(jié)點的測量命令時間不連續(xù),降低同步精度。
含輔助器測量時,除需由終端發(fā)起一次預(yù)測量命令,其余步驟與上述一致。發(fā)送正式命令過程不存在操作系統(tǒng),因此可解決輪詢中斷指令的問題。但該方法以采集節(jié)點的處理器為計時基準(zhǔn),一般頻率較低,導(dǎo)致最小時間增量大,難以滿足高精度同步需求。
終端測量過程中,計時與測量命令均由終端設(shè)備控制,測量步驟同上述第二、第三次。由于測量命令仍存在多條程序指令,同樣存在操作系統(tǒng)輪詢導(dǎo)致指令毫秒級中斷的問題。輔助器測量只需由終端設(shè)備發(fā)送一次預(yù)測量命令后,測量命令由輔助器控制,其余步驟一致。輔助器在測量中無需任何操作系統(tǒng)干預(yù),不存在指令中斷問題;輔助器還可選擇超高主頻的處理器以降低最小時間增量;且單次測量均為有效測量,可節(jié)省測量時間;因此本文采用輔助器測量,終端與輔助器計時測量,如圖6所示。
圖6 終端與輔助器計時測量
在進行輔助器測量時,每條線路需要進行一次路徑感知。由于輔助器不能確定何時發(fā)起測量,因此正式測量前需由終端向輔助器發(fā)出預(yù)測量命令,然后將控制權(quán)交給輔助器。測量前,首先為每個采集節(jié)點分配一個軟件計時輔助器,然后向各個節(jié)點依次發(fā)出正式測量命令,并立即開始計時;當(dāng)各個采集節(jié)點收到測量命令后立刻發(fā)出反饋命令;輔助器收到各個節(jié)點的反饋命令后停止計時,并計算時間差。最后將時間差發(fā)送至終端設(shè)備進行數(shù)據(jù)處理。
輔助器測量精度主要取決于時鐘頻率,其最小時間增量Δti計算如式(14)所示,其中Fi為輔助器基準(zhǔn)頻率。時鐘頻率較小時路徑感知測量出的時間精度較低,同步觸發(fā)精度較低,反之亦然。
(14)
輔助器計時測量可彌補上述方法的不足,且具有超高的同步精度,本文以輔助器計時測量分析測量方法。開始測量前分別將每個節(jié)點編號為i;然后終端設(shè)備向節(jié)點號為i的節(jié)點發(fā)送測量命令,并立刻計時,記錄初始時間為tsij;采集節(jié)點i收到測量命令后立即向終端設(shè)備返回測量命令;終端設(shè)備收到測量命令,并立即停止計時,并記錄收到測量命令時間為trij。以上步驟為單個節(jié)點測量一次的路徑時間,經(jīng)大量重復(fù)測試試驗表明,受時間抖動與空間抖動等影響,每次測量的時間差有較小誤差,為降低誤差,采用多次測量取平均值的方法,每個節(jié)點測量的次數(shù)均為m。為避免信道競爭,當(dāng)一個節(jié)點m次測量完成后才進行下一個節(jié)點的測量。下標(biāo):s為發(fā)送正式測量命令;r為接收反饋;i為第i個節(jié)點;j為第j次測量。
當(dāng)所有節(jié)點的m次測試完成后,通過記錄的數(shù)據(jù)進行時間補償計算。首先第i個采集節(jié)點的第j次路徑感知測量的單程時間Twij,如式(15)所示。然后計算第i個采集節(jié)點從第一次到m次測量的平均時間/Twij,如式(16)所示。
(15)
(16)
式中:tcij為采集節(jié)點、終端與輔助器的指令執(zhí)行時間;ttij為數(shù)據(jù)在路由節(jié)點上的中轉(zhuǎn)時間。
路徑時間最大值求法為:首先設(shè)定一個存儲器,存儲器初始值為第一個采集節(jié)點的平均值,然后將每個節(jié)點的平均時間與存儲器值比較,若大于存儲器的值則交換其值,若小于存儲器值則不交換;重復(fù)上述步驟,比較的次數(shù)為節(jié)點數(shù)量,最后一次比較后存儲器的值則為路徑時間最大值Max(Twij)。最大值與每個節(jié)點的平均時間相減,即可得到每個節(jié)點的單程平均路徑時間補償值Δi,如式(17)所示。
(17)
將式(15)與式(16)代入式(17)可得每個節(jié)點的平均路徑時間,如式(18)所示。
(18)
將式(15)~式(18)整理可得式(19),由于每次測量時指令執(zhí)行時間tcij與中轉(zhuǎn)ttij相同,因此可以看出,各節(jié)點的補償時間只與每個節(jié)點測試的次數(shù)和路徑時間差有關(guān),如式(20)所示。
(19)
(20)
通過式(19)可計算出每個采集節(jié)點應(yīng)當(dāng)補償?shù)穆窂綍r間,根據(jù)補償時間值可針對對應(yīng)的采集點依次延時相應(yīng)的補償時間后發(fā)送采集命令。由于目前輔助器一般采用定時器計時,定時器頻率是由輔助器經(jīng)過多次分頻得到,直接使用定時器頻率計時將導(dǎo)致最小時間增量較大,難以滿足精度要求。針對上述問題,以輔助器主頻為最小計時時間增量,通過運行單指令的方式來進行延時。單指令時間Tc計算如式(21)所示。單指令周期由一個機器周期或n個狀態(tài)周期或q個時鐘周期組成,n與q與輔助器的類型有關(guān),當(dāng)輔助器固定時,n與q為固定值。
(21)
由式(21)可看出,當(dāng)輔助器主頻率越大時,單指令執(zhí)行時間越短,延時時間增量越小,同步觸發(fā)精度越高。輔助器長時間運行單指令時將導(dǎo)致輔助器異常,因此還需解決長時間延時的問題。
在開始測量前,首先獲取輔助器基準(zhǔn)頻率,每條指令執(zhí)行的時間計算公式如式(21),該指令時間一般可為到達微納秒級。因此可采用補償時間除以單指令時間的方式,獲得需要執(zhí)行單指令時間的次數(shù)N,其計算如式(22)所示。
(22)
當(dāng)N值較大時,單指令程序長期占用處理器操作系統(tǒng)時間片較長會觸發(fā)“看門狗”,且占用運行內(nèi)存較大引起系統(tǒng)棧內(nèi)存溢出,從而引發(fā)系統(tǒng)故障,無法獲得精確延時。因此在單指令時間基礎(chǔ)上進行封裝處理,即將單指令執(zhí)行次數(shù)N拆分成執(zhí)行M個時間段,執(zhí)行K次。每執(zhí)行K次單指令后清理一次棧內(nèi)存,可解決輔助器棧內(nèi)存問題。
Ni=Mi·Ki
(23)
將式(22)代入式(23)得
Δi=Mi·Ki·Tci
(24)
將式(21)代入式(24)得
(25)
將式(20)代入式(25)得
(26)
由式(26)可以看出,當(dāng)每個節(jié)點路徑感知時間測量結(jié)束后,時間補償為固定值,即各個節(jié)點用于延時的單指令執(zhí)行次數(shù)MK固定。當(dāng)封裝的時間段M較大、K較小時,容易導(dǎo)致輔助器棧資源占用較多;當(dāng)封裝的時間段M較小、K較大時,將頻繁清除棧內(nèi)存,占用處理器時間。因此在實際應(yīng)用中,需根據(jù)不同的輔助器基準(zhǔn)頻率平衡M與K的取值。通過上述延時時間封裝方法,可有效解決普通定時器精度較低的問題。
進行開始采集時,首先每個節(jié)點在網(wǎng)絡(luò)組建完成的基礎(chǔ)上進行m次路徑感知,獲得各個節(jié)點的路徑時間。當(dāng)全部節(jié)點測量完成后,經(jīng)輔助器分析處理得到各個節(jié)點的補償時間。然后根據(jù)各個節(jié)點的延時補償值進行延時后,依次發(fā)送同步采集觸發(fā)命令。由于各個節(jié)點的路徑時間不同,經(jīng)過補償延時后,采集命令最終到達各個采集節(jié)點的時間在同一時刻,最終可同步觸發(fā)采集。
為降低測量誤差,采用多次測量路徑感知時間取平均值的方法。為確定先行測量次數(shù)m的具體值,對每個節(jié)點進行了多次測量。每個節(jié)點的平均路徑時間與補償時間,如圖7所示。
圖7 路徑感知測量
可以看出,隨著基礎(chǔ)測試次數(shù)的增加,同步觸發(fā)平均路徑時間與補償時間均先大致趨于平穩(wěn),后在1 000次時有所增加。在基礎(chǔ)測試次數(shù)為500次左右時,所有節(jié)點的平均路徑時間與補償時間綜合來看處于較低值。因此,路徑時間測量次數(shù)在500次左右較為適合。
為比較實際工況下路徑感知同步觸發(fā)精度,在無同步方法和有本文提出的路徑感知同步方法下進行一組隨機測試,測試位置分別齒輪箱的X、Y方向,測試環(huán)境如圖8所示。輔助器向各個節(jié)點發(fā)送正式采集命令后,用邏輯分析儀捕捉各個采集節(jié)點數(shù)模轉(zhuǎn)換器上引腳的時序,分別測試有無同步方法下的誤差。
圖8 同步觸發(fā)精度應(yīng)用平臺
無同步方法下采集的誤差,如圖9(a)所示。4個采集節(jié)點間命令觸發(fā)的最大時間誤差約為節(jié)點1與節(jié)點3的49.632 649 ms,最小誤差為節(jié)點3與節(jié)點4的10.001 258 ms。路徑感知同步觸發(fā)采集方法下的同步誤差,如圖9(b)所示。4個采集節(jié)點間命令觸發(fā)的最大時間誤差約為節(jié)點1與節(jié)點3的56.139 μs,最小誤差為節(jié)點3與節(jié)點4的11.300 μs。
圖9 無同步方法和含同步方法
為避免隨機測量帶來的偶然性,使用上述方法重復(fù)測量50次,并統(tǒng)計最大與最小誤差,統(tǒng)計結(jié)果繪制如圖10所示??梢钥闯?,最大同步誤差在50~60 μs,最小同步誤差在10~16 μs,滿足機械振動高精度同步觸發(fā)要求。
圖10 多節(jié)點同步誤差測試統(tǒng)計
為解決無線傳感器機械振動信號采集時依賴信標(biāo)時鐘同步觸發(fā)及精度問題,提出了簇狀網(wǎng)絡(luò)下的路徑感知時間補償同步觸發(fā)方法。通過試驗表明在:路徑感知同步觸發(fā)方法下的多跳同步精度最大同步誤差在50~60 μs,最小同步誤差在10~16 μs。相對于無同步方法提高了800多倍,相對于信標(biāo)時鐘同步觸發(fā)300 μs提高了約6倍~10倍,最小同步誤差相對于FTSP和TPSN的精度提高了約6倍,結(jié)果表明路徑感知時間同步觸發(fā)方法具有良好的效果。