基于無線傳感器網(wǎng)絡的橋梁監(jiān)測系統(tǒng)研究
5.1 CTP協(xié)議的實現(xiàn)
CTP協(xié)議是基于樹的多跳協(xié)議。把網(wǎng)絡中的節(jié)點抽象為樹,每棵樹有一個根節(jié)點, 負責收集這棵樹所有節(jié)點的信息。網(wǎng)絡中節(jié)點通過路由梯度值(ETX)逐跳地選擇路由, 直至到達根節(jié)點。根節(jié)點的ETX為0, 每個子節(jié)點的ETX值等于父節(jié)點的ETX值加上該節(jié)點到它父節(jié)點的路徑ETX值。因此, ETX值是沿著往根節(jié)點的方向遞減的, CTP選擇路徑ETX值最小的路徑作為路由。
CTP的實現(xiàn)是基于下層鏈路估計結果的。鏈路估計會維護一個鄰節(jié)點表, 表中存儲了每個鄰節(jié)點的路徑ETX 值。CTP協(xié)議中的CtpRoutingEngine 組件實現(xiàn)了路由的選擇, 它根據(jù)鄰節(jié)點的ETX值為數(shù)據(jù)傳輸選擇下一個路由。另一個關鍵的組件函數(shù)CtpForwardingEngine, 該組件主要是維護一個消息發(fā)送隊列, 往下層發(fā)送本地產生的或者轉發(fā)過來的數(shù)據(jù)包; 該組件還能夠檢測重復發(fā)送的數(shù)據(jù)包, 以抑制重復發(fā)包。
實現(xiàn)的四個關鍵函數(shù)是: 數(shù)據(jù)包接收(SubReceive.receive())、數(shù)據(jù)包轉發(fā)(forward())、包傳輸(sendTask())和發(fā)送完成事件(SubSend.sendDone())。
函數(shù)SubReceive.receive ()決定是否要轉發(fā)包。通過維護一個最近收到的包緩存來檢查是否有重復包。如果判定一個包不是重復包, 則調用forward()函數(shù)。
forward()函數(shù)封裝好要發(fā)送的包。這個函數(shù)同時檢查是否有回環(huán)。發(fā)送時將包放到發(fā)送隊列中去, 若隊列滿了, 就丟棄該包, 并把C位置1。如果隊列為空, 則立即post 發(fā)送任務。
sendTask()檢查發(fā)送隊列頭部的數(shù)據(jù)包, 封裝好后提交給AM層。發(fā)送完成后, sendDone()函數(shù)檢查發(fā)送的結果。如果該數(shù)據(jù)包已經(jīng)被確認過了, 則將該包從隊列中取出。如果是本地的包, 發(fā)送事件通知給上層的客戶。如果是轉發(fā)來的包, 則將它放到轉發(fā)消息池中。如果隊列中還有包的話, 就啟動一個隨機時鐘, 重新post發(fā)送任務。
5.2 LEEP協(xié)議的實現(xiàn)
LEEP 是一種鏈路估計交換協(xié)議, 主要是用來計算某節(jié)點與鄰節(jié)點之間的雙向鏈路質量。節(jié)點A→B的鏈路質量是指B成功接收到A發(fā)送的數(shù)據(jù)包的概率。節(jié)點(A, B)間的雙向鏈路質量是A→B的鏈路質量(in-bound 鏈路質量)與B→A的鏈路質量(out-bound 鏈路質量) 的乘積。
6 結束語
基于無線傳感器網(wǎng)絡的橋梁結構健康監(jiān)測系統(tǒng),我們對傳感器節(jié)點的設計和支持系統(tǒng)運行的嵌入式操作系統(tǒng)TinyOS的移植問題進行了研究。還有兩個問題需要進一步深入研究,一個是傳感器網(wǎng)絡的休眠節(jié)能技術需要解決網(wǎng)絡各節(jié)點的同步問題;第二個問題是建立橋梁結構健康*估專家系統(tǒng),能夠根據(jù)傳感器網(wǎng)絡匯總的大量橋梁結構信息作出準確的分析判斷,從而實現(xiàn)事故預報警,預防突發(fā)性災難,確保橋梁安全。
光纖傳感器相關文章:光纖傳感器原理
評論