【無線射頻通信】-基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究_第1頁
【無線射頻通信】-基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究_第2頁
【無線射頻通信】-基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究_第3頁
【無線射頻通信】-基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究_第4頁
【無線射頻通信】-基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

----宋停云與您分享--------宋停云與您分享----基于精簡協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)點研究引言

ZigBee是一種新興的短距離、低功耗、低數(shù)據(jù)速率、低成本、低簡單度的無線網(wǎng)絡(luò)技術(shù)。ZigBee在整個協(xié)議棧中處于網(wǎng)絡(luò)層的位置,其下是由IEEE802.15.4規(guī)范實現(xiàn)PHY(物理層)和MAC(媒體訪問掌握層),對上ZigBee供應(yīng)了應(yīng)用層接口。

ZigBee可以組成星形、網(wǎng)狀、樹形的網(wǎng)絡(luò)拓?fù)?,可用于無線傳感器網(wǎng)絡(luò)(WSN)的組網(wǎng)以及其他無線應(yīng)用。ZigBee工作于2.4GHz的免執(zhí)照頻段,可以容納高達(dá)65000個節(jié)點。這些節(jié)點的功耗很低,單靠2節(jié)5號電池就可以維持工作6~24個月。除此之外,它還具有很高的牢靠性和平安性。這些優(yōu)點使基于ZigBee的WSN廣泛應(yīng)用于工業(yè)掌握、消費(fèi)性電子設(shè)備、汽車自動化、家庭和樓宇自動化、醫(yī)用設(shè)備掌握等。

ZigBee協(xié)議由ZigBee聯(lián)盟制定,是ZigBee的核心。目前國外帶有ZigBee協(xié)議棧的全功能開發(fā)系統(tǒng)的價格特別昂揚(yáng),而且ZigBee/802.15.4協(xié)議棧全部只供應(yīng)二進(jìn)制/不行修改的目標(biāo)代碼庫供用戶使用。本文討論的ZigBee精簡版協(xié)議棧代碼開放,在某些應(yīng)用中可以達(dá)到標(biāo)準(zhǔn)版協(xié)議棧的效果,但是費(fèi)用卻低許多,因此具有較高的討論價值和應(yīng)用價值。

1ZigBee精簡協(xié)議棧簡介

密西西比州立高校的RobertReese教授出于教學(xué)、科研目的開發(fā)出一套精簡版(subset)ZigBee協(xié)議棧。標(biāo)準(zhǔn)協(xié)議棧和精簡協(xié)議棧的功能對比如表1所列,可以看出,精簡協(xié)議棧實現(xiàn)了ZigBee的主要功能。國內(nèi)一些討論機(jī)構(gòu)在此精簡協(xié)議上進(jìn)行擴(kuò)充,實現(xiàn)了一些其原本不具備的功能。

這里再補(bǔ)充一些術(shù)語概念,這有助于理解協(xié)議棧的代碼結(jié)構(gòu)。

IEEEAddress節(jié)點的8位802.15.4網(wǎng)絡(luò)地址,也稱為長地址。

NetworkAddress節(jié)點的2位網(wǎng)絡(luò)地址,也稱短地址。

PAN個人局域網(wǎng)。

PANID個人局域網(wǎng)標(biāo)識符。

PHY協(xié)議棧物理層。

MAC協(xié)議棧媒體訪問掌握層。

NWK協(xié)議棧網(wǎng)絡(luò)層。

APS協(xié)議棧應(yīng)用支持層。

APL協(xié)議棧應(yīng)用層。

精簡協(xié)議棧的代碼結(jié)構(gòu)如表2所列。

表1

表2

2ZigBee協(xié)議編程

對于實際應(yīng)用來說,最重要的是協(xié)議棧的APL函數(shù)。協(xié)議棧的每一層都有自己的有限狀態(tài)機(jī)(FSM)以追蹤要進(jìn)行的操作。頂層的狀態(tài)機(jī)函數(shù)為apsFSM(),這個函數(shù)需要最早被調(diào)用以使協(xié)議棧運(yùn)行,這與標(biāo)準(zhǔn)棧中的APLTask()函數(shù)等價。全部的應(yīng)用層函數(shù)都以apl或者aps開頭,這些函數(shù)被分為兩類:一類是對棧內(nèi)數(shù)據(jù)的存取函數(shù),一類是數(shù)據(jù)傳輸過程觸發(fā)一系列大事的服務(wù)函數(shù)(調(diào)用)。這里需要說明的是服務(wù)調(diào)用不能重疊,這可以通過調(diào)用apsBusy()函數(shù)進(jìn)行推斷。

2.1節(jié)點程序設(shè)計

假如節(jié)點作為協(xié)調(diào)器(coordinator),那么需要定義LRWPAN_COORDINATOR;而假如節(jié)點作為路由器(router)則需要定義LRWPAN_ROUTER;假如兩者都沒有定義,將作為RFD節(jié)點。

協(xié)調(diào)器節(jié)點形成網(wǎng)絡(luò),然后進(jìn)入一個無限循環(huán)并調(diào)用apsFSM()運(yùn)行協(xié)議棧。調(diào)用aplFormNetwork()服務(wù)后調(diào)用函數(shù)aplGetStatus(),假如返回了LRWPAN_SUCCESS則表示服務(wù)調(diào)用勝利。代碼如下:

main(){

halInit();//初始化HAL層

evbInit();//初始化評估板

aplInit();//初始化協(xié)議棧

ENABLE_GLOBAL_INTERRUPT();//開中斷

aplFormNetwork();//形成網(wǎng)絡(luò)

while(apsBusy)()){apsFSM();}//等待完成

while(1){apsFSM();}//運(yùn)行協(xié)議棧棧

}

路由器節(jié)點通過調(diào)用aplJoinNetwork()運(yùn)行協(xié)議棧。代碼如下:

main(){

halInit();//初始化HAL層

evbInit();//初始化評估板

aplInit();//初始化協(xié)議棧

ENABLE_GLOBAL_INTERRUPT();//開中斷嘗試接入網(wǎng)絡(luò)直至勝利

do{aplJoinNetwork();//接入網(wǎng)絡(luò)

while(apsBusy)()){apsFSM();}//等待完成

}while(aplGetStatus()!=LRWPAN_SUCCESS);

while(1){apsFSM();}//運(yùn)行協(xié)議棧

}

2.2發(fā)送消息

應(yīng)用程序通過調(diào)用aplSendMSG()函數(shù)發(fā)送消息包。此函數(shù)的定義如下:

aplSendMSG(

BYTEdstMode,//目標(biāo)地址的地址模式

LADDR_UNION*dstADDR,//目的地址的指針

BYTEdstEP,//目標(biāo)端點(直接消息方式不用)

BYTEcluster,//簇號(僅用于直接消息)

BYTEscrEP,//消息源端點

BYTE*pload,//用戶數(shù)據(jù)緩沖區(qū)指針

BYTEplen,//緩沖區(qū)字節(jié)數(shù)

BYTEtsn,//消息的事務(wù)隊列數(shù)

BYTEreqack//假如非0則要求確認(rèn)

)

消息從源節(jié)點的源端點發(fā)送到目標(biāo)節(jié)點的目標(biāo)端點。消息分直接消息(指定了目標(biāo)地址)和非直接消息(僅定義了源節(jié)點、源端點和簇,沒有指定目標(biāo)地址)。端點號從1到255由應(yīng)用程序設(shè)置(端點0由棧保留使用)。消息發(fā)送以,協(xié)議棧會向父節(jié)點路由此消息。假如收到APS的ack確認(rèn),協(xié)議棧就會將消息發(fā)送給目標(biāo)端點。

2.3接收消息

協(xié)議棧使用以下APL訪問函數(shù)接收數(shù)據(jù)包。

aplGetRxDstEp()返回目的端點

aplGetRxCluster()返回簇號

aplGetRxSrcEp()返回源端點

aplGetRxSADDR()返回源端點的短地址

aplGetRxMsgLen()返回消息長度

aplGetRxMsgData()返回消息數(shù)據(jù)的指針

aplGetRxRSSI()返回收到消息的信號強(qiáng)度

而后用戶回調(diào)函數(shù)usrRxPacketCallback()將被調(diào)用。這個函數(shù)將使用用戶數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù),設(shè)置已收到數(shù)據(jù)的標(biāo)志位。此函數(shù)結(jié)束后消息數(shù)據(jù)的指針將會被釋放,所以在函數(shù)結(jié)束之前要將數(shù)據(jù)保存以防止下一個包將數(shù)據(jù)掩蓋掉。

2.4編寫用戶應(yīng)用程序

編寫用戶應(yīng)用程序時,要確定端點的連接方式。一種簡潔的方式是RFD節(jié)點周期性地向

協(xié)調(diào)器節(jié)點返回數(shù)據(jù)。這樣做比較簡潔,由于協(xié)調(diào)器的地址總是0。

RFD節(jié)點間使用直接方式通信比較困難。由于RFD節(jié)點的短地址是由其接入網(wǎng)絡(luò)的挨次和深度打算的,事先并不知道。當(dāng)然可以在協(xié)調(diào)器節(jié)點上增加程序告知RFD節(jié)點它們的地址,但這使簡單程度增加了。比較好的方式是使用非直接消息方式進(jìn)行RFD節(jié)點間通信。RFD節(jié)點都將消息發(fā)送給協(xié)調(diào)器節(jié)點,協(xié)調(diào)器節(jié)點依據(jù)綁定表向正確的節(jié)點發(fā)送數(shù)據(jù)。

圖1有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖

整個程序的運(yùn)轉(zhuǎn)是靠一個有限狀態(tài)機(jī)維持的。圖1給出了這個狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖。

2.5函數(shù)總結(jié)

鑒于APL層函數(shù)接口對程序設(shè)計的重要性,將這些函數(shù)做一個總結(jié)。

表3APL服務(wù)調(diào)用

表4APL/APS訪問和功能函數(shù)

表3是APL服務(wù),這些函數(shù)需要調(diào)用apsBusy()確定其是否完成,并且使用aplGetStatus()函數(shù)返回狀態(tài)。表4是APL/APS訪問及功能函數(shù)。

結(jié)語

無線傳感器網(wǎng)絡(luò)具有寬闊的應(yīng)用前景,由ZigBee協(xié)議可以便利有效地組建無線傳感器網(wǎng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論