?

基于802.15.4協議的多機器人無線通信系統的設計

2010-05-05 02:39臧申俊
微型電腦應用 2010年6期
關鍵詞:網絡層物理層字節

臧申俊

0 引言

RoboNet的軟件系統采用的系統架構如圖1所示:

圖1 系統架構圖

RoboNet系統硬件采用了Chipcon公司(現已被TI公司收購)的CC2430[1]方案。RoboNet的使用者(機器人系統[2][3])通過串口向交互層發送命令,交互層解析命令如果是要發送數據則傳給網絡層,如果是設置或查詢系統參數,則CC2430單片機直接做相應處理。網絡層的任務是為交互層傳來的數據選擇合適的路由并加上網絡頭,然后將數據包傳給介質訪問控制層(Medium Access Control)MAC層。在MAC層,系統按照地址格式添加頭部,并調用物理層進行發送。物理層直接調用硬件的射頻模塊,把數據調制成無線電波發送出去。在另一個方向,系統接收到的數據沿著相反的方向,從物理層到MAC層再到網絡層,最后到交互層傳給使用者機器人系統。

1 物理層和MAC層

1.1 RoboNet物理層設計

IEEE802.15.4標準定義的物理層幀格式[4]如圖2所示。物理幀第一個字段是4個字節的前導碼,用來進行幀同步。幀起始分隔符(Start-of-Frame Delimiter,SFD)字段長度為一個字節,其值固定為0xA7,標識一個物理幀的開始。幀長度(frame length)由一個字節的低7位表示,其值就是物理幀負載的長度,因此物理幀負載的長度不能超過127個字節。物理幀的負載長度可變,稱之為物理服務數據單元(PHY Service Data Unit,PSDU),用來承載MAC幀(5個字節的確認幀和8到127字節變長的其它幀)。

圖2 802.15.4協議物理層幀格式

物理層的主體是有限狀態機phy_FSM(),如圖3所示。RoboNet系統初始化物理層狀態為空閉狀態IDLE。當MAC層想要發送數據并且物理層狀態為IDLE時,上層需要先把物理層相關參數設置好,然后把物理層狀態切換為TXDATA。如果物理層的射頻協處理器已經收到數據,并開始發送數據,則把物理層切換到TXWAIT狀態。否則把物理層狀態切換到IDLE,結束此次發送

圖3 物理層狀態機

1.2 MAC層設計

對于RoboNet應用的多機器人系統來說,由于機器人節點之間是互相平等的,關聯機制和信標機制起不到有效的作用,因而在RoboNet系統中,只使用了數據幀和確認幀。MAC層幀格式[4]如圖4所示。

圖4 RoboNet使用的MAC層幀格式

MAC層的主要邏輯是mac_FSM()函數。MAC層先調用下層狀態機phy_FSM()使其保持運轉,然后檢查本層是否正在發送數據,如果是則等待數據發送完畢,最后進入MAC層的狀態機,其狀態切換如圖5所示。

圖5 RoboNet MAC層狀態轉換圖

2 網絡層和串口交互層

RoboNet屬于多跳無線自組網,無線自組網起源于軍事應用,它是20世紀70年代美國國防部高等研究計劃局(Defence Advanced Research Projects Agency,DARPA)資助研究的在戰場環境下采用分組無線網進行數據通信(Packet Radio Net,PRNET)項目中產生的一種新型的網絡架構技術[5]。

2.1 網絡層設計

網絡層的功能是為節點提供路由功能,是多跳移動無線自組織網絡的核心部分。AODV[6]和DSR[6]都是可用于移動多機器人網絡的優秀的路由協議。DSR雖然需要更長的網絡頭來保存路徑,但它在高移動性的場合下比AODV對發送包的開銷要小。RoboNet選擇DSR作為路由協議。

圖6 RoboNet網絡層頭部結構

MAC層的負載(MPDU)包括網絡頭部和網絡負載兩部分。其中網絡頭部為路由提供信息選項,其格式如圖6所示。

表1 網絡頭部分類型

首先是一個字節的類型位,它表示這個包的類型,一共分四種:路由請求(ROUTE_REQ)、路由回復(ROUTE_REPLY)、路由錯誤(ROUTE_ERROR)、路由數據(ROUTE_DATA),具體數值見表1。

第二個字節有兩個作用:在路由請求時,它表示這個請求的序列號,是為了避免對重復的請求進行處理;在其它類型時,它表示跳數信息。第三、第四個字節是表示這個包的網絡層的目標地址,以低有效字節順序存放。接下來第五個字節也是個復用類型的域:在數據是廣播時它表示這個廣播的標識符,是為了避免對收到過的廣播重新發送;而在其它情況下,它表示收到的這個節點和源節點之間的跳數。選項的最后是由常量MAX_ROUTE_LEN定義的16位地址數組,它表示了網絡層包的傳播路徑,是源路由協議的直接體現。

網絡層不再像物理層和MAC層一樣采用狀態機設計,因為網絡層既要處理包的發送,又要處理包的接收,使用狀態機會帶來巨大的復雜度,并且其并行效果也不會明顯。因此網絡層只提供了一個叫nwk_main()的函數供上層不斷調用。它的流程如圖7所示,只做了兩件事:檢查是MAC層是否收到網絡包,并調用函數進行處理;檢查發送隊列里是否有包在等待,并調用相應函數進行處理。這是種串行處理方式,由于MAC層接收到的數據和發送隊列里的數據都采用了數組來緩沖,只要它們的隊列不溢出,就不會對協議棧的性能造成影響。

圖7 nwk_main流程圖

圖8 網絡層待發數據緩沖區

在RoboNet系統中,本節點要發送的數據都存放在一個叫nwk_send_queue的緩沖區里。它是一個先進先出循環隊列,如圖8所示。q_tail是最先存進來的緩沖區項的索引,q_tail是下一個空閑的緩沖區項的索引,當上一層有數據要發送時會往這個索引指向的地方存。另外還有兩個布爾變量q_full和q_empty來表示發送緩沖區是否為空和是否為滿。

當收到路由請求包時整個流程如圖9所示。首先檢查之前是否已經收到過這個請求包,如果收到過那就沒有必要再進行處理了。然后判斷這個請求的目標節點是否是當前節點。如果是,則這個請求到達了終點,當前節點需要返回一個路由回復。路由的回復直接在收到的路由請求的網絡頭部里改,不需要再重新分配一個網絡頭,即方便又節約了空間。最后一種情況是當前節點既不是目標節點,也沒有到目標節點的路由。這時當前節點需要轉發這個路由請求。

路由回復發往發起路由請求的那個節點,中間節點收到路由回復包首先判斷自身是否為源節點,如果是則通過路由回復包中的地址信息更新自身的路由緩存,并不再轉發路由回復包。如果自身不是源節點則在更新完自身緩存后還要繼續轉發這個路由回復包。

路由錯誤包的目的是節點在轉發數據時,發現原有路徑不可達時,向數據發起節點報告路由失效。網絡層對收到路由錯誤包的處理和收到路由回復包的處理十分類似,首先判斷接收到路由錯誤包的節點是否為源節點,如果是則根據路由錯誤包中的信息刪除自身緩存中已經失效的路由,并不再轉發該路由錯誤包。如果自身不是源節點則在刪除完自身緩存中無效的路由信息后還要繼續轉發這個路由錯誤包。

數據包的接收和發送是通信的目的所在,整個流程如圖10所示。首先對于廣播的數據包需要特殊處理,先判斷是否需要丟棄。如果存在下列三種情況之一:一本節點已收到過該廣播數據包;二該廣播數據包是自身發出的;三該廣播數據包的生存時間為零,則丟棄該廣播數據包。否則繼續廣播該數據包。如果收到的不是廣播數據包,則判斷這個包的目標地址是不是當前節點。對于目標地址是當前節點的數據包,只需向上層遞交這個數據包的網絡層源地址和網絡層負載即可返回。對于目標地址不是當前節點的數據包需要進行轉發。這時還需要檢查發送是否成功。如果成功就可以結束處理并返回。如果MAC層發送失敗,表示這個數據包路徑信息中對于當前節點的下一跳不可達,此時要更新當前節點的失效路由信息。

圖9 對收到路由請求包的處理流程圖

圖10 對收到數據包的處理流程

2.2 交互層設計

交互層位于網絡層之上,是RoboNet系統的最頂層。它負責把網絡層接收到的數據,按照約定格式組裝成數據幀通過串口發送出去,同時又對從串口進來的數據幀進行解析處理,如果是要發送數據,則把數據和目標地址提取出來,放到網絡層的發送緩沖區中。

交互層對串口進行接收和發送的幀都按照圖11所示的格式進行處理。第一個字節是幀界限符,用于表示一個幀的開始,值為十六進制0X7E。第二個字節標識長度,是類型相關數據字段的長度,規定最大長度為106字節。第三個字段是類型相關數據,長度并不固定。最后一個字節是校驗字節,用來簡單地校驗數據在串口收發過程中有沒出錯。校驗和(checksum)的計算方法如下:把類型相關數據字段中的每個字節加起來,然后對0XFF取反。校驗和的校驗方法如下:把類型相關數據中的每個字節加起來,再加上校驗和,如果值為0XFF則數據包正確。

圖11 串口幀通用格式

RoboNet系統一共有兩大類型幀:第一類是用于通信的數據相關幀,如圖12所示;第二類是用于設置、查詢、返回參數用的命令相關幀,如圖13所示。它們由類型相關數據中的第一個字節來區分,具體取值如表2所示。

圖12 數據相關幀的格式

表2 串口幀的不同類型

對于發送數據和接收數據的幀,其數據部分的前兩個字節用來標識地址,低有效字節優先。發送數據時,地址域是目標地址;接收數據時,地址域是網絡層源地址。

圖13 參數相關幀的格式

第一個字節表示命令的類型,為表3-2中的設置參數、查詢參數和返回參數三者之一。第二個字節指示了要操作的參數類型。第三、四字節是參數值,以低有效字節優先順序存放。對于獲取參數的幀來說,參數值還未知,這兩字節無意義,可用任意數值填充。對于參數值只有一位的情況,比如射頻發射功率,此時值的高有效位無意義,可用任意數值填充。

3 系統性能測試與分析

本節對RoboNet系統的性能做了測試,測試的標準采用了分組遞交率。測試時使用的四種拓撲結構如圖14所示。其中(a)表示A節點和B節點在彼此通信距離之內;(b)表示A節點和B節點彼此在通信距離之內,B節點和C節點在彼此通信距離之內,但A節點和C節點不能直接通信;(c)類似(a)和(b);(d)表示A節點、B節點、C節點和D節點彼此之間都可以直接通信。在以下的測試中,單跳通信使用(a)所示的拓撲,兩跳通信使用(b)所示拓撲,由A節點向C節點發送,三跳通信使用(c)所示的拓撲,由A節點向D節點發送。

圖14 測試時用的四種拓撲結構

(1)不同跳數對單播通信遞交率的影響

圖15所示的是在9600bps波特率的情況下,不同跳數對單播通信遞交率的影響。我們可以看到單跳通信和兩跳通信都達到了95%以上的遞交率,而三跳通信在負載為20字節的情況下遞交率比較低,只有65%。但是隨著負載的增加到40字節后,三跳通信的遞交率也達到了95%以上。

圖15 不同跳數對單播通信遞交率的影響

圖16 不同發送間隔對廣播通信遞交率的影響

(2)不同發送間隔對廣播通信遞交率的影響(三跳)

圖16所示的是三種發送間隔下的三跳廣播通信的遞交率,大的延時能提高遞交率。而負載越大時需要的延時也越大,從而能減少網絡中包的沖突,減低丟包率。在頻繁需要廣播通信的機器人網絡里發送廣播時這是需要注意的。

4 總結

本文設計并實現了的RoboNet通信系統,為多機器人之間的通信提供了無線多跳自組織網絡的通信方式,包括了單播通信和廣播通信。它不需要基礎設施如基站,就可以在任何地點臨時組網通信,并且網絡中的節點都是無差異的,不存在主次節點。在節點失效時,可以由冗余的節點繼續其工作,具有自愈性、抗毀性、高健壯性等特點。該系統目前只是在少量節點上做實驗,未來的工作將在大規模節點上進行實驗,并測試其性能。

[1]Texas Instruments.CC2430 Data Sheet.Texas Instrument.Dallas,TX.2006.

[2]鄒磊,蔡自興,任孝平.基于簇的多移動機器人通信系統.[J]計算機應用研究.2009,26(8):3109-3111.

[3]Bergbreiter S,Mehta A,Pister K.etc.PhotoBeacon:Design of an Optical System for Localization and Communication in Multi-Robot Systems.In Proceedings of the International Conference on Robot Communication and Coordination.Athens,Greece,Oct.2007:(30-37).

[4]The Institute of Electrical and Electronics Engineers.IEEE Standard for Local and Metropolitan Area Networks,part 15.4,Wireless Medium Access Control(MAC)and Physical Layer(PHY)Specifications for Low-Rate Wireless Personal Area Networks(LR-WPANs).IEEE Press.2003.

[5]Reese R B.A Zigbee-subset/IEEE 802.15.4 Multi-platform ProtocolStack.http://www.ece.msstate.edu/~reese/msstateP AN/.2007

[6]Johnson D B,MaltD A z,Hu Y C.The dynamic source routing protocol for mobile ad hoc networks(DSR).IETF Internet Draft.July,2004.

猜你喜歡
網絡層物理層字節
基于K-ML-MPWFRFT的物理層安全傳輸技術
No.8 字節跳動將推出獨立出口電商APP
公路聯網電子不停車收費系統路側單元物理層自動測試軟件研發
No.10 “字節跳動手機”要來了?
簡談MC7字節碼
論物聯網安全威脅及其應對策略
多天線物理層安全傳輸系統性能分析
物聯網技術在信息機房制冷系統中的應用
衛星通信物理層安全技術探析
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合