下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 丙烯酸樹脂裝置操作工崗前評優(yōu)考核試卷含答案
- 鉭鈮加工材制取工崗前變更管理考核試卷含答案
- 松香浸提工崗前評審考核試卷含答案
- 土石方挖掘機(jī)司機(jī)班組考核競賽考核試卷含答案
- 貨運(yùn)調(diào)度員操作安全測試考核試卷含答案
- 煤提質(zhì)工崗前工藝規(guī)程考核試卷含答案
- 汽車美容裝潢工班組安全知識考核試卷含答案
- 玻纖織布帶工誠信模擬考核試卷含答案
- 電工合金金屬粉末處理工崗前進(jìn)階考核試卷含答案
- 平板顯示膜涂布工班組評比競賽考核試卷含答案
- 裝配式建筑可行性研究報告
- 跨境電子商務(wù)教案
- 新人教部編版一年級下冊生字表全冊描紅字帖可打印
- 中國的“愛經(jīng)”(一)-《天地陰陽交⊥歡大樂賦》
- 中學(xué)保安工作管理制度
- 廣元市利州區(qū)何家坪石材廠飾面用灰?guī)r礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 保健按摩師初級試題
- 2021年度四川省專業(yè)技術(shù)人員繼續(xù)教育公需科目(答案整合)
- 醫(yī)療廢物處理方案
- 船舶靠離泊作業(yè)風(fēng)險辨識表
- DB37T 2673-2019醫(yī)療機(jī)構(gòu)能源消耗定額標(biāo)準(zhǔn)
評論
0/150
提交評論