• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于802.15.4協(xié)議的多機(jī)器人無(wú)線通信系統(tǒng)的設(shè)計(jì)

      2010-05-05 02:39:44臧申俊
      微型電腦應(yīng)用 2010年6期
      關(guān)鍵詞:網(wǎng)絡(luò)層物理層字節(jié)

      臧申俊

      0 引言

      RoboNet的軟件系統(tǒng)采用的系統(tǒng)架構(gòu)如圖1所示:

      圖1 系統(tǒng)架構(gòu)圖

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

      1 物理層和MAC層

      1.1 RoboNet物理層設(shè)計(jì)

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

      圖2 802.15.4協(xié)議物理層幀格式

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

      圖3 物理層狀態(tài)機(jī)

      1.2 MAC層設(shè)計(jì)

      對(duì)于RoboNet應(yīng)用的多機(jī)器人系統(tǒng)來說,由于機(jī)器人節(jié)點(diǎn)之間是互相平等的,關(guān)聯(lián)機(jī)制和信標(biāo)機(jī)制起不到有效的作用,因而在RoboNet系統(tǒng)中,只使用了數(shù)據(jù)幀和確認(rèn)幀。MAC層幀格式[4]如圖4所示。

      圖4 RoboNet使用的MAC層幀格式

      MAC層的主要邏輯是mac_FSM()函數(shù)。MAC層先調(diào)用下層狀態(tài)機(jī)phy_FSM()使其保持運(yùn)轉(zhuǎn),然后檢查本層是否正在發(fā)送數(shù)據(jù),如果是則等待數(shù)據(jù)發(fā)送完畢,最后進(jìn)入MAC層的狀態(tài)機(jī),其狀態(tài)切換如圖5所示。

      圖5 RoboNet MAC層狀態(tài)轉(zhuǎn)換圖

      2 網(wǎng)絡(luò)層和串口交互層

      RoboNet屬于多跳無(wú)線自組網(wǎng),無(wú)線自組網(wǎng)起源于軍事應(yīng)用,它是20世紀(jì)70年代美國(guó)國(guó)防部高等研究計(jì)劃局(Defence Advanced Research Projects Agency,DARPA)資助研究的在戰(zhàn)場(chǎng)環(huán)境下采用分組無(wú)線網(wǎng)進(jìn)行數(shù)據(jù)通信(Packet Radio Net,PRNET)項(xiàng)目中產(chǎn)生的一種新型的網(wǎng)絡(luò)架構(gòu)技術(shù)[5]。

      2.1 網(wǎng)絡(luò)層設(shè)計(jì)

      網(wǎng)絡(luò)層的功能是為節(jié)點(diǎn)提供路由功能,是多跳移動(dòng)無(wú)線自組織網(wǎng)絡(luò)的核心部分。AODV[6]和DSR[6]都是可用于移動(dòng)多機(jī)器人網(wǎng)絡(luò)的優(yōu)秀的路由協(xié)議。DSR雖然需要更長(zhǎng)的網(wǎng)絡(luò)頭來保存路徑,但它在高移動(dòng)性的場(chǎng)合下比AODV對(duì)發(fā)送包的開銷要小。RoboNet選擇DSR作為路由協(xié)議。

      圖6 RoboNet網(wǎng)絡(luò)層頭部結(jié)構(gòu)

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

      表1 網(wǎng)絡(luò)頭部分類型

      首先是一個(gè)字節(jié)的類型位,它表示這個(gè)包的類型,一共分四種:路由請(qǐng)求(ROUTE_REQ)、路由回復(fù)(ROUTE_REPLY)、路由錯(cuò)誤(ROUTE_ERROR)、路由數(shù)據(jù)(ROUTE_DATA),具體數(shù)值見表1。

      第二個(gè)字節(jié)有兩個(gè)作用:在路由請(qǐng)求時(shí),它表示這個(gè)請(qǐng)求的序列號(hào),是為了避免對(duì)重復(fù)的請(qǐng)求進(jìn)行處理;在其它類型時(shí),它表示跳數(shù)信息。第三、第四個(gè)字節(jié)是表示這個(gè)包的網(wǎng)絡(luò)層的目標(biāo)地址,以低有效字節(jié)順序存放。接下來第五個(gè)字節(jié)也是個(gè)復(fù)用類型的域:在數(shù)據(jù)是廣播時(shí)它表示這個(gè)廣播的標(biāo)識(shí)符,是為了避免對(duì)收到過的廣播重新發(fā)送;而在其它情況下,它表示收到的這個(gè)節(jié)點(diǎn)和源節(jié)點(diǎn)之間的跳數(shù)。選項(xiàng)的最后是由常量MAX_ROUTE_LEN定義的16位地址數(shù)組,它表示了網(wǎng)絡(luò)層包的傳播路徑,是源路由協(xié)議的直接體現(xiàn)。

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

      圖7 nwk_main流程圖

      圖8 網(wǎng)絡(luò)層待發(fā)數(shù)據(jù)緩沖區(qū)

      在RoboNet系統(tǒng)中,本節(jié)點(diǎn)要發(fā)送的數(shù)據(jù)都存放在一個(gè)叫nwk_send_queue的緩沖區(qū)里。它是一個(gè)先進(jìn)先出循環(huán)隊(duì)列,如圖8所示。q_tail是最先存進(jìn)來的緩沖區(qū)項(xiàng)的索引,q_tail是下一個(gè)空閑的緩沖區(qū)項(xiàng)的索引,當(dāng)上一層有數(shù)據(jù)要發(fā)送時(shí)會(huì)往這個(gè)索引指向的地方存。另外還有兩個(gè)布爾變量q_full和q_empty來表示發(fā)送緩沖區(qū)是否為空和是否為滿。

      當(dāng)收到路由請(qǐng)求包時(shí)整個(gè)流程如圖9所示。首先檢查之前是否已經(jīng)收到過這個(gè)請(qǐng)求包,如果收到過那就沒有必要再進(jìn)行處理了。然后判斷這個(gè)請(qǐng)求的目標(biāo)節(jié)點(diǎn)是否是當(dāng)前節(jié)點(diǎn)。如果是,則這個(gè)請(qǐng)求到達(dá)了終點(diǎn),當(dāng)前節(jié)點(diǎn)需要返回一個(gè)路由回復(fù)。路由的回復(fù)直接在收到的路由請(qǐng)求的網(wǎng)絡(luò)頭部里改,不需要再重新分配一個(gè)網(wǎng)絡(luò)頭,即方便又節(jié)約了空間。最后一種情況是當(dāng)前節(jié)點(diǎn)既不是目標(biāo)節(jié)點(diǎn),也沒有到目標(biāo)節(jié)點(diǎn)的路由。這時(shí)當(dāng)前節(jié)點(diǎn)需要轉(zhuǎn)發(fā)這個(gè)路由請(qǐng)求。

      路由回復(fù)發(fā)往發(fā)起路由請(qǐng)求的那個(gè)節(jié)點(diǎn),中間節(jié)點(diǎn)收到路由回復(fù)包首先判斷自身是否為源節(jié)點(diǎn),如果是則通過路由回復(fù)包中的地址信息更新自身的路由緩存,并不再轉(zhuǎn)發(fā)路由回復(fù)包。如果自身不是源節(jié)點(diǎn)則在更新完自身緩存后還要繼續(xù)轉(zhuǎn)發(fā)這個(gè)路由回復(fù)包。

      路由錯(cuò)誤包的目的是節(jié)點(diǎn)在轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),發(fā)現(xiàn)原有路徑不可達(dá)時(shí),向數(shù)據(jù)發(fā)起節(jié)點(diǎn)報(bào)告路由失效。網(wǎng)絡(luò)層對(duì)收到路由錯(cuò)誤包的處理和收到路由回復(fù)包的處理十分類似,首先判斷接收到路由錯(cuò)誤包的節(jié)點(diǎn)是否為源節(jié)點(diǎn),如果是則根據(jù)路由錯(cuò)誤包中的信息刪除自身緩存中已經(jīng)失效的路由,并不再轉(zhuǎn)發(fā)該路由錯(cuò)誤包。如果自身不是源節(jié)點(diǎn)則在刪除完自身緩存中無(wú)效的路由信息后還要繼續(xù)轉(zhuǎn)發(fā)這個(gè)路由錯(cuò)誤包。

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

      圖9 對(duì)收到路由請(qǐng)求包的處理流程圖

      圖10 對(duì)收到數(shù)據(jù)包的處理流程

      2.2 交互層設(shè)計(jì)

      交互層位于網(wǎng)絡(luò)層之上,是RoboNet系統(tǒng)的最頂層。它負(fù)責(zé)把網(wǎng)絡(luò)層接收到的數(shù)據(jù),按照約定格式組裝成數(shù)據(jù)幀通過串口發(fā)送出去,同時(shí)又對(duì)從串口進(jìn)來的數(shù)據(jù)幀進(jìn)行解析處理,如果是要發(fā)送數(shù)據(jù),則把數(shù)據(jù)和目標(biāo)地址提取出來,放到網(wǎng)絡(luò)層的發(fā)送緩沖區(qū)中。

      交互層對(duì)串口進(jìn)行接收和發(fā)送的幀都按照?qǐng)D11所示的格式進(jìn)行處理。第一個(gè)字節(jié)是幀界限符,用于表示一個(gè)幀的開始,值為十六進(jìn)制0X7E。第二個(gè)字節(jié)標(biāo)識(shí)長(zhǎng)度,是類型相關(guān)數(shù)據(jù)字段的長(zhǎng)度,規(guī)定最大長(zhǎng)度為106字節(jié)。第三個(gè)字段是類型相關(guān)數(shù)據(jù),長(zhǎng)度并不固定。最后一個(gè)字節(jié)是校驗(yàn)字節(jié),用來簡(jiǎn)單地校驗(yàn)數(shù)據(jù)在串口收發(fā)過程中有沒出錯(cuò)。校驗(yàn)和(checksum)的計(jì)算方法如下:把類型相關(guān)數(shù)據(jù)字段中的每個(gè)字節(jié)加起來,然后對(duì)0XFF取反。校驗(yàn)和的校驗(yàn)方法如下:把類型相關(guān)數(shù)據(jù)中的每個(gè)字節(jié)加起來,再加上校驗(yàn)和,如果值為0XFF則數(shù)據(jù)包正確。

      圖11 串口幀通用格式

      RoboNet系統(tǒng)一共有兩大類型幀:第一類是用于通信的數(shù)據(jù)相關(guān)幀,如圖12所示;第二類是用于設(shè)置、查詢、返回參數(shù)用的命令相關(guān)幀,如圖13所示。它們由類型相關(guān)數(shù)據(jù)中的第一個(gè)字節(jié)來區(qū)分,具體取值如表2所示。

      圖12 數(shù)據(jù)相關(guān)幀的格式

      表2 串口幀的不同類型

      對(duì)于發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的幀,其數(shù)據(jù)部分的前兩個(gè)字節(jié)用來標(biāo)識(shí)地址,低有效字節(jié)優(yōu)先。發(fā)送數(shù)據(jù)時(shí),地址域是目標(biāo)地址;接收數(shù)據(jù)時(shí),地址域是網(wǎng)絡(luò)層源地址。

      圖13 參數(shù)相關(guān)幀的格式

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

      3 系統(tǒng)性能測(cè)試與分析

      本節(jié)對(duì)RoboNet系統(tǒng)的性能做了測(cè)試,測(cè)試的標(biāo)準(zhǔn)采用了分組遞交率。測(cè)試時(shí)使用的四種拓?fù)浣Y(jié)構(gòu)如圖14所示。其中(a)表示A節(jié)點(diǎn)和B節(jié)點(diǎn)在彼此通信距離之內(nèi);(b)表示A節(jié)點(diǎn)和B節(jié)點(diǎn)彼此在通信距離之內(nèi),B節(jié)點(diǎn)和C節(jié)點(diǎn)在彼此通信距離之內(nèi),但A節(jié)點(diǎn)和C節(jié)點(diǎn)不能直接通信;(c)類似(a)和(b);(d)表示A節(jié)點(diǎn)、B節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn)彼此之間都可以直接通信。在以下的測(cè)試中,單跳通信使用(a)所示的拓?fù)洌瑑商ㄐ攀褂茫╞)所示拓?fù)?,由A節(jié)點(diǎn)向C節(jié)點(diǎn)發(fā)送,三跳通信使用(c)所示的拓?fù)?,由A節(jié)點(diǎn)向D節(jié)點(diǎn)發(fā)送。

      圖14 測(cè)試時(shí)用的四種拓?fù)浣Y(jié)構(gòu)

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

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

      圖15 不同跳數(shù)對(duì)單播通信遞交率的影響

      圖16 不同發(fā)送間隔對(duì)廣播通信遞交率的影響

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

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

      4 總結(jié)

      本文設(shè)計(jì)并實(shí)現(xiàn)了的RoboNet通信系統(tǒng),為多機(jī)器人之間的通信提供了無(wú)線多跳自組織網(wǎng)絡(luò)的通信方式,包括了單播通信和廣播通信。它不需要基礎(chǔ)設(shè)施如基站,就可以在任何地點(diǎn)臨時(shí)組網(wǎng)通信,并且網(wǎng)絡(luò)中的節(jié)點(diǎn)都是無(wú)差異的,不存在主次節(jié)點(diǎn)。在節(jié)點(diǎn)失效時(shí),可以由冗余的節(jié)點(diǎn)繼續(xù)其工作,具有自愈性、抗毀性、高健壯性等特點(diǎn)。該系統(tǒng)目前只是在少量節(jié)點(diǎn)上做實(shí)驗(yàn),未來的工作將在大規(guī)模節(jié)點(diǎn)上進(jìn)行實(shí)驗(yàn),并測(cè)試其性能。

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

      [2]鄒磊,蔡自興,任孝平.基于簇的多移動(dòng)機(jī)器人通信系統(tǒng).[J]計(jì)算機(jī)應(yīng)用研究.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.

      猜你喜歡
      網(wǎng)絡(luò)層物理層字節(jié)
      Noise-Tolerant ZNN-Based Data-Driven Iterative Learning Control for Discrete Nonaffine Nonlinear MIMO Repetitive Systems
      基于K-ML-MPWFRFT的物理層安全傳輸技術(shù)
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      公路聯(lián)網(wǎng)電子不停車收費(fèi)系統(tǒng)路側(cè)單元物理層自動(dòng)測(cè)試軟件研發(fā)
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      簡(jiǎn)談MC7字節(jié)碼
      基于WPA的物聯(lián)網(wǎng)網(wǎng)絡(luò)層安全的研究
      多天線物理層安全傳輸系統(tǒng)性能分析
      1Gbps電力線載波通信物理層算法設(shè)計(jì)
      Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
      涞水县| 崇左市| 资兴市| 鄂州市| 高雄市| 宿迁市| 广宁县| 凉城县| 巩义市| 晋城| 温州市| 红桥区| 阿拉善盟| 金平| 墨江| 万全县| 内江市| 兴国县| 榆树市| 镇安县| 浮山县| 巴里| 桑植县| 崇信县| 突泉县| 镶黄旗| 布拖县| 泊头市| 阿拉尔市| 栖霞市| 三亚市| 彰化县| 炉霍县| 南京市| 永寿县| 洛南县| 赫章县| 织金县| 军事| 浙江省| 吕梁市|