版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
物聯(lián)網(wǎng)通信技術(shù)第三章Zigbee網(wǎng)絡(luò)原理及開(kāi)發(fā)趙建立山東科技大學(xué)主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例ZigBee是IEEE802.15.4協(xié)議的代名詞。根據(jù)這個(gè)協(xié)議規(guī)定的技術(shù)是一種短距離、低功耗的無(wú)線通信技術(shù)。這一名稱來(lái)源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動(dòng)翅膀的“舞蹈”來(lái)與同伴傳遞花粉所在方位信息,也就是說(shuō)蜜蜂依靠這樣的方式構(gòu)成了群體中的通信網(wǎng)絡(luò)。ZigBee簡(jiǎn)介ZigBee簡(jiǎn)介ZigBee技術(shù)發(fā)展歷程1.ZigBee的前身是1998年由INTEL、IBM等產(chǎn)業(yè)巨頭發(fā)起的“HomeRFLite”技術(shù)。2.2000年12月成立了工作小組起草IEEE802.15.4標(biāo)準(zhǔn)3.Zigbee聯(lián)盟成立于2001年8月。2002年下半年,英國(guó)Invensys公司、日本三菱電氣公司、美國(guó)摩托羅拉公司以及荷蘭飛利浦半導(dǎo)體公司四大巨頭共同宣布加盟“Zigbee聯(lián)盟”,以研發(fā)名為“Zigbee”的下一代無(wú)線通信標(biāo)準(zhǔn),這一事件成為該項(xiàng)技術(shù)發(fā)展過(guò)程中的里程碑。4.2004年12月ZigBee1.0標(biāo)準(zhǔn)(又稱為ZigBee2004)敲定,這使得ZigBee有了自己的發(fā)展基本標(biāo)準(zhǔn)。5.2005年9月公布ZigBee1.0標(biāo)準(zhǔn)并提供下載。在這一年里,華為技術(shù)有限公司和IBM公司加入了ZigBee聯(lián)盟。但是基于該版本的應(yīng)用很少,與后面的版本也不兼容。6.2006年12月進(jìn)行標(biāo)準(zhǔn)修訂,推出ZigBee1.1版(又稱為ZigBee2006)。該協(xié)議雖然命名為ZigBee1.1,但是與ZigBee1.0版是不兼容的。ZigBee簡(jiǎn)介7.2007年10月完成再次修訂(稱為ZigBee2007/PRO)。能夠兼容之前的ZigBee2006版本,并且加入了ZibgeePRO部分,此時(shí)ZigBee聯(lián)盟更加專注于以下三個(gè)方面:
1)、家庭自動(dòng)化(HomeAutomation;HA);2)、建筑/商業(yè)大樓自動(dòng)化(BuildingAutomation;BA);3)、先進(jìn)抄表基礎(chǔ)建設(shè)(AdvancedMeterInfrastructure;AMI);ZigBee簡(jiǎn)介1.1無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議對(duì)比
1.1無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議對(duì)比Zigbee與現(xiàn)有標(biāo)準(zhǔn)傳輸協(xié)議的比較:1.1無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議對(duì)比因此:Zigbee數(shù)據(jù)速率較低,不適用于傳輸大數(shù)據(jù)量的應(yīng)用領(lǐng)域。1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.2短距離無(wú)線網(wǎng)絡(luò)的分類1.3zigbee版本介紹2001年8月,ZigBeeAlliance成立。該聯(lián)盟致力于促進(jìn)在全球的消費(fèi)電子、能源、住宅、商業(yè)和工業(yè)領(lǐng)域廣泛采用ZigBee作為領(lǐng)先的無(wú)線網(wǎng)絡(luò)、傳感和控制標(biāo)準(zhǔn)。2004年,ZigBeeV1.0誕生。它是Zigbee規(guī)范的第一個(gè)版本。由于推出倉(cāng)促,存在一些錯(cuò)誤。2006年,推出ZigBee2006,比較完善。2007年底,ZigBeePRO推出。目前已經(jīng)吸引了一些最具創(chuàng)新性和在世界知名的組織,如華為、羅格朗、施耐德、飛利浦、霍尼韋爾等知名企業(yè),一個(gè)由400多家企業(yè)和其他組織構(gòu)成的非營(yíng)利性開(kāi)放聯(lián)合體,1.4zigbee無(wú)線網(wǎng)絡(luò)通信信道分析注:2.4GHZ是全球通用的ISM頻段,915MHZ是北美的ISM頻段,896MHZ是歐洲認(rèn)可的ISM頻段。ISM:Industrial,ScientificandMedical信道編號(hào)中心頻率/MHz信道間隔/MHz頻率上限/MHz頻率下限/MHzk=0868.3--868.6868.0k=1,2,…,10906+2(k-1)2928.0902.0k=11,12,…,262401+5(k-11)52483.52400.01.5zigbee無(wú)線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):星狀、網(wǎng)狀、簇狀節(jié)點(diǎn)類型:協(xié)調(diào)器、路由器、終端節(jié)點(diǎn)ZigBee協(xié)調(diào)器(Coordinator)它包含所有的網(wǎng)絡(luò)信息,是3種設(shè)備中最復(fù)雜的,存儲(chǔ)容量大、計(jì)算能力最強(qiáng)。它主要用于發(fā)送網(wǎng)絡(luò)信標(biāo)、建立一個(gè)網(wǎng)絡(luò)、管理網(wǎng)絡(luò)節(jié)點(diǎn)、存儲(chǔ)網(wǎng)絡(luò)節(jié)點(diǎn)信息、尋找一對(duì)節(jié)點(diǎn)間的路由信息并且不斷的接收信息。一旦網(wǎng)絡(luò)建立完成,這個(gè)協(xié)調(diào)器的作用就像路由器節(jié)點(diǎn)。1.5zigbee無(wú)線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)ZigBee路由器(Router)
它執(zhí)行的功能包括允許其它設(shè)備加入這個(gè)網(wǎng)絡(luò),中繼路由,輔助子樹(shù)下終端設(shè)備的通信。通常,路由器全時(shí)間處在活動(dòng)狀態(tài),因此為主供電。但是在樹(shù)狀拓?fù)渲?允許路由器操作周期運(yùn)行,因此這個(gè)情況下允許路由器電池供電.1.5zigbee無(wú)線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)ZigBee終端設(shè)備(End-device)一個(gè)終端設(shè)備對(duì)于維護(hù)這個(gè)網(wǎng)絡(luò)設(shè)備沒(méi)有具體的責(zé)任,所以它可以睡眠和喚配,看它自己的選擇。因此它能作為電池供電節(jié)點(diǎn)。1.5zigbee無(wú)線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)設(shè)備類型拓?fù)漕愋褪欠癯蔀閰f(xié)調(diào)器通話對(duì)象全功能設(shè)備(FFD)星型、樹(shù)狀、網(wǎng)狀可以與任何ZigBee設(shè)備通話簡(jiǎn)化功能設(shè)備(RFD)星型不可以與協(xié)調(diào)器、路由器通話,不能與終端設(shè)備通話1.5zigbee無(wú)線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用場(chǎng)合低速無(wú)線設(shè)備·
TV·
VCR·
DVD·
CD
·
鼠標(biāo)·
鍵盤(pán)·
操作桿
·
保安·
HVAC·
照明·
門(mén)禁
·
玩具·
游戲器具
·
監(jiān)視·
診斷·
傳感器·
監(jiān)視·
傳感器·
自動(dòng)化·控制工業(yè)、農(nóng)業(yè)和商業(yè)消費(fèi)電子PC機(jī)的外圍設(shè)備玩具和游戲個(gè)人健康監(jiān)護(hù)ZigBee應(yīng)用實(shí)例結(jié)合ZigBee和GPRS的無(wú)線數(shù)據(jù)傳輸網(wǎng)絡(luò)1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用實(shí)例ZigBee技術(shù)在石油石化行業(yè)的應(yīng)用液化天然氣罐遠(yuǎn)程監(jiān)控汽油管線的腐蝕監(jiān)測(cè)潤(rùn)滑油供應(yīng)鏈汽油管線侵入者監(jiān)測(cè)液化天然氣容器跟蹤1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用實(shí)例基于ZigBee技術(shù)的管道監(jiān)測(cè)無(wú)線數(shù)據(jù)傳輸網(wǎng)絡(luò)1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用實(shí)例ZigBee智能交通控制系統(tǒng)無(wú)線通信方案ZIGBEE無(wú)線通信的交通信號(hào)控制系統(tǒng)-交通路口控制通信1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用實(shí)例ZIGBEE無(wú)線通信的交通信號(hào)控制系統(tǒng)-交通路口控制通信ZigBee智能交通控制系統(tǒng)無(wú)線通信方案1.6zigbee技術(shù)的應(yīng)用領(lǐng)域ZigBee應(yīng)用實(shí)例基于ZigBee技術(shù)的無(wú)線三表遠(yuǎn)程抄表系統(tǒng)采用MESH網(wǎng)狀網(wǎng)絡(luò)結(jié)構(gòu),保證數(shù)據(jù)傳輸?shù)目煽啃?。每幢單元樓設(shè)置一個(gè)ZigBee遠(yuǎn)端節(jié)點(diǎn)一個(gè)小區(qū)設(shè)置一個(gè)ZigBee中心節(jié)點(diǎn)ZigBee中心節(jié)點(diǎn)數(shù)據(jù)通過(guò)GPRS/CDMA或ADSL上傳到集抄中心1.6zigbee技術(shù)的應(yīng)用領(lǐng)域主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例1.1IAR集成開(kāi)發(fā)環(huán)境介紹ZigBee無(wú)線網(wǎng)絡(luò)節(jié)點(diǎn)開(kāi)發(fā)平臺(tái)軟件開(kāi)發(fā)平臺(tái)IAREmbeddedWorkbench(簡(jiǎn)稱EW)的C/C++交叉編譯器和調(diào)試器是今天世界最完整的和最容易使用專業(yè)嵌入式應(yīng)用開(kāi)發(fā)工具。
EW今天已經(jīng)支持35種以上的8位/16位32位ARM的微處理器結(jié)構(gòu)。EW包括:嵌入式C/C++優(yōu)化編譯器,匯編器,連接定位器,庫(kù)管理員,編輯器,項(xiàng)目管理器和C-SPY調(diào)試器。使用IAR的編譯器最優(yōu)化最緊湊的代碼,節(jié)省硬件資源,最大限度地降低產(chǎn)品成本,提高產(chǎn)品競(jìng)爭(zhēng)力。IARSystem是嵌入式領(lǐng)域唯一能夠提供這種解決方案的公司。
IAREmbeddedWorkbench是一套完整的集成開(kāi)發(fā)工具集合,包括從代碼編輯器、工程建立到C/C++編譯器、連接器和調(diào)試器的各類開(kāi)發(fā)工具。它和各種仿真器、調(diào)試器緊密結(jié)合,使用戶在開(kāi)發(fā)和調(diào)試過(guò)程中,僅僅使用一種開(kāi)發(fā)環(huán)境界面,就可以完成多種微控制器的開(kāi)發(fā)工作。1.1IAR集成開(kāi)發(fā)環(huán)境介紹IAR的安裝、工程的編輯和修改參見(jiàn)實(shí)驗(yàn)手冊(cè)1.1IAR集成開(kāi)發(fā)環(huán)境介紹1.1IAR集成開(kāi)發(fā)環(huán)境介紹1.2仿真與調(diào)試CC2530仿真器具有在線下載、調(diào)試、仿真等功能。仿真器外形非常簡(jiǎn)潔,只有1個(gè)USB接口、1個(gè)復(fù)位按鍵和一根仿真線。1.2仿真與調(diào)試USB接口:通過(guò)USB接口可以把仿真器與計(jì)算機(jī)有機(jī)地連接起來(lái)。仿真器通過(guò)此接口與計(jì)算機(jī)進(jìn)行通信,要在CC2430/CC2530的ZigBee模塊上實(shí)現(xiàn)下載、調(diào)試(Debug)、仿真等功能都通過(guò)此接口來(lái)實(shí)現(xiàn)。
復(fù)位按鍵:此按鍵用來(lái)實(shí)現(xiàn)仿真器的復(fù)位,當(dāng)需要重新下載、調(diào)試、仿真時(shí),可通過(guò)此按鍵來(lái)實(shí)現(xiàn)硬復(fù)位。仿真線:這是一根10芯的下載、調(diào)試(DEBUG)、仿真線,通過(guò)它與CC2430/CC2530的ZigBee模塊進(jìn)行連接。1.2仿真與調(diào)試仿真器具有以下特點(diǎn):USB接口,使開(kāi)發(fā)與計(jì)算機(jī)連接更加簡(jiǎn)單快捷2)高速代碼下載,提供高達(dá)150KBit/s下載速度,把程序下載到CC2430/2530的ZigBee模塊只需要幾秒就完成3)在線下載、調(diào)試、仿真4)硬件斷點(diǎn)調(diào)試,類似JTAG的硬件斷點(diǎn)調(diào)試,可實(shí)現(xiàn)單步、變量觀察等全部C51源代碼水平的在線調(diào)試DEBUG功能5)支持IAR的C51編譯/調(diào)試圖形IDE開(kāi)發(fā)平臺(tái)6)專業(yè)設(shè)計(jì),系統(tǒng)穩(wěn)定可靠,噪聲干擾小1.2仿真與調(diào)試連接好仿真器和zigbee節(jié)點(diǎn),復(fù)位一下仿真器,然后點(diǎn)擊Project中的DownloadandDebug,就實(shí)現(xiàn)了下載程序,當(dāng)程序下載完后,軟件進(jìn)入在線仿真模式。1.3一個(gè)例程這個(gè)代碼的意思是將P1口設(shè)置為輸出,將P1口置0,中軟國(guó)際教育集團(tuán)開(kāi)發(fā)的模塊和開(kāi)發(fā)板中有小燈在P1口上,當(dāng)執(zhí)行這個(gè)代碼的時(shí)候,小燈會(huì)點(diǎn)亮1.3一個(gè)例程在上面的介紹中,大家對(duì)IAR的使用方法已經(jīng)有了一定的認(rèn)識(shí),但是在一個(gè)項(xiàng)目中,尤其是無(wú)線項(xiàng)目中,涉及到的設(shè)備不會(huì)僅僅只有一個(gè),如在ZigBee設(shè)備中的協(xié)調(diào)器、路由器和終端設(shè)備,雖然設(shè)備不相同但它們的功能和協(xié)議棧底層卻基本相同,所以在里面只需要定義些條件編譯就可以設(shè)定好,如果將每一個(gè)設(shè)備都重新建立一個(gè)工程的話,這樣寄浪費(fèi)空間,代碼也很混亂,所以我們就需要使用IAR的模塊設(shè)備功能。1.3一個(gè)例程
我們通過(guò)上面的點(diǎn)亮LED例子來(lái)說(shuō)明這個(gè)功能的使用方法。
首先修改工程的代碼,在這里我們要實(shí)現(xiàn)兩個(gè)設(shè)備在一個(gè)工程中實(shí)現(xiàn)不同的功能,兩個(gè)模塊的名稱分別定義為:Blink_LED和Open_LED。實(shí)現(xiàn)的功能是閃爍小燈和打開(kāi)小燈。voidmain(void){P1DIR=0xFF;while(1){#ifndefBlink_LED
P1=0;#elseP1=~P1;for(inti=0;i<1000;i++)for(intj=0;j<1000;j++);#endif}}注:關(guān)于寄存器管腳的定義可以參見(jiàn)〈CC2530-ZigbeePRO接口編程實(shí)驗(yàn)手冊(cè)〉1.3一個(gè)例程1.3一個(gè)例程從代碼中可以看出,根據(jù)條件的不同得到的結(jié)果也不相同,在這里實(shí)現(xiàn)的是一個(gè)閃燈的和一個(gè)打開(kāi)小燈的程序,根據(jù)下面的圖片進(jìn)行配置,首先是打開(kāi)小燈,打開(kāi)小燈的是在沒(méi)有定義Blink_LED的情況下實(shí)現(xiàn)的,所以我們只需要直接選擇Open_LED模塊,不需要任何修改就可以完成該功能。主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例1.1CC2430與CC2530的比較項(xiàng)目cc2430cc2530引腳4840大小7*7mm6*6mmFlash32/64/128KB32/64/128/256KB軟件平臺(tái)IARIAR定時(shí)/計(jì)數(shù)器4個(gè)4個(gè)中斷源18個(gè)18個(gè)I/O21個(gè)21個(gè)微控制器增強(qiáng)型c8051增強(qiáng)型c8051抗干擾CSMA/CACSMA/CA功耗RX27mATX25mARX24mATX29mACC2530是TI09年推出的,在CC2430的基礎(chǔ)上根據(jù)CC2430實(shí)際應(yīng)用的一些問(wèn)題做了一些改進(jìn),緩存加大了,存儲(chǔ)容量最大支持到256K,CC2530的通信距離可以達(dá)到400m,不用再用CC2430外加功放來(lái)擴(kuò)展距離CC2530的主要特點(diǎn):◆高性能和低功耗的8051微控制器核?!艏煞螴EEE802.15.4標(biāo)準(zhǔn)的2.4GHz的RF無(wú)線電收發(fā)機(jī)?!魞?yōu)良的無(wú)線接收靈敏度和強(qiáng)大的抗干擾性。◆在休眠模式時(shí)僅1μA的流耗,外部的中斷或RTC能喚醒系統(tǒng)在待機(jī)模式時(shí)少于0.4μA的流耗,外部的中斷能喚醒系統(tǒng)◆硬件支持CSMA/CA功能?!糨^寬的電壓范圍(2.0~3.6V)。◆數(shù)字化的RSSI/LQI支持和強(qiáng)大的DMA功能?!艟哂须姵乇O(jiān)測(cè)和溫度感測(cè)功能?!艏闪?4位模數(shù)轉(zhuǎn)換的ADC。◆集成AES安全協(xié)處理器?!魩в?個(gè)強(qiáng)大的支持幾組協(xié)議的USART,以及2個(gè)常規(guī)的16位計(jì)時(shí)器和2個(gè)8位計(jì)時(shí)器?!魪?qiáng)大和靈活的開(kāi)發(fā)工具Zigbee芯片CC2530主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例1.1Zigbee協(xié)議棧什么是協(xié)議什么是協(xié)議棧兩者有什么聯(lián)系1.2怎樣使用Zigbee協(xié)議棧SOCKET編程,利用TCP/IP協(xié)議棧1.3Zigbee協(xié)議棧的安裝ZigBee協(xié)議棧具有很多版本,不同廠商提供的ZigBee協(xié)議棧有一定的區(qū)別,本課程選用的是TI推出的ZigBee2007協(xié)議棧進(jìn)行講解。ZigBee2007協(xié)議棧ZStack-CC2530-2.5.1a要安裝以后才能使用,下面講解安裝步驟。1、可以直接到TI官方網(wǎng)站下載zigbee2007協(xié)議棧2、打開(kāi)光盤(pán)目錄:ETC-WSN物聯(lián)網(wǎng)光盤(pán)資料\ZigBee網(wǎng)絡(luò)\tools,雙擊ZStack-CC2530-2.5.1a.exe即可進(jìn)行協(xié)議棧的安裝,默認(rèn)是安裝到c盤(pán)。然后在路徑C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB下找到GenericApp.eww,打開(kāi)該工程。打開(kāi)該工程后,可以看到GenericApp工程文件布局,如圖所示。在圖中所示的文件布局中,左側(cè)有很多文件夾,如App,HAL,MAC等;這些文件夾對(duì)應(yīng)了ZigBee協(xié)議中不同的層,使用ZigBee協(xié)議棧進(jìn)行應(yīng)用程序的開(kāi)發(fā),一般只需要修改App目錄下的文件即可。1.3Zigbee協(xié)議棧的安裝APP:對(duì)應(yīng)開(kāi)發(fā)的應(yīng)用模塊;HAL模塊直接操作外設(shè)寄存器,完成外設(shè)的驅(qū)動(dòng)程序。向上層提供外設(shè)驅(qū)動(dòng)的接口函數(shù)MT(MonitorTest,監(jiān)控測(cè)試)模塊為上位機(jī)提供通過(guò)串口監(jiān)測(cè)節(jié)點(diǎn)運(yùn)行情況的方式??梢酝ㄟ^(guò)串口請(qǐng)求AF、ZDO、NWK和MAC模塊進(jìn)行特定操作;MAC模塊實(shí)現(xiàn)IEEE802.15.4標(biāo)準(zhǔn)的MAC層服務(wù);NWK(Network,網(wǎng)絡(luò))模塊實(shí)現(xiàn)ZigBee規(guī)范中的網(wǎng)絡(luò)層服務(wù),包括網(wǎng)絡(luò)的配置、節(jié)點(diǎn)的加入/離開(kāi)網(wǎng)絡(luò)、地址分配、路由發(fā)現(xiàn)、網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元的傳輸?shù)取?.3Zigbee協(xié)議棧的安裝1.3zigbee協(xié)議棧安裝ZDO(ZigBeeDeviceObject,ZigBee設(shè)備對(duì)象)模塊實(shí)現(xiàn)ZigBee規(guī)范中的ZDO定義的功能,包括應(yīng)用支持子層和網(wǎng)絡(luò)層的初始化,并通過(guò)向用戶定義的應(yīng)用對(duì)象收集相關(guān)信息來(lái)實(shí)現(xiàn)設(shè)備和服務(wù)發(fā)現(xiàn)、安全管理、網(wǎng)絡(luò)管理、綁定管理等。OSAL(OperatingSystemAbstractionLayer,操作系統(tǒng)抽象層)模塊定義了其它模塊中的事件的處理機(jī)制。它將每一模塊內(nèi)的所有事件放在一個(gè)任務(wù)中進(jìn)行處理,任務(wù)間的通信通過(guò)傳遞系統(tǒng)消息來(lái)完成,這使得協(xié)議棧中的事件處理更類似于一個(gè)操作系統(tǒng);同時(shí)它還定義了堆內(nèi)存管理、NV(non-volatile,非可變)存儲(chǔ)系統(tǒng)的管理、電源管理、時(shí)鐘管理等。1.3zigbee協(xié)議棧安裝
TOOLS文件夾里面f8w2530.xcl,f8wConfig.cfg,f8wCoord.cfg三個(gè)文件包含了節(jié)點(diǎn)的配置信息,具體功能如下:(1)f8w2530.xcl----包含了CC2530單片機(jī)的鏈接控制指令(如定義堆棧大小、內(nèi)存分配等),一般不需要改動(dòng)。(2)f8wConfig.cfg----包含了信道選擇,網(wǎng)絡(luò)號(hào)等有關(guān)的鏈接命令。例如:下列代碼定義了建立網(wǎng)絡(luò)的信道默認(rèn)為11,即從11信道上建立ZigBee無(wú)線網(wǎng)絡(luò),第59行定義了ZigBee無(wú)線網(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)。1.3zigbee協(xié)議棧安裝(3)f8wCoord.cfg----定義了設(shè)備類型前文講到zigbee無(wú)線網(wǎng)絡(luò)中的設(shè)備類型有協(xié)調(diào)器,路由器和終端節(jié)點(diǎn)。下述代碼就定義了該設(shè)備具有協(xié)調(diào)器和路由器的功能。第一個(gè)zigbee實(shí)驗(yàn)兩個(gè)ZigBee節(jié)點(diǎn)進(jìn)行點(diǎn)對(duì)點(diǎn)通信,ZigBee節(jié)點(diǎn)2每隔5s向節(jié)點(diǎn)1發(fā)送一次“ChinaSofti”字符,同時(shí)LED綠燈閃爍兩下表示成功發(fā)送。ZigBee節(jié)點(diǎn)1收到節(jié)點(diǎn)2發(fā)送過(guò)來(lái)的數(shù)據(jù)后,對(duì)接收到的數(shù)據(jù)進(jìn)行判斷,如果收到的數(shù)據(jù)是“ChinaSofti”,則使開(kāi)發(fā)板上的LED紅燈閃爍兩下表示成功接收。第一個(gè)zigbee實(shí)驗(yàn)ZigBee節(jié)點(diǎn)1配置為1個(gè)協(xié)調(diào)器,負(fù)責(zé)ZigBee網(wǎng)路的組建,ZigBee節(jié)點(diǎn)2配置為一個(gè)終端節(jié)點(diǎn)。創(chuàng)建協(xié)調(diào)器的程序(Coordinator.c)創(chuàng)建終端節(jié)點(diǎn)的程序(Enddevice.c)實(shí)驗(yàn)室環(huán)境下,一定不要忘記修改PID?。∪绾蝿?chuàng)建,參見(jiàn)手冊(cè)P58.第一個(gè)zigbee實(shí)驗(yàn)第一個(gè)zigbee實(shí)驗(yàn)每個(gè)節(jié)點(diǎn)上的所有端口共用一個(gè)發(fā)射/接收天線,不同節(jié)點(diǎn)上的端口之間可以進(jìn)行通信,如節(jié)點(diǎn)1的端口1可以給節(jié)點(diǎn)2的端口1發(fā)送控制命令來(lái)點(diǎn)亮LED,節(jié)點(diǎn)1的端口1也可以給節(jié)點(diǎn)2的端口2發(fā)送命令進(jìn)行數(shù)據(jù)采集操作,但是節(jié)點(diǎn)2上端口1和端口2的網(wǎng)絡(luò)地址是相同的,所以僅僅通過(guò)網(wǎng)絡(luò)地址無(wú)法區(qū)分,所以,在發(fā)送數(shù)據(jù)時(shí)不但要指定網(wǎng)絡(luò)地址,還要指定端口號(hào)。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c:包含的頭文件是從刪除的GenericApp.c文件復(fù)制得到的。GENERICAPP_MAX_CLUSTERS是在GenericApp.h文件中定義的宏,這主要是為了跟協(xié)議棧里面數(shù)據(jù)的定義格式保持一致,代碼中的常量都是以宏定義的形式實(shí)現(xiàn)的。第一個(gè)zigbee實(shí)驗(yàn)-
Coordinator.c
第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c上述代碼定義了三個(gè)變量,一個(gè)是節(jié)點(diǎn)描述符GGenericApp_epDesc,一個(gè)是任務(wù)優(yōu)先級(jí)GenencApp_TaskID,最后一個(gè)是數(shù)據(jù)發(fā)送序列號(hào)GenericApp_TransID。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c上述代碼聲明了一個(gè)消息處理函數(shù)GenericApp_MessageMSGCB。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c第36行,初始化了任務(wù)優(yōu)先級(jí)(任務(wù)優(yōu)先級(jí)由協(xié)議棧的操作系統(tǒng)OSAL分配)。第37行,將發(fā)送數(shù)據(jù)包的序號(hào)初始化為0,在ZigBee協(xié)議棧中,每發(fā)送一個(gè)數(shù)據(jù)包,該發(fā)送序號(hào)自動(dòng)加1(協(xié)議棧里面的數(shù)據(jù)發(fā)送函數(shù)會(huì)自動(dòng)完成該功能),因此,在接收端可以查看接收數(shù)據(jù)包的序號(hào)來(lái)計(jì)算丟包率。第39—43行,對(duì)節(jié)點(diǎn)描述符進(jìn)行的初始化,上述初始化格式較為固定,一般不需要修改。第44行,使用afRegister函數(shù)將節(jié)點(diǎn)描述符進(jìn)行注冊(cè),只有注冊(cè)以后,才可以使用OSAL提供的系統(tǒng)服務(wù)。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c需要修改的代碼是第58行,讀者可以修改該函數(shù)的實(shí)現(xiàn)形式,但是其功能基本都是完成對(duì)接收數(shù)據(jù)的處理。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c第79行,將收到的數(shù)據(jù)拷貝到緩沖區(qū)buf中。第80行,判斷接收到的數(shù)據(jù)是不是“ChinaSofti”,這里是選擇性判斷了4個(gè)字符。如果是則執(zhí)行第82行,使LED紅燈閃爍2次。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c到此為止,協(xié)調(diào)器的編程已經(jīng)基本結(jié)束,下面回憶一下上述代碼所做的基本工作。(1)刪除了協(xié)議棧中的GenericApp.c文件,然后添加了兩個(gè)文件:Coordinator.c和Enddevice.c。(2)給出了Coordinator.c的代碼,并給出了部分注釋,其中Coordinator.c文件中很多代碼格式是固定的,讀者只需要熟悉這些代碼格式即可。第一個(gè)zigbee實(shí)驗(yàn)-Coordinator.c節(jié)點(diǎn)描述符GenericApp_epDesc,任務(wù)優(yōu)先級(jí)GenericApp_TaskID,保存節(jié)點(diǎn)狀態(tài)的變量GenericApp_NwkState,數(shù)據(jù)發(fā)送序列號(hào)GenericApp_TransID,最后一個(gè)是數(shù)據(jù)發(fā)送目的地址的變量GenericApp_DstAddr。第一個(gè)zigbee實(shí)驗(yàn)-Enddevice.c聲明了數(shù)據(jù)發(fā)送函數(shù)GenericApp_SendTheMessage。第39行,將設(shè)備狀態(tài)初始化為DEV_INIT,表示該節(jié)點(diǎn)沒(méi)有連接到網(wǎng)絡(luò)。第42行,將發(fā)送地址模式設(shè)置為單播(Addr16Bit表示單播)。第44行,協(xié)調(diào)器的網(wǎng)絡(luò)地址為0x0000;第51行,使用afRegister函數(shù)將節(jié)點(diǎn)描述符進(jìn)行注冊(cè)。第一個(gè)zigbee實(shí)驗(yàn)-Enddevice.c第一個(gè)zigbee實(shí)驗(yàn)-Enddevice.c第64行,讀取節(jié)點(diǎn)的設(shè)備類型。第65行,對(duì)節(jié)點(diǎn)設(shè)備類型進(jìn)行判斷,如果是終端節(jié)點(diǎn)(設(shè)備類型碼為DEVE_END_DEVICE),再執(zhí)行第67行代碼,定時(shí)5s后啟動(dòng)GENERICAPP_SEND_MSG_EVT事件以發(fā)送數(shù)據(jù)。第83行,無(wú)線數(shù)據(jù)發(fā)送函數(shù)。第一個(gè)zigbee實(shí)驗(yàn)-Enddevice.c第93行,定義了一個(gè)數(shù)組theMessageData用于存放要發(fā)送的數(shù)據(jù)。第95行,調(diào)用數(shù)據(jù)發(fā)送函數(shù)AF_DataRequest進(jìn)行無(wú)線數(shù)據(jù)的發(fā)送。第一個(gè)zigbee實(shí)驗(yàn)-Enddevice.c此時(shí)分別編譯、下載程序到Zigbee節(jié)點(diǎn),實(shí)現(xiàn)預(yù)定功能!!但編譯的時(shí)候注意:第一個(gè)zigbee實(shí)驗(yàn)協(xié)調(diào)器上電后,會(huì)按照編譯時(shí)給定的參數(shù),選擇合適的信道、合適的網(wǎng)絡(luò)號(hào),建立ZigBee無(wú)線網(wǎng)絡(luò),這部分內(nèi)容讀者不需要寫(xiě)代碼實(shí)現(xiàn),ZigBee協(xié)議棧已經(jīng)實(shí)現(xiàn)了。終端節(jié)點(diǎn)則是加入網(wǎng)絡(luò)后定期發(fā)送數(shù)據(jù)。流程圖與協(xié)調(diào)器類似。終端節(jié)點(diǎn)上電后,會(huì)進(jìn)行硬件電路的初始化,然后搜索是否有ZigBee無(wú)線網(wǎng)絡(luò),如果有ZigBee無(wú)線網(wǎng)絡(luò)再自動(dòng)加入(這是最簡(jiǎn)單的情況,當(dāng)然可以控制節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)要符合編譯時(shí)確定的網(wǎng)絡(luò)號(hào)等),然后發(fā)送數(shù)據(jù)到協(xié)調(diào)器,最后使LED閃爍。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理
在zigbee協(xié)議棧中進(jìn)行數(shù)據(jù)發(fā)送可以調(diào)用AF_Dataquest函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)調(diào)用協(xié)議棧里面與硬件相關(guān)的函數(shù)最終將數(shù)據(jù)通過(guò)天線發(fā)送出去,這里面涉及對(duì)射頻模塊的操作,例如:打開(kāi)發(fā)射機(jī),調(diào)整發(fā)射機(jī)的發(fā)送功率等內(nèi)容,這些部分協(xié)議棧已經(jīng)實(shí)現(xiàn)了,用戶不需自己寫(xiě)代碼去實(shí)現(xiàn),只需要掌握AF_DataRequest函數(shù)的使用方法即可。下面簡(jiǎn)要講解一下AF_DataRequest數(shù)據(jù)發(fā)送函數(shù)中各個(gè)參數(shù)的具體含義。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)發(fā)送在TI提供的Zstack協(xié)議棧中,數(shù)據(jù)發(fā)送函數(shù)定義如下:
afStatus_tAF_DataRequest( afAddrType_t*dstAddr, endPointDesc_t*srcEP,
uint16cID,uint16len, uint8*buf, uint8*transID, uint8options, uint8radius)最核心的兩個(gè)參數(shù):·uint16len-----發(fā)送數(shù)據(jù)的長(zhǎng)度;·uint8*buf-----指向存放發(fā)送數(shù)據(jù)的緩沖區(qū)的指針。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)發(fā)送①afAddrType_t*dstAddr----該參數(shù)包含了目的節(jié)點(diǎn)的網(wǎng)絡(luò)地址以及發(fā)送數(shù)據(jù)的格式,如廣播、單播或多播等。②endPointDesc_t*srcEP----在ZigBee無(wú)線網(wǎng)絡(luò)中,通過(guò)網(wǎng)絡(luò)地址可以找到某個(gè)具體的節(jié)點(diǎn),如協(xié)調(diào)器的網(wǎng)絡(luò)地址是0x0000,但是具體到某一個(gè)節(jié)點(diǎn),還有不同的端口(endpoint),每個(gè)節(jié)點(diǎn)上最多支持240個(gè)端口(endpoint)。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)發(fā)送③uint16cID----這個(gè)參數(shù)描述的是命令號(hào),在ZigBee協(xié)議里的命令主要用來(lái)標(biāo)識(shí)不同的控制操作,不問(wèn)的命令號(hào)代表了不同的控制命令,如終端節(jié)點(diǎn)在發(fā)送數(shù)據(jù)時(shí)使用的命令I(lǐng)D是GENERICAPP_CLUSTERID,它的值為1。④uint16len----該參數(shù)標(biāo)志了發(fā)送數(shù)據(jù)的長(zhǎng)度。⑤uint8*buf----該參數(shù)是指向發(fā)送數(shù)據(jù)緩沖區(qū)的指針。發(fā)送數(shù)據(jù)函數(shù)會(huì)從該指針指向的地址按照指定的長(zhǎng)度取得發(fā)送數(shù)據(jù)進(jìn)行發(fā)送。⑥uint8*transID----該參數(shù)是一個(gè)指向發(fā)送序號(hào)的指針,每次發(fā)送數(shù)據(jù)時(shí),發(fā)送序號(hào)會(huì)自動(dòng)加1(協(xié)議棧里面實(shí)現(xiàn)的該功能),在接收端可以通過(guò)發(fā)送序號(hào)來(lái)判斷是否丟包,同時(shí)可以計(jì)算出丟包率。⑦uint8options和uint8radius----這兩個(gè)參數(shù)取默認(rèn)值即可Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)發(fā)送當(dāng)協(xié)調(diào)器接收到數(shù)據(jù)后,操作系統(tǒng)會(huì)將該數(shù)據(jù)封裝成一個(gè)消息,然后放入消息隊(duì)列中,每個(gè)消息都有自己的消息ID,標(biāo)志接收到新數(shù)據(jù)的消息的ID是AF_INCOMING_MSG_CMD,其中AF_INCOMING_MSG的值是0x1a,用戶不可更改,ZigBee協(xié)議棧中AF_INCOMlNG_MSG_CMD宏的定義如下(在Zcomdef.h文件中定義的):#defineAF_INCOMING_MSG_CMD0x1AZDO_STATE_CHANGE當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),會(huì)產(chǎn)生該事件,如節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),就可以通過(guò)判斷該事件來(lái)決定何時(shí)向協(xié)調(diào)器發(fā)送數(shù)據(jù)包。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)接收首先使用osal_msg_receive函數(shù)從消息隊(duì)列中接收一個(gè)消息,然后使用switch-case語(yǔ)句對(duì)消息類型進(jìn)行判斷(判斷消息ID),如果消息ID是AF_INCOMlNG_MSG_CMD則進(jìn)行相應(yīng)的數(shù)據(jù)處理。Zigbee數(shù)據(jù)通訊實(shí)驗(yàn)原理—數(shù)據(jù)接收1.4Zigbee組網(wǎng)過(guò)程1個(gè)是64位的IEEE地址,通常也叫作MAC地址或者擴(kuò)展地址(Extendedaddress),另一個(gè)是16位的網(wǎng)絡(luò)地址,也叫做邏輯地址(Logicaladdress)或者短地址64位長(zhǎng)地址是全球唯一的地址,并且終身分配給設(shè)備。這個(gè)地址可由制造商設(shè)定或者在安裝的時(shí)候設(shè)置,是由IEEE來(lái)提供當(dāng)設(shè)備加入ZigBee網(wǎng)絡(luò)被分配一個(gè)短地址,在其所在的網(wǎng)絡(luò)中是唯一的。這個(gè)地址主要用來(lái)在網(wǎng)絡(luò)中辨識(shí)設(shè)備,數(shù)據(jù)傳輸和數(shù)據(jù)包路由等一個(gè)節(jié)點(diǎn)是一個(gè)設(shè)備,有一個(gè)射頻端,一個(gè)64位IEEE地址,一個(gè)16位網(wǎng)絡(luò)地址IEEE802.15.4網(wǎng)絡(luò)的建立過(guò)程首先,每個(gè)設(shè)備的協(xié)議棧必須要對(duì)其PHY和MAC層初始化每個(gè)網(wǎng)絡(luò)必須有一個(gè)也只能有一個(gè)PANCo-ordinatorPANID作為網(wǎng)絡(luò)標(biāo)識(shí),可以被人為的預(yù)定義除64位IEEEMAC地址外,還須分配一個(gè)16位的短地址例如Zigbee技術(shù)選擇2.4GHz設(shè)備以Co-ordinator的模式啟動(dòng),然后就開(kāi)放請(qǐng)求應(yīng)答有可以利用的Co-ordinator,設(shè)備就可以申請(qǐng)加入網(wǎng)絡(luò)設(shè)備被Co-ordinator接受,將獲得短地址作為標(biāo)識(shí),便可傳輸數(shù)據(jù)
組建一個(gè)完整的Zigbee網(wǎng)絡(luò)分為兩步:第一步是協(xié)調(diào)器初始化一個(gè)網(wǎng)絡(luò);第二步是路由器或終端加入網(wǎng)絡(luò)。加入網(wǎng)絡(luò)又有兩種方法,一種是子設(shè)備通過(guò)使用MAC層的連接進(jìn)程加入網(wǎng)絡(luò),另一種是子設(shè)備通過(guò)與一個(gè)先前指定的父設(shè)備直接加入網(wǎng)絡(luò)。
1.4Zigbee組網(wǎng)過(guò)程協(xié)調(diào)器初始化網(wǎng)絡(luò)1、
檢測(cè)協(xié)調(diào)器建立一個(gè)新的網(wǎng)絡(luò)是通過(guò)原語(yǔ)NLME_NETWORK_FORMATION.request發(fā)起的,但發(fā)起NLME_NETWORK_FORMATION.request原語(yǔ)的節(jié)點(diǎn)必須具備兩個(gè)條件,一是這個(gè)節(jié)點(diǎn)具有ZigBee協(xié)調(diào)器功能,二是這個(gè)節(jié)點(diǎn)沒(méi)有加入到其它網(wǎng)絡(luò)中。任何不滿足這兩個(gè)條件的節(jié)點(diǎn)發(fā)起建立一個(gè)新網(wǎng)絡(luò)的進(jìn)程都會(huì)被網(wǎng)絡(luò)層管理實(shí)體終止,網(wǎng)絡(luò)層管理實(shí)體將通過(guò)參數(shù)值為INVALID_REQUEST的NLME_NETWORK_FORMATION.confirm的原語(yǔ)來(lái)通知上層這是一個(gè)非法請(qǐng)求。協(xié)調(diào)器初始化網(wǎng)絡(luò)2、
信道掃描協(xié)調(diào)器發(fā)起建立一個(gè)新網(wǎng)絡(luò)的進(jìn)程后,網(wǎng)絡(luò)層管理實(shí)體將請(qǐng)求MAC子層對(duì)信道進(jìn)行掃描。信道掃描包括能量掃描和主動(dòng)掃描兩個(gè)過(guò)程。首先對(duì)用戶指定的信道或物理層所有默認(rèn)的信道進(jìn)行一個(gè)能量掃描,以排除干擾。網(wǎng)絡(luò)層管理實(shí)體將根據(jù)信道能量測(cè)量值對(duì)信道進(jìn)行一個(gè)遞增排序,并且拋棄能量值超過(guò)了可允許能量值的信道,保留可允許能量值內(nèi)的信道等待進(jìn)一步處理。接著在可允許能量值內(nèi)的信道執(zhí)行主動(dòng)掃描,網(wǎng)絡(luò)層管理實(shí)體通過(guò)審查返回的PAN描述符列表,確定一個(gè)用于建立新網(wǎng)絡(luò)的信道,該信道中現(xiàn)有的網(wǎng)絡(luò)數(shù)目是最少的,網(wǎng)絡(luò)層管理實(shí)體將優(yōu)先選擇沒(méi)有網(wǎng)絡(luò)的信道。如果沒(méi)有掃描到一個(gè)合適的信道,進(jìn)程將被終止,網(wǎng)絡(luò)層管理實(shí)體通過(guò)參數(shù)值為STARTUP_FAILURE的NLME_NETWORK_FORMATION.confirm的原語(yǔ)來(lái)通知上層初始化啟動(dòng)網(wǎng)絡(luò)失敗。協(xié)調(diào)器初始化網(wǎng)絡(luò)3、配置網(wǎng)絡(luò)參數(shù)如果掃描到一個(gè)合適的信道,網(wǎng)絡(luò)層管理實(shí)體將為新網(wǎng)絡(luò)選擇一個(gè)PAN描述符,該P(yáng)AN描述符可以是由設(shè)備隨機(jī)選擇的,也可以是在NLME_NETWORK_FORMATION.request里指定的,但必須滿足PAN描述符小于或等于0x3fff,不等于0xffff,并且在所選信道內(nèi)是唯一的PAN描述符,沒(méi)有任何其它PAN描述符與之是重復(fù)的。如果沒(méi)有符合條件的PAN描述符可選擇,進(jìn)程將被終止,網(wǎng)絡(luò)層管理實(shí)體通過(guò)參數(shù)值為STARTUP_FAILURE的NLME_NETWORK_FORMATION.confirm的原語(yǔ)來(lái)通知上層初始化啟動(dòng)網(wǎng)絡(luò)失敗。確定好PAN描述符后,網(wǎng)絡(luò)層管理實(shí)體為協(xié)調(diào)器選擇16位網(wǎng)絡(luò)地址0x0000,MAC子層的macPANID參數(shù)將被設(shè)置為PAN描述符的值,macShortAddressPIB參數(shù)設(shè)置為協(xié)調(diào)器的網(wǎng)絡(luò)地址。協(xié)調(diào)器初始化網(wǎng)絡(luò)4、運(yùn)行新網(wǎng)絡(luò)網(wǎng)絡(luò)參數(shù)配置好后,網(wǎng)絡(luò)層管理實(shí)體通過(guò)MLME_START.request原語(yǔ)通知MAC層啟動(dòng)并運(yùn)行新網(wǎng)絡(luò),啟動(dòng)狀態(tài)通過(guò)MLME_START.confirm原語(yǔ)通知網(wǎng)絡(luò)層,網(wǎng)絡(luò)層管理實(shí)體再通過(guò)NLME_NETWORK_FORMATION.confirm原語(yǔ)通知上層協(xié)調(diào)器初始化的狀態(tài)。協(xié)調(diào)器初始化網(wǎng)絡(luò)5、允許設(shè)備加入網(wǎng)絡(luò)只有ZigBee協(xié)調(diào)器或路由器才能通過(guò)NLME_PERMIT_JOINING.request原語(yǔ)來(lái)設(shè)置節(jié)點(diǎn)處于允許設(shè)備加入網(wǎng)絡(luò)的狀態(tài)。當(dāng)發(fā)起這個(gè)進(jìn)程時(shí),如果PermitDuration參數(shù)值為0x00,網(wǎng)絡(luò)層管理實(shí)體將通過(guò)MLME_SET.request原語(yǔ)把MAC層的macAssociationPermitPIB屬性設(shè)置為FALSE,禁止節(jié)點(diǎn)處于允許設(shè)備加入網(wǎng)絡(luò)的狀態(tài);如果PermitDuration參數(shù)值介于0x01和0xfe之間,網(wǎng)絡(luò)層管理實(shí)體將通過(guò)MLME_SET.request原語(yǔ)把macAssociationPermitPIB屬性設(shè)置為T(mén)RUE,并開(kāi)啟一個(gè)定時(shí)器,定時(shí)時(shí)間為PermitDuration,在這段時(shí)間內(nèi)節(jié)點(diǎn)處于允許設(shè)備加入網(wǎng)絡(luò)的狀態(tài),定時(shí)時(shí)間結(jié)束,網(wǎng)絡(luò)層管理實(shí)體把MAC層的macAssociationPermitPIB屬性設(shè)置為FALSE;協(xié)調(diào)器初始化網(wǎng)絡(luò)5、允許設(shè)備加入網(wǎng)絡(luò)如果PermitDuration參數(shù)的值為0xff,網(wǎng)絡(luò)層管理實(shí)體將通過(guò)MLME_SET.request原語(yǔ)把macAssociationPermitPIB屬性設(shè)置為T(mén)RUE,表示節(jié)點(diǎn)無(wú)限期處于允許設(shè)備加入網(wǎng)絡(luò)的狀態(tài),除非有另外一個(gè)NLME_PERMIT_JOINING.request原語(yǔ)被發(fā)出。
節(jié)點(diǎn)加入網(wǎng)絡(luò)一個(gè)節(jié)點(diǎn)加入網(wǎng)絡(luò)有兩種方法,一種是通過(guò)使用MAC層關(guān)聯(lián)進(jìn)程加入網(wǎng)絡(luò),另一種是通過(guò)與先前指定父節(jié)點(diǎn)連接而加入網(wǎng)絡(luò)。1、
子節(jié)點(diǎn)發(fā)起信道掃描子節(jié)點(diǎn)通過(guò)NLME_NETWORK_DISCOVERY.request原語(yǔ)發(fā)起加入網(wǎng)絡(luò)的進(jìn)程,網(wǎng)絡(luò)層接收到這個(gè)原語(yǔ)后通過(guò)發(fā)起MLME_SCAN.request原語(yǔ)請(qǐng)求MAC層執(zhí)行一個(gè)主動(dòng)掃描或被動(dòng)掃描以接收包含了PAN標(biāo)志符的信標(biāo)幀,掃描的信道以及每個(gè)信道的掃描時(shí)間分別由NLME_NETWORK_DISCOVERY.request原語(yǔ)的參數(shù)ScanChannels和ScanDuration決定。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)2、
子節(jié)點(diǎn)存儲(chǔ)各PAN信息MAC層通過(guò)MLME_BEACONNOTIFY.indication原語(yǔ)將掃描中接收到的信標(biāo)幀信息發(fā)送到網(wǎng)絡(luò)層管理實(shí)體,信標(biāo)幀信息包括信標(biāo)設(shè)備的地址、是否允許連接以及信標(biāo)凈載荷。如果信標(biāo)凈載荷域里的協(xié)議ID域與自己的協(xié)議ID相同,子設(shè)備就將每個(gè)匹配的信標(biāo)幀相關(guān)信息保存在鄰居表中。信道掃描完成后,MAC層通過(guò)MLME_SCAN.confirm原語(yǔ)通知網(wǎng)絡(luò)層管理實(shí)體,網(wǎng)絡(luò)層再通過(guò)NLME_NETWORK_DISCOVERY.confirm原語(yǔ)通知上層,該原語(yǔ)包含了每個(gè)掃描到的網(wǎng)絡(luò)的描述符,以便上層選擇一個(gè)網(wǎng)絡(luò)加入。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)3、
子節(jié)點(diǎn)選擇PAN如果上層需要發(fā)現(xiàn)更多網(wǎng)絡(luò),則可以重新執(zhí)行網(wǎng)絡(luò)發(fā)現(xiàn),如果不需要,則通過(guò)NLME_JOIN.request原語(yǔ)從被掃描到的網(wǎng)絡(luò)中選擇一個(gè)網(wǎng)絡(luò)加入。參數(shù)PANID設(shè)置為被選擇網(wǎng)絡(luò)的PAN標(biāo)識(shí)符。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)4、
子節(jié)點(diǎn)選擇父節(jié)點(diǎn)一個(gè)合適的父節(jié)點(diǎn)需要滿足三個(gè)條件:匹配的PAN標(biāo)志符、鏈路成本最大為3、允許連接,為了尋找合適的父節(jié)點(diǎn),NLME_JOIN.request原語(yǔ)請(qǐng)求網(wǎng)絡(luò)層搜索它的鄰居表,如果鄰居表中不存在這樣的父節(jié)點(diǎn)則通知上層,如果存在多個(gè)合適的父節(jié)點(diǎn)則選擇具有最小深度的父節(jié)點(diǎn),如果存在多個(gè)具有最小深度的合適的父節(jié)點(diǎn)則隨機(jī)選擇一個(gè)父節(jié)點(diǎn)。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)5、
子節(jié)點(diǎn)請(qǐng)求MAC關(guān)聯(lián)確定好合適的父節(jié)點(diǎn)后,網(wǎng)絡(luò)層管理實(shí)體發(fā)送一個(gè)MLME_ASSOCIATE.request原語(yǔ)到MAC層,地址參數(shù)設(shè)置為已選擇的父節(jié)點(diǎn)的地址,嘗試通過(guò)父節(jié)點(diǎn)加入網(wǎng)絡(luò)。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)6、
父節(jié)點(diǎn)響應(yīng)MAC關(guān)聯(lián)父節(jié)點(diǎn)通過(guò)MLME_ASSOCIATE.indication原語(yǔ)通知網(wǎng)絡(luò)層管理實(shí)體一個(gè)節(jié)點(diǎn)正嘗試加入網(wǎng)絡(luò),網(wǎng)絡(luò)層管理實(shí)體將搜索它的鄰居表查看是否有一個(gè)與嘗試加入節(jié)點(diǎn)相匹配的64位擴(kuò)展地址,以便確定該節(jié)點(diǎn)是否已經(jīng)存在于它的網(wǎng)絡(luò)中了。如果有匹配的擴(kuò)展地址,網(wǎng)絡(luò)層管理實(shí)體獲取相應(yīng)的16位網(wǎng)絡(luò)地址并發(fā)送一個(gè)連接響應(yīng)到MAC層。如果沒(méi)有匹配的擴(kuò)展地址,在父節(jié)點(diǎn)的地址分配空間還沒(méi)耗盡的條件下網(wǎng)絡(luò)層管理實(shí)體將為嘗試加入的節(jié)點(diǎn)分配一個(gè)16位網(wǎng)絡(luò)地址。如果父節(jié)點(diǎn)地址分配空間耗盡,將拒絕節(jié)點(diǎn)加入請(qǐng)求。當(dāng)同意節(jié)點(diǎn)加入網(wǎng)絡(luò)的請(qǐng)求后,父節(jié)點(diǎn)網(wǎng)絡(luò)層管理實(shí)體將使用加入節(jié)點(diǎn)的信息在鄰居表中產(chǎn)生一個(gè)新的項(xiàng),并通過(guò)MLME_ASSOCIATE.request原語(yǔ)通知MAC層連接成功。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)7、
子節(jié)點(diǎn)響應(yīng)連接成功如果子節(jié)點(diǎn)接收到父節(jié)點(diǎn)發(fā)送的連接成功信息,發(fā)送一個(gè)傳輸成功響應(yīng)信息以確認(rèn)接收,然后子節(jié)點(diǎn)MAC層將通過(guò)MLME_ASSOCIATE.confirm原語(yǔ)通知網(wǎng)絡(luò)層,原語(yǔ)包含了父節(jié)點(diǎn)為子節(jié)點(diǎn)分配的網(wǎng)內(nèi)唯一的16位網(wǎng)絡(luò)地址,然后網(wǎng)絡(luò)層管理實(shí)體設(shè)置鄰居表相應(yīng)鄰居設(shè)備為它的父設(shè)備,并通過(guò)NLME_JOIN.confirm原語(yǔ)通知上層節(jié)點(diǎn)成功加入網(wǎng)絡(luò)。8、
父節(jié)點(diǎn)響應(yīng)連接成功父節(jié)點(diǎn)接收到子節(jié)點(diǎn)的傳輸成功響應(yīng)信息后,將通過(guò)MLME_COMM_STATUS.indication原語(yǔ)將傳輸成功的響應(yīng)狀態(tài)發(fā)送給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層管理實(shí)體通過(guò)NLME_JOIN.indication原語(yǔ)通知上層一個(gè)節(jié)點(diǎn)已經(jīng)加入了網(wǎng)絡(luò)。
1)通過(guò)MAC層關(guān)聯(lián)加入網(wǎng)絡(luò)1、
父節(jié)點(diǎn)處理子設(shè)備直接加入網(wǎng)絡(luò)父節(jié)點(diǎn)通過(guò)NLME_DIRECT_JOIN.request原語(yǔ)開(kāi)始處理一個(gè)設(shè)備直接加入網(wǎng)絡(luò)的進(jìn)程。父節(jié)點(diǎn)網(wǎng)絡(luò)層管理實(shí)體將首先搜索它的鄰居表查看是否存在一個(gè)與子節(jié)點(diǎn)相匹配的64位擴(kuò)展地址,以便確定該節(jié)點(diǎn)是否已經(jīng)存在于它的網(wǎng)絡(luò)中了。如果存在匹配的擴(kuò)展地址,網(wǎng)絡(luò)層管理實(shí)體將終止這個(gè)進(jìn)程并告訴上層該設(shè)備已經(jīng)存在于設(shè)備列表中了。如果不存在匹配的擴(kuò)展地址,在父節(jié)點(diǎn)的地址分配空間還沒(méi)耗盡的條件下網(wǎng)絡(luò)層管理實(shí)體將為子節(jié)點(diǎn)分配一個(gè)16位網(wǎng)絡(luò)地址,并使用子節(jié)點(diǎn)的信息在鄰居表中產(chǎn)生一個(gè)新的項(xiàng)。然后通過(guò)NLME_DIRECT_JOIN.confirm原語(yǔ)上層設(shè)備已經(jīng)加入網(wǎng)絡(luò)。
2)通過(guò)與先前指定父節(jié)點(diǎn)連接加入網(wǎng)絡(luò)子節(jié)點(diǎn)通過(guò)與指定的父節(jié)點(diǎn)直接連接加入網(wǎng)絡(luò),這個(gè)時(shí)候父節(jié)點(diǎn)預(yù)先配置了
子節(jié)點(diǎn)的64位擴(kuò)展地址。2、
子節(jié)點(diǎn)連接父節(jié)點(diǎn)確認(rèn)父子關(guān)系子節(jié)點(diǎn)通過(guò)NLME_JOIN.request原語(yǔ)發(fā)起孤立掃描來(lái)建立它與父節(jié)點(diǎn)之間的關(guān)系。這時(shí)網(wǎng)絡(luò)層管理實(shí)體將通過(guò)MLME_SCAN.request請(qǐng)求MAC層對(duì)物理層所默認(rèn)的所有信道進(jìn)行孤立掃描,如果掃描到父設(shè)備,MAC層通過(guò)MLME_SCAN.confirm原語(yǔ)通知網(wǎng)絡(luò)層,網(wǎng)絡(luò)層管理實(shí)體再通過(guò)NLME_JOIN.confirm原語(yǔ)通知上層節(jié)點(diǎn)請(qǐng)求加入成功,即與父節(jié)點(diǎn)建立了父子關(guān)系,可以互相通信。
2)通過(guò)與先前指定父節(jié)點(diǎn)連接加入網(wǎng)絡(luò)子節(jié)點(diǎn)通過(guò)與指定的父節(jié)點(diǎn)直接連接加入網(wǎng)絡(luò),這個(gè)時(shí)候父節(jié)點(diǎn)預(yù)先配置了
子節(jié)點(diǎn)的64位擴(kuò)展地址。主要內(nèi)容3.1Zigbee簡(jiǎn)介3.2Zigbee開(kāi)發(fā)環(huán)境及調(diào)試3.3Zigbee硬件簡(jiǎn)介3.4Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)基礎(chǔ)3.5Zigbee無(wú)線傳感器網(wǎng)絡(luò)高級(jí)開(kāi)發(fā)3.6Zigbee無(wú)線傳感器網(wǎng)絡(luò)管理3.7Zigbee無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)實(shí)例應(yīng)用層應(yīng)用匯聚層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層LLCMAC物理層應(yīng)用層定義了各種類型的應(yīng)用業(yè)務(wù),是協(xié)議棧的最上層用戶。應(yīng)用匯聚層負(fù)責(zé)把不同的應(yīng)用映射到ZigBee網(wǎng)絡(luò)層上,主要有安全與鑒權(quán)、多個(gè)業(yè)務(wù)數(shù)據(jù)流的匯聚、設(shè)備發(fā)現(xiàn)和業(yè)務(wù)發(fā)現(xiàn)。網(wǎng)絡(luò)層的功能包括拓?fù)涔芾?、MAC管理、路由管理和安全管理。1.1物理服務(wù)規(guī)范IEEE802.15.4定義了2.4GHz和868/915三個(gè)物理層標(biāo)準(zhǔn),均采用了DSSS(DirectSequenceSpreadSpectrum,直接序列擴(kuò)頻,DSSS)技術(shù),采用相同的數(shù)據(jù)包格式,但他們的工作頻率、調(diào)制技術(shù)、擴(kuò)頻碼片長(zhǎng)度和傳輸速率有所不同。物理層提供了MAC和物理信道之間的接口,物理層的管理實(shí)體提供了用于調(diào)用物理層管理功能的管理服務(wù)接口,物理層的參考模型如圖5.4所示。PLME(PhysicalLayerManagementEntity,PLME)為管理實(shí)體;PD-SAP(PhysicalDataServiceAccessPoint,PD-SAP)為物理層數(shù)據(jù)服務(wù)接入點(diǎn);PIB(PANInformationBase)為物理層的個(gè)域網(wǎng)信息庫(kù)。物理層提供了物理層數(shù)據(jù)服務(wù)和物理層管理服務(wù)。物理層數(shù)據(jù)服務(wù)是由PD-SAP(物理層數(shù)據(jù)服務(wù)接入點(diǎn))提供的,物理層管理服務(wù)是由PLME中的PD-SAP提供的。物理層數(shù)據(jù)服務(wù)從無(wú)線信道上收發(fā)數(shù)據(jù),通過(guò)PD-SAP實(shí)現(xiàn)對(duì)等MAC層實(shí)體間的MPDU(MACProtocolDataUnit,MPDU)傳輸。
物理層管理服務(wù)維護(hù)物理層相關(guān)數(shù)據(jù)組成的數(shù)據(jù)庫(kù),通過(guò)PLME-SAP在MLME(MACLayerManagementEntity,MLME)和管理實(shí)體PLME之間的傳輸管理命令。1.2物理層幀結(jié)構(gòu)IEEE802.15.4物理層的幀結(jié)構(gòu)如圖5.5所示,由4個(gè)字段組成。第一個(gè)字段由4個(gè)字節(jié)組成前導(dǎo)碼,前導(dǎo)碼由32個(gè)“0”組成,用于收發(fā)器的通信同步。第二個(gè)字段為幀的起始分割字段,由1個(gè)字節(jié)組成,其固定為0xA7,作為幀開(kāi)始的標(biāo)志。第三個(gè)字段為幀長(zhǎng)度字段,由1個(gè)字節(jié)組成,字節(jié)的低7位表示幀的長(zhǎng)度,其余1為保留,幀的長(zhǎng)度表示幀的負(fù)載長(zhǎng)度,一般不超過(guò)127個(gè)字節(jié)。第四個(gè)字段為數(shù)據(jù)字段,它的長(zhǎng)度可變,主要用來(lái)承載MAC幀。幀起始分割符SFD由8bit組成,表示同步結(jié)束,數(shù)據(jù)包開(kāi)始傳輸。SFD(Start-of-FrameDelimiter,SFD)與前導(dǎo)碼構(gòu)成同步頭。幀長(zhǎng)度由7bit組成,表示物理數(shù)據(jù)單元PSDU(PHYServiceDataUnit)的字節(jié)數(shù)。PSDU域是可變長(zhǎng)度的,它攜帶了PHY數(shù)據(jù)包的數(shù)據(jù)。4字節(jié)1字節(jié)1字節(jié)可變長(zhǎng)度前導(dǎo)碼SFD幀長(zhǎng)7bit保留1bitPSDU同步頭物理幀頭PHY負(fù)載1.3MAC層的功能IEEE802.15.4MAC層提供了MAC層數(shù)據(jù)服務(wù)和MAC層數(shù)據(jù)管理兩種服務(wù)。這兩種服務(wù)為網(wǎng)絡(luò)層和物理層提供了一個(gè)接口。MAC層數(shù)據(jù)服務(wù)提供了數(shù)據(jù)通信功能,MPDU的接收和發(fā)送可通過(guò)物理層來(lái)進(jìn)行。MAC層數(shù)據(jù)管理服務(wù)提供了向高層訪問(wèn)的功能,通過(guò)MLME的SAP來(lái)訪問(wèn)高層。IEEE802.15.4主要完成聯(lián)合、分離、確認(rèn)幀傳送、信道訪問(wèn)機(jī)制、幀確認(rèn)、時(shí)隙管理和信令管理等功能。MAC層在處理物理層進(jìn)行訪問(wèn)時(shí),主要完成以下功能:協(xié)調(diào)器的網(wǎng)絡(luò)結(jié)點(diǎn)產(chǎn)生網(wǎng)絡(luò)信標(biāo)功能;完成信標(biāo)同步功能;支持個(gè)域網(wǎng)關(guān)聯(lián)和去關(guān)聯(lián)功能;支持結(jié)點(diǎn)安全規(guī)范功能;執(zhí)行信道接入的CSMA-CA機(jī)制;處理和維護(hù)時(shí)隙(GTS)機(jī)制;提供等MAC實(shí)體間的可靠連接。
無(wú)線傳感器網(wǎng)絡(luò)的信標(biāo)管理、信道接入機(jī)制、保證時(shí)隙(GTS)管理、幀確認(rèn)、確認(rèn)幀傳輸、節(jié)點(diǎn)接入和分離、信道接人控制、廣播信息管理的功能均在IEEE802.15.4的MAC層完成。1.4MAC層的服務(wù)規(guī)范可通過(guò)MAC層的兩個(gè)SAP分別訪問(wèn)IEEE802.15.4MAC層提供的MAC層數(shù)據(jù)服務(wù)和MAC層管理服務(wù)。
對(duì)于MAC層數(shù)據(jù)服務(wù),可通過(guò)MCPS-SAP(MCPS數(shù)據(jù)服務(wù)接入點(diǎn))進(jìn)行訪問(wèn)。網(wǎng)絡(luò)設(shè)備支持MCPS-DATA.Request原語(yǔ),請(qǐng)求從本地SSCS實(shí)體向另外一個(gè)對(duì)等的SSCS實(shí)體傳輸數(shù)據(jù)。
對(duì)于MAC層管理服務(wù),可通過(guò)MLME的E-SAP(管理實(shí)體服務(wù)接入點(diǎn))來(lái)訪問(wèn)。IEEE802.15.4的MAC層支持多種LLC標(biāo)準(zhǔn)。通過(guò)SSCS(ServiceSpecificConvergenceSub-layer,SSCS,業(yè)務(wù)相關(guān)匯聚子層)協(xié)議承載IEEE802.2類型的LLC標(biāo)準(zhǔn),可同時(shí)允許其他LLC標(biāo)準(zhǔn)直接使用IEEE802.15.4的MAC層服務(wù)。SSCS與PHY層間的接口是由PD-SAP和PLME-SAP兩個(gè)接入點(diǎn)的接口組成的。除了這些外部接口,MLME和MCPS之間還存在一個(gè)內(nèi)部接口,MLME可以通過(guò)該接口訪問(wèn)MAC數(shù)據(jù)服務(wù)。1.5MAC的幀結(jié)構(gòu)IEEE802.15.4的幀結(jié)構(gòu)是以保證在有噪聲的信道中可靠傳輸數(shù)據(jù)的基礎(chǔ)上盡量降低網(wǎng)絡(luò)的復(fù)雜度為原則而設(shè)計(jì)的。IEEE802.15.4的MAC層定義了4種基本幀結(jié)構(gòu),即:信標(biāo)幀,供協(xié)商者使用;數(shù)據(jù)幀,承載數(shù)據(jù)使用;響應(yīng)幀,用來(lái)確認(rèn)幀的可靠傳輸;命令幀,用來(lái)處理MAC對(duì)等實(shí)體間的數(shù)據(jù)傳輸控制MAC幀由幀頭MHR(MACHeader)、MAC負(fù)載和幀尾MFR(MACFooter)構(gòu)成。幀頭由控制信息、幀序列號(hào)和地址信息組成,MAC層負(fù)載的長(zhǎng)度可變,具體長(zhǎng)度由幀的類型來(lái)確定。幀尾是幀頭和負(fù)載數(shù)據(jù)的16位錯(cuò)誤檢測(cè)碼序列。通用的MAC幀結(jié)構(gòu)如圖5.6所示。2字節(jié)1字節(jié)2字節(jié)2字節(jié)可變2字節(jié)幀控制序列號(hào)目標(biāo)PAN標(biāo)識(shí)目標(biāo)地址源PAN標(biāo)識(shí)源地址幀負(fù)載FCS地址域MHRMAC負(fù)載MFR幀控制域占用2字節(jié)長(zhǎng)度,包含幀類型定義、尋址域以及其他控制標(biāo)志等;序列號(hào)域長(zhǎng)度為1字節(jié),為每個(gè)幀提供唯一的序列標(biāo)識(shí);目標(biāo)PAN標(biāo)識(shí)域占2字節(jié),內(nèi)容是指定接收方的唯一PAN標(biāo)識(shí);目標(biāo)地址域是指定接收方的地址;
源PAN標(biāo)識(shí)域占用2字節(jié),數(shù)據(jù)發(fā)送端地址域是發(fā)送幀的設(shè)備地址;幀負(fù)載域長(zhǎng)度可變,根據(jù)不同的幀類型其內(nèi)容各不相同;幀檢驗(yàn)序列域有16位長(zhǎng),包含一個(gè)16位的CRC循環(huán)冗余校驗(yàn)部分。(a)信標(biāo)幀信標(biāo)幀也是由三部分構(gòu)成。其中,負(fù)載部分是信標(biāo)幀的有效信息,由超幀描述字段、同步時(shí)限分配字段、待轉(zhuǎn)發(fā)數(shù)據(jù)目標(biāo)地址字段和信標(biāo)幀負(fù)載數(shù)據(jù),4個(gè)部分組成。信標(biāo)幀的結(jié)構(gòu)如圖5.7所示。2字節(jié)1字節(jié)4/102字節(jié)變長(zhǎng)
可變可變2字節(jié)幀控制序列號(hào)尋址域超幀規(guī)范GTS域待轉(zhuǎn)地址信標(biāo)負(fù)載FCSMHRMAC負(fù)載MFR信標(biāo)幀中超幀規(guī)范描述字段規(guī)定了這個(gè)超幀的持續(xù)時(shí)間,活躍部分持續(xù)時(shí)間以及競(jìng)爭(zhēng)訪問(wèn)持續(xù)時(shí)間等信息。
同步時(shí)隙分配字段(GTS字段)將無(wú)競(jìng)爭(zhēng)的時(shí)段劃分為若干個(gè)GTS,并把每個(gè)GTS分配給網(wǎng)絡(luò)中一個(gè)具體設(shè)備。
待轉(zhuǎn)發(fā)數(shù)據(jù)目標(biāo)地址列出了工作協(xié)同設(shè)備的設(shè)備地址。一個(gè)設(shè)備如果發(fā)現(xiàn)自己的地址出現(xiàn)在待轉(zhuǎn)發(fā)數(shù)據(jù)目標(biāo)地址字段里,即可確定協(xié)調(diào)器中存儲(chǔ)了該設(shè)備的數(shù)據(jù),于是就會(huì)向協(xié)調(diào)器發(fā)出請(qǐng)求發(fā)送數(shù)據(jù)的MAC命令幀。(b)數(shù)據(jù)幀數(shù)據(jù)幀用來(lái)傳輸上層發(fā)送到MAC層的數(shù)據(jù),數(shù)據(jù)幀的負(fù)載字段包括了上層需要傳送的數(shù)據(jù)。要傳輸?shù)臄?shù)據(jù)傳送到MAC層時(shí),成為MAC服務(wù)數(shù)據(jù)單元,在數(shù)據(jù)的起始和結(jié)尾部分分別附加了MHR頭信息和MFR信息后,就構(gòu)成了MAC幀。 MAC幀被傳送到物理層后,成為物理幀的負(fù)載PSDU。PSDU在物理層中,首部增加了同步信息SHR和幀長(zhǎng)度字段PHR字段后成為物理層幀。數(shù)據(jù)幀結(jié)構(gòu)如圖5.8所示。2字節(jié)1字節(jié)4/10變長(zhǎng)
2字節(jié)幀控制序列號(hào)尋址域數(shù)據(jù)負(fù)載FCSMHRMAC負(fù)載MFR(c)確認(rèn)幀如果結(jié)點(diǎn)設(shè)備收到的目的地址為自己的數(shù)據(jù)幀,并且?guī)目刂菩畔⒆侄蔚拇_認(rèn)請(qǐng)求被置1,此時(shí)結(jié)點(diǎn)設(shè)備需要回復(fù)一個(gè)確認(rèn)幀。確認(rèn)幀的序列號(hào)應(yīng)與被確認(rèn)幀的序列號(hào)相同,并且負(fù)載長(zhǎng)度應(yīng)為0。確認(rèn)幀緊接著被確認(rèn)的幀發(fā)送,不需要采用CSMA-CA機(jī)制競(jìng)爭(zhēng)信道。確認(rèn)幀的結(jié)構(gòu)如圖5.9所示。2字節(jié)1字節(jié)2字節(jié)幀控制序列號(hào)FCSMHRMFR數(shù)據(jù)接口及網(wǎng)絡(luò)層服務(wù)
ZigBee網(wǎng)絡(luò)層的各個(gè)組成部分和彼此間的接口關(guān)系如圖5.13所示。圖中NLDE-SAP為網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體的服務(wù)接入點(diǎn),NLME-SAP是網(wǎng)絡(luò)層管理實(shí)體的服務(wù)接入點(diǎn),MCPS-SAP是媒體接入控制公共部分子層的服務(wù)接人點(diǎn),MLME-SAP是MAC層管理實(shí)體的服務(wù)接入點(diǎn)。1.6網(wǎng)絡(luò)層結(jié)構(gòu)網(wǎng)絡(luò)層通過(guò)兩種服務(wù)接入點(diǎn)提供網(wǎng)絡(luò)層數(shù)據(jù)服務(wù)和網(wǎng)絡(luò)層管理服務(wù)。網(wǎng)絡(luò)層數(shù)據(jù)服務(wù)通過(guò)網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體服務(wù)接入點(diǎn)接入,網(wǎng)絡(luò)層管理服務(wù)通過(guò)網(wǎng)絡(luò)層管理實(shí)體服務(wù)接人點(diǎn)接入。網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體提供以下服務(wù):產(chǎn)生網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元(NPDU),網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體通過(guò)增加一個(gè)適當(dāng)?shù)膮f(xié)議頭從應(yīng)用支持層協(xié)議數(shù)據(jù)單元中生成網(wǎng)絡(luò)層的協(xié)議數(shù)據(jù)單元;指定傳輸拓?fù)渎酚?,網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體能夠發(fā)送一個(gè)網(wǎng)絡(luò)層的協(xié)議數(shù)據(jù)單元到一個(gè)數(shù)據(jù)傳輸?shù)哪繕?biāo)終端設(shè)備,目標(biāo)終端設(shè)備也可以是通信鏈路中的一個(gè)中間通信設(shè)備。網(wǎng)絡(luò)層管理實(shí)體提供如下服務(wù):配置新的設(shè)備。為保證設(shè)備正常工作的需要,設(shè)備應(yīng)具有足夠的堆棧,以滿足配置的需要。配置選項(xiàng)包括對(duì)一個(gè)ZigBee協(xié)調(diào)器和連接一個(gè)現(xiàn)有網(wǎng)絡(luò)設(shè)備的初始化操作;加入或離開(kāi)網(wǎng)絡(luò)。具有連接或者斷開(kāi)一個(gè)網(wǎng)絡(luò)的能力,以及為建立一個(gè)ZigBee協(xié)調(diào)器或者ZigBee路由器,具有要求設(shè)備同網(wǎng)絡(luò)斷開(kāi)的能力;ZigBee協(xié)調(diào)器和ZigBee路由器具有為新加入網(wǎng)絡(luò)的設(shè)備分配地址能力;具有發(fā)現(xiàn)、記錄和匯報(bào)相關(guān)的一跳鄰居設(shè)備信息的能力;具有發(fā)現(xiàn)和記錄有效地傳送信息的網(wǎng)絡(luò)路由的能力;具有控制設(shè)備接收機(jī)接收狀態(tài)的能力,即控制接收機(jī)什么時(shí)間接收、接收時(shí)間的長(zhǎng)短,以保證MAC層的同步或者正常接收等。網(wǎng)絡(luò)層幀格式ZigBee網(wǎng)絡(luò)層幀由幀報(bào)頭和可變長(zhǎng)有效載荷組成。網(wǎng)絡(luò)層幀報(bào)頭,包含幀控制、地址和序列信息;網(wǎng)絡(luò)層幀的可變長(zhǎng)有效載荷,包含幀類型所指定的信息。2字節(jié)2字節(jié)2字節(jié)0/1字節(jié)0/1字節(jié)變長(zhǎng)幀控制目的地址源地址廣播半徑域序列號(hào)幀負(fù)載路由幀網(wǎng)絡(luò)層幀報(bào)頭網(wǎng)絡(luò)負(fù)荷1.7zigbee協(xié)議棧構(gòu)成(1)TI公司開(kāi)發(fā)的Z-Stack是ZigBee協(xié)議棧,并且經(jīng)過(guò)了ZigBee聯(lián)盟的認(rèn)可而為全球眾多開(kāi)發(fā)商所廣泛采用(2)我們沒(méi)必要弄懂zigbee協(xié)議棧所有源代碼,所謂開(kāi)發(fā)或應(yīng)用主要是對(duì)主函數(shù)及操作系統(tǒng)的修改應(yīng)用,許多庫(kù)函數(shù)據(jù)項(xiàng)目要求而做修改即可)(3)TI公司的Z-Stack協(xié)議棧裝載在一個(gè)基于IAR開(kāi)發(fā)環(huán)境的工程里(4)Z-Stack采用操作系統(tǒng)的思想來(lái)構(gòu)建,采用事件輪循機(jī)制,當(dāng)各層初始化之后,系統(tǒng)進(jìn)入低功耗模式,當(dāng)事件發(fā)生時(shí),喚醒系統(tǒng),開(kāi)始進(jìn)入中斷處理事件,結(jié)束后繼續(xù)進(jìn)入低功耗模式如果同時(shí)有幾個(gè)事件發(fā)生,判斷優(yōu)先級(jí),逐次處理事件這種軟件構(gòu)架可以極大地降級(jí)系統(tǒng)的功耗1.7zigbee協(xié)議棧構(gòu)成(7)整個(gè)Z-stack的主要工作流程,大致分為系統(tǒng)啟動(dòng),驅(qū)動(dòng)初始化,OSAL初始化和啟動(dòng),進(jìn)入任務(wù)輪循幾個(gè)階段(5)Z-Stack實(shí)際上是幫助程序員方便開(kāi)發(fā)ZigBee的一套系(6)整個(gè)Z-Stack采用分層的軟件結(jié)構(gòu)硬件抽象層(HAL)提供各種硬件模塊的驅(qū)動(dòng),包括定時(shí)器Timer,通用I/O口GPIO,通用異步收發(fā)傳輸器UART,模數(shù)轉(zhuǎn)換ADC的應(yīng)用程序接口API,提供各種服務(wù)的擴(kuò)展。操作系統(tǒng)抽象層OSAL實(shí)現(xiàn)了一個(gè)易用的操作系統(tǒng)平臺(tái),通過(guò)時(shí)間片輪轉(zhuǎn)函數(shù)實(shí)現(xiàn)任務(wù)調(diào)度,提供多任務(wù)處理機(jī)制。用戶可以調(diào)用OSAL提供的相關(guān)API進(jìn)行多任務(wù)編程,將自己的應(yīng)用程序作為一個(gè)獨(dú)立的任務(wù)來(lái)實(shí)現(xiàn)1.7zigbee協(xié)議棧構(gòu)成Zigbee協(xié)議棧物理層負(fù)責(zé)將數(shù)據(jù)通過(guò)發(fā)射天線發(fā)送出去以及從天線接收數(shù)據(jù);MAC層提供點(diǎn)對(duì)點(diǎn)通信的數(shù)據(jù)確認(rèn)以及一些用于網(wǎng)絡(luò)發(fā)現(xiàn)和網(wǎng)絡(luò)形成的命令;網(wǎng)絡(luò)層(NWK)主要是對(duì)網(wǎng)型網(wǎng)絡(luò)提供支持,如在全網(wǎng)范圍內(nèi)發(fā)送廣播包,為單播數(shù)據(jù)包選擇路由,網(wǎng)絡(luò)層還具有安全特性;應(yīng)用程序支持子層主要是提供了一些API函數(shù)供用戶調(diào)用,ZigBee設(shè)備對(duì)象ZDO是運(yùn)行在端口0的應(yīng)用程序,主要提供了一些網(wǎng)絡(luò)管理方面的函數(shù)。Zigbee協(xié)議棧端口0該端口用于整個(gè)ZigBee設(shè)備的配置和管理,用戶應(yīng)用程序可以通過(guò)端口0與ZigBee協(xié)議棧的應(yīng)用程序支持子層、網(wǎng)絡(luò)層進(jìn)行通信,從而實(shí)現(xiàn)對(duì)這些層的初始化工作。端口255該端口用于向所有的端口廣播。在ZigBee協(xié)議棧中,各層之間進(jìn)行數(shù)據(jù)傳遞是通過(guò)服務(wù)接入點(diǎn)來(lái)實(shí)現(xiàn)的。一般使用兩種類型的服務(wù)接入點(diǎn):一種用于數(shù)據(jù)傳輸?shù)姆?wù)接入點(diǎn),另一種用于管理的服務(wù)接入點(diǎn)。1.7zigbee協(xié)議棧構(gòu)成整個(gè)協(xié)議棧是從哪里開(kāi)始執(zhí)行的呢?在Zmain文件夾下有個(gè)Zmain.c件,打開(kāi)該文件可以找到main()函數(shù),這就是整個(gè)協(xié)議棧的入口點(diǎn),即從此開(kāi)始執(zhí)行!1.7zigbee協(xié)議棧構(gòu)成Z-stack流程圖1.7zigbee協(xié)議棧OSAL介紹ZigBee協(xié)議棧包含了ZigBee協(xié)議所規(guī)定的基本功能,這些功能是以函數(shù)的形式實(shí)現(xiàn)的,為了便于管理這些函數(shù)集,從ZigBee2006協(xié)議棧開(kāi)始,ZigBee協(xié)議內(nèi)加入了實(shí)時(shí)操作系統(tǒng),稱為OSAL(操作系統(tǒng)抽象層,OperatingSystemAbstractionLayer)。OSAL(OperatingSystemAbstractionLayer),即操作系統(tǒng)抽象層,如何理解OSAL呢?從字面意思看是跟操作系統(tǒng)有關(guān),但是后面為什么又加上“抽象層”呢?在ZigBee協(xié)議棧中,OSAL有什么作用呢?下面將對(duì)上述問(wèn)題進(jìn)行討論。1.7zigbee協(xié)議棧OSAL介紹1.7zigbee協(xié)議棧OSAL介紹1.7zigbee協(xié)議棧OSAL介紹1.7zigbee協(xié)議棧OSAL介紹1.7zigbee協(xié)議棧OSAL介紹那么,事件和任務(wù)的事件處理函數(shù)是如何聯(lián)系起來(lái)的昵?ZigBee中采用的方法是:建立一個(gè)事件表,保存各個(gè)任務(wù)的對(duì)應(yīng)的事件,建立另一個(gè)函數(shù)表,保存各個(gè)任務(wù)事件處理函數(shù)的地址,然后將這兩張表建立某種對(duì)應(yīng)關(guān)系,當(dāng)某一事件發(fā)生時(shí)則查找函數(shù)表找到對(duì)應(yīng)的事件處理函數(shù)即可。1.7zigbee協(xié)議棧OSAL介紹
現(xiàn)在問(wèn)題轉(zhuǎn)變?yōu)椋河檬裁礃拥臄?shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)事件表和函數(shù)表呢?如何將事件表和函數(shù)表建立對(duì)應(yīng)關(guān)系呢?可以說(shuō),只要將上述兩個(gè)問(wèn)題解決,整個(gè)協(xié)議棧的開(kāi)發(fā)將會(huì)變得很容易。ZigBee協(xié)議棧中,有三個(gè)變量至關(guān)重要。1.7zigbee協(xié)議棧OSAL介紹
OSAL的工作原理:通過(guò)tasksEvents指針訪問(wèn)事件表的每一項(xiàng),如果有事件發(fā)生,則查找函數(shù)表找到事件處理函數(shù)進(jìn)行處理,處理完后,繼續(xù)訪問(wèn)事件表,查看是否有事件發(fā)生,無(wú)限循環(huán)。從這種意義上說(shuō),OSAL是一種基于事件驅(qū)動(dòng)的輪詢式操作系統(tǒng)。事件驅(qū)動(dòng)是指發(fā)生事件后采取相應(yīng)的事件處理方法,輪詢指的是不斷地查看是否有事件發(fā)生。1.7zigbee協(xié)議棧OSAL介紹前文提到,在main函數(shù)中,直到調(diào)用osal_start_system函數(shù),整個(gè)ZigBee協(xié)議棧才算是真正地運(yùn)行起來(lái)了,下面將深入osal_start_system函數(shù)的內(nèi)部去探究協(xié)議棧是如何被調(diào)動(dòng)起來(lái)的。1.7zigbee協(xié)議棧OSAL介紹第3行,定義了一個(gè)變量idx,用來(lái)在事件表中索引。第4、5兩行,更新系統(tǒng)時(shí)鐘,同時(shí)查看硬件方面是否有事件發(fā)生。第6--9行,使用do-while循環(huán)查看事件表是否有事件發(fā)生。第11和12行,讀取該事件。第13行,將事件表中該項(xiàng)清零,注意有可能幾個(gè)事件同時(shí)發(fā)生,這里清零暫時(shí)的,第15行會(huì)將未處理的事件存放在事件表中。
1.7zigbee協(xié)議棧OSAL介紹現(xiàn)在遇到的問(wèn)題是;如何在事件處理函數(shù)中返回未處理的事件呢?下面結(jié)合GenericApp_ProcessEvent函數(shù),講解一下。1.7zigbee協(xié)議棧OSAL介紹GenericApp_ProcessEvent函數(shù)的基本實(shí)現(xiàn)方法是:使用osal_msg_receive函數(shù)從消息隊(duì)列上接收一個(gè)消息(在該消息中包含了事件以及接收到的數(shù)據(jù)),然后使用swich-case語(yǔ)句判斷事件類型,如果是接收到新數(shù)據(jù)事件AF_INCOMING_MSG_CMD,則調(diào)用相應(yīng)的事件處理函數(shù)。注意黑體部分的return語(yǔ)句,使用了異或運(yùn)算,通過(guò)使用異或運(yùn)算可以將處理完的事件清除,僅留下未處理的事件。串口事件定義為:0b00000001溫度事件定義為:0b000001001.7zigbee協(xié)議棧OSAL介紹從上述函數(shù)中可以看到SYS_EVENT_MSG,SYS_EVENT_MSG與AF_INCOMING_MSG_CMD有什么內(nèi)在聯(lián)系呢?前文講到可以使用一個(gè)二進(jìn)制位表示一個(gè)事件,因此在ZigBee協(xié)議棧中,用戶可以自己定義事件,但是,協(xié)議棧同時(shí)也給出了幾個(gè)己經(jīng)定義好的事件,SYS_EVENT_MSG就是其中的一個(gè)事件,SYSEVENTMSG的定義如下:
#defineSYS_EVENT_MSG0x8000
1.7zigbee協(xié)議棧OSAL介紹由協(xié)議棧定義的事件成為系統(tǒng)強(qiáng)制事件(MandatoryEvents),SYS_EVENT_MSG是一個(gè)事件集合,主要包括以下幾個(gè)事件(其中前兩個(gè)較為常用):(1)AF_INCOMING_MSG_CMD表示收到了一個(gè)新的無(wú)線數(shù)據(jù)(2)ZDO_STATE_CHANGE當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),會(huì)產(chǎn)生該事件,如節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),就可以通過(guò)判斷該事件來(lái)決定何時(shí)向協(xié)調(diào)器發(fā)送數(shù)據(jù)包。(3)ZDO_CB_MSG指示每一個(gè)注冊(cè)的ZDO響應(yīng)消息。(4)AF_DATA_CONFIRM_CMD調(diào)用AF_DataRequest發(fā)送數(shù)據(jù)時(shí),有時(shí)需要確認(rèn)信息,該事件與此有關(guān)。
1.8OSAL消息對(duì)列講解消息隊(duì)列之前需要講解一下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江安防職業(yè)技術(shù)學(xué)院《中學(xué)語(yǔ)文課程教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 數(shù)獨(dú)答案生成器-20220303010135
- 數(shù)字教學(xué)實(shí)踐報(bào)告
- 經(jīng)典搞笑語(yǔ)錄集錦
- 部編版2024-2025學(xué)年六年級(jí)上語(yǔ)文寒假作業(yè)(七)(有答案)
- 浙江省杭州市拱墅區(qū)源清中學(xué)2024-2025學(xué)年高一(上)期中物理試卷(含答案)
- 2025屆吉林省前郭爾羅斯蒙古族自治縣第五高級(jí)中學(xué)高三上學(xué)期第五次考試歷史試題(綱要上下 選擇性必修三冊(cè))(含答案解析)
- 《色達(dá)佛學(xué)院全景》課件
- 伊春職業(yè)學(xué)院《臺(tái)詞與表演》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度城市綜合體土石方運(yùn)輸及配套設(shè)施合同3篇
- 2025年河南鶴壁市政務(wù)服務(wù)和大數(shù)據(jù)管理局招聘12345市長(zhǎng)熱線人員10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建設(shè)項(xiàng)目安全設(shè)施施工監(jiān)理情況報(bào)告
- 春節(jié)期間安全施工措施
- 2025年大唐集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 建筑工地春節(jié)期間安全保障措施
- 路面彎沉溫度修正系數(shù)
- TLFSA 003-2020 危害分析與關(guān)鍵控制點(diǎn)(HACCP)體系調(diào)味面制品生產(chǎn)企業(yè)要求
- LY/T 2244.3-2014自然保護(hù)區(qū)保護(hù)成效評(píng)估技術(shù)導(dǎo)則第3部分:景觀保護(hù)
- 紀(jì)律教育月批評(píng)與自我批評(píng)五篇
- GB/T 26480-2011閥門(mén)的檢驗(yàn)和試驗(yàn)
- GB/T 13342-2007船用往復(fù)式液壓缸通用技術(shù)條件
評(píng)論
0/150
提交評(píng)論