




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1Zigbee協(xié)議棧相關(guān)概念1.1近距離通信技術(shù)比較:近距離無線通信技術(shù)有wifi、藍(lán)牙、紅外、zigbee,在無線傳感網(wǎng)絡(luò)中需求的網(wǎng)絡(luò)通信恰是近距離需求的,故,四者均可用做無線傳感網(wǎng)絡(luò)的通信技術(shù)。而,其中(1)紅外(infrared):能夠包含的信息過少;頻率低波衍射性不好只能視距通信;要求位置固定;點(diǎn)對(duì)點(diǎn)傳輸無法組網(wǎng)。(2)藍(lán)牙(bluetooth):可移動(dòng),手機(jī)支持;通信距離10m;芯片價(jià)格貴;高功耗(3)wifi:高帶寬;覆蓋半徑100m;高功耗;不能自組網(wǎng);(4)zigbee:價(jià)格便宜;低功耗;自組網(wǎng)規(guī)模大。ùùùùðWSN中zigb
2、ee通信技術(shù)是最佳方案,但它連接公網(wǎng)需要有專門的網(wǎng)關(guān)轉(zhuǎn)換à進(jìn)一步學(xué)習(xí)stm32。1.2協(xié)議棧協(xié)議棧是網(wǎng)絡(luò)中各層協(xié)議的總和,其形象的反映了一個(gè)網(wǎng)絡(luò)中文件傳輸?shù)倪^程:由上層協(xié)議到底層協(xié)議,再由底層協(xié)議到上層協(xié)議。1.2.1Zigbee協(xié)議規(guī)范與zigbee協(xié)議棧Zigbee各層協(xié)議中物理層(phy)、介質(zhì)控制層(mac)規(guī)范由IEEE802.15.4規(guī)定,網(wǎng)絡(luò)層(NWK)、應(yīng)用層(apl)規(guī)范由zigbee聯(lián)盟推出。Zigbee聯(lián)盟推出的整套zigbee規(guī)范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeeprozi
3、gbee協(xié)議棧:很多公司都有自主研發(fā)的協(xié)議棧,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN等。1.2.2z-stack協(xié)議棧與zigbee協(xié)議棧z-stack協(xié)議棧與zigbee協(xié)議棧的關(guān)系:z-stack是zigbee協(xié)議棧的一種具體實(shí)現(xiàn),或者說是TI公司讀懂了zigbee協(xié)議棧,自己用C語言編寫了一個(gè)軟件-z-stack,是由全球幾千名工程師共同開發(fā)的。ZStack-CC2530-2.3.1-1.4.0軟件可與TI的SmartRF05平臺(tái)協(xié)同工作,該平臺(tái)包括MSP430超低功耗微控制器(MCU)、CC2520RF收發(fā)器以及CC2591
4、距離擴(kuò)展器,通信連接距離可達(dá)數(shù)公里。Z-Stack中的很多關(guān)鍵的代碼是以庫文件的形式給出來,也就是我們只能用它們,而看不到它們的具體的實(shí)現(xiàn)。其中核心部分的代碼都是編譯好的,以庫文件的形式給出的,比如安全模塊,路由模塊,和Mesh自組網(wǎng)模塊。與z-stack相比msstatePAN、freakz協(xié)議棧都是全部真正的開源的,它們的所有源代碼我們都可以看到。但是由于它們沒有大的商業(yè)公司的支持,開發(fā)升級(jí)方面,性能方面和z-stack相比差距很大,并沒有實(shí)現(xiàn)商業(yè)應(yīng)用,只是作為學(xué)術(shù)研究而已。還可以配備TI的一個(gè)標(biāo)準(zhǔn)兼容或?qū)S械木W(wǎng)絡(luò)協(xié)議棧(RemoTI,Z-Stack,或SimpliciTI)來簡化開發(fā),當(dāng)
5、網(wǎng)絡(luò)節(jié)點(diǎn)要求不多在30個(gè)以內(nèi),通信距離500m-1000m時(shí)用simpliciti。 1.2.3IEEE802.15.4標(biāo)準(zhǔn)概述IEEE802.15.4是一個(gè)低速率無線個(gè)人局域網(wǎng)(LowRateWirelessPersonalAreaNetworks,LR-WPAN)標(biāo)準(zhǔn)。定義了物理層(PHY)和介質(zhì)訪問控制層(MAC)。LR-WPAN網(wǎng)絡(luò)具有如下特點(diǎn):實(shí)現(xiàn)250kb/s,40kb/s,20kb/s三種傳輸速率。支持星型或者點(diǎn)對(duì)點(diǎn)兩種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。具有16位短地址或者64位擴(kuò)展地址。支持沖突避免載波多路偵聽技術(shù)(carriersensemultipleaccesswithcollisionav
6、oidance,CSMA/CA)。(mac層)用于可靠傳輸?shù)娜珣?yīng)答協(xié)議。(RTS-CTS)低功耗。能量檢測(EnergyDetection,ED)。鏈路質(zhì)量指示(LinkQualityIndication,LQI)。在2.45GHz頻帶內(nèi)定義了16個(gè)通道;在915MHz頻帶內(nèi)定義了10個(gè)通道;在868MHz頻帶內(nèi)定義了1個(gè)通道。為了使供應(yīng)商能夠提供最低可能功耗的設(shè)備,IEEE(InstituteofElectricalandElectronicsEngineers,電氣及電子工程師學(xué)會(huì))定義了兩種不同類型的設(shè)備:一種是完整功能設(shè)備(fullfunctionaldevice,F(xiàn)FD),另一種是簡
7、化功能設(shè)備(reducedfunctionaldevice,RFD)。1.2.4ZigBee協(xié)議體系結(jié)構(gòu)IEEE802.15.4定義物理層、介質(zhì)訪問控制層ZigBee聯(lián)盟定義網(wǎng)絡(luò)層(networklayer,NWK)、應(yīng)用層(applicationlayer,APL)。應(yīng)用層內(nèi)定義:應(yīng)用支持子層(applicationsupportsublayer,APS)、ZigBee設(shè)備對(duì)象(ZigBeeDeviceObject,ZDO)(端點(diǎn)號(hào)0)、應(yīng)用框架中用戶自定義應(yīng)用對(duì)象(端點(diǎn)號(hào)1-240,可以定義0-240個(gè)應(yīng)用)。每一層為其上層提供特定的服務(wù)-數(shù)據(jù)服務(wù)實(shí)體à數(shù)據(jù)傳輸服務(wù);管理實(shí)體提供
8、à管理服務(wù)。每個(gè)服務(wù)實(shí)體通過相應(yīng)的服務(wù)接入點(diǎn)(SAP)為其上層提供一個(gè)接口,每個(gè)服務(wù)接入點(diǎn)通過服務(wù)原語來完成所對(duì)應(yīng)的功能。1.2.4.1物理層:物理層定義了物理無線信道和MAC子層之間的接口,提供物理層數(shù)據(jù)服務(wù)和物理層管理服務(wù)。具體內(nèi)容:1)ZigBee的激活;2)當(dāng)前信道的能量檢測;3)接收鏈路服務(wù)質(zhì)量信息;4)ZigBee信道接入方式;5)信道頻率選擇;6)數(shù)據(jù)傳輸和接收。1.2.4.2介質(zhì)接入控制子層(MAC)MAC層負(fù)責(zé)處理所有的物理無線信道訪問,并產(chǎn)生網(wǎng)絡(luò)信號(hào)、同步信號(hào);支持PAN連接和分離,提供兩個(gè)對(duì)等MAC實(shí)體之間可靠的鏈路。具體功能:1)網(wǎng)絡(luò)協(xié)調(diào)器產(chǎn)生信標(biāo);2)與信標(biāo)
9、同步;3)支持PAN(個(gè)域網(wǎng))鏈路的建立和斷開;4)為設(shè)備的安全性提供支持(加密解密功能);5)信道接入方式采用免沖突載波檢測多址接入(CSMA-CA)機(jī)制;6)處理和維護(hù)保護(hù)時(shí)隙(GTS)機(jī)制;7)在兩個(gè)對(duì)等的MAC實(shí)體之間提供一個(gè)可靠的通信鏈路。1.2.4.3網(wǎng)絡(luò)層(NWK)ZigBee協(xié)議棧的核心部分在網(wǎng)絡(luò)層。網(wǎng)絡(luò)層主要實(shí)現(xiàn)節(jié)點(diǎn)加入或離開網(wǎng)絡(luò)、接收或拋棄其他節(jié)點(diǎn)、路由查找及傳送數(shù)據(jù)等功能。具體功能:1)網(wǎng)絡(luò)發(fā)現(xiàn);(路由器、終端)2)網(wǎng)絡(luò)形成;(協(xié)調(diào)器)3)允許設(shè)備連接;4)路由器初始化;5)設(shè)備同網(wǎng)絡(luò)連接;6)直接將設(shè)備同網(wǎng)絡(luò)連接;7)斷開網(wǎng)絡(luò)連接;8)重新復(fù)位設(shè)備;9)接收機(jī)同步;10
10、)信息庫維護(hù)。1.2.4.4應(yīng)用層(APL)應(yīng)用層包括:應(yīng)用支持層(APS)、ZigBee設(shè)備對(duì)象(ZDO)、制造商所定義的應(yīng)用對(duì)象(AF)。(1)APS功能:維持綁定表、在綁定的設(shè)備之間傳送消息。(2)ZDO功能:定義設(shè)備在網(wǎng)絡(luò)中的角色(如物理實(shí)體節(jié)點(diǎn)被定義為協(xié)調(diào)器、路由器還是終端設(shè)備),發(fā)起和響應(yīng)綁定請(qǐng)求,在網(wǎng)絡(luò)設(shè)備之間建立安全機(jī)制(加解密),發(fā)現(xiàn)網(wǎng)絡(luò)中的設(shè)備并且決定向他們提供何種應(yīng)用服務(wù)。SZDO使用APS層的APSDE-SAP和網(wǎng)絡(luò)層的NLME-SAP。ZDO是特殊的應(yīng)用對(duì)象,它在端點(diǎn)(entire)0上實(shí)現(xiàn)。S遠(yuǎn)程設(shè)備通過ZDO請(qǐng)求描述符信息,接收到這些請(qǐng)求時(shí),ZDO會(huì)調(diào)用配置對(duì)象獲
11、取相應(yīng)描述符值(eg設(shè)備什么時(shí)候出廠的、需不需要電池、傳輸距離多少、使用什么規(guī)范)。(3)AF(應(yīng)用程序框架):用戶自定義的應(yīng)用對(duì)象,并且遵循規(guī)范(profile)運(yùn)行在端點(diǎn)1240上。在ZigBee應(yīng)用中,提供2種標(biāo)準(zhǔn)服務(wù)類型:鍵值對(duì)(KVP)或報(bào)文(MSG)。2ZigBee基本概念2.1設(shè)備類型三種邏輯設(shè)備類型:協(xié)調(diào)器、路由器、終端設(shè)備。協(xié)調(diào)器的角色主要涉及網(wǎng)絡(luò)的啟動(dòng)和配置。一旦這些都完成后,協(xié)調(diào)器的工作就像一個(gè)路由器(或者消失goaway)。由于ZigBee網(wǎng)絡(luò)本身的分布特性,因此接下來整個(gè)網(wǎng)絡(luò)的操作就不在依賴協(xié)調(diào)器是否存在。路由器一直活躍,須使用主電源供電。但當(dāng)樹狀拓?fù)浣Y(jié)構(gòu)時(shí),允許其間
12、隔一定的周期操作一次,可使用電池。終端設(shè)備沒有特定的維持網(wǎng)絡(luò)結(jié)構(gòu)的責(zé)任,可以睡眠或者喚醒,可用電池供電。對(duì)存儲(chǔ)空間(特別是RAM的需要)比較小。2.2協(xié)議規(guī)范協(xié)議棧規(guī)范由ZigBee聯(lián)盟定義指定。在同一個(gè)網(wǎng)絡(luò)中的設(shè)備必須符合同一個(gè)協(xié)議棧規(guī)范(同一個(gè)網(wǎng)絡(luò)中所有設(shè)備的協(xié)議棧規(guī)范必須一致)。ZigBee聯(lián)盟為ZigBee協(xié)議棧2007定義了2個(gè)規(guī)范:ZigBee和ZigBeePRO。所有的設(shè)備只要遵循該規(guī)范,即使在不同廠商買的不同設(shè)備同樣可以形成網(wǎng)絡(luò)。如果應(yīng)用開發(fā)者改變了規(guī)范,那么他的產(chǎn)品將不能與遵循ZigBee聯(lián)盟定義規(guī)范的產(chǎn)品組成網(wǎng)絡(luò),也就是說該開發(fā)者開發(fā)的產(chǎn)品具有特殊性,我們稱之為“關(guān)閉的網(wǎng)絡(luò)
13、”,也就是說它的設(shè)備只有在自己的產(chǎn)品中使用,不能與其他產(chǎn)品通信。更改后的規(guī)范可以稱之為“特定網(wǎng)絡(luò)”規(guī)范。協(xié)議棧規(guī)范的ID號(hào)可以通過查詢?cè)O(shè)備發(fā)送的beacon幀獲得。在設(shè)備加入網(wǎng)絡(luò)之前,首先需要確認(rèn)協(xié)議棧規(guī)范的ID?!疤囟ňW(wǎng)絡(luò)”規(guī)范ID號(hào)為0;ZigBee協(xié)議棧規(guī)范的ID號(hào)為1;ZigBeePRO協(xié)議棧規(guī)范的ID號(hào)為2。協(xié)議棧規(guī)范的ID(STACK_PROFILE_ID)在nwk_globals.h中定義:#defineNETWORK_SPECIFIC0#defineHOME_CONTROLS1/zigbee首先應(yīng)用于智能家居,故直接把zigbee協(xié)議棧規(guī)范定義為home_control#def
14、ineZIGBEEPRO_PROFILE2#defineGENERIC_STAR3#defineGENERIC_TREE4#ifdefined(ZIGBEEPRO)#defineSTACK_PROFILE_IDZIGBEEPRO_PROFILE#else#defineSTACK_PROFILE_IDHOME_CONTROLS#endif2.3拓?fù)浣Y(jié)構(gòu)星型、樹狀、網(wǎng)狀#defineNWK_MODE_STAR0#defineNWK_MODE_TREE1#defineNWK_MODE_MESH2#if(STACK_PROFILE_ID=ZIGBEEPRO_PROFILE)#defineNWK_MOD
15、ENWK_MODE_MESH#elif(STACK_PROFILE_ID=HOME_CONTROLS)#defineNWK_MODENWK_MODE_MESH#elif(STACK_PROFILE_ID=GENERIC_STAR)#defineNWK_MODENWK_MODE_STAR#elif(STACK_PROFILE_ID=NETWORK_SPECIFIC)#defineNWK_MODENWK_MODE_MESH#endif一般拓?fù)浣Y(jié)構(gòu)定義為網(wǎng)狀網(wǎng)絡(luò)2.4信標(biāo)與非信標(biāo)模式Zigbee網(wǎng)絡(luò)的工作模式可以分為信標(biāo)(Beaeon)和非信標(biāo)(Non-beaeon)兩種模式。信標(biāo):所有設(shè)備同步工作
16、、休眠。協(xié)調(diào)器負(fù)責(zé)以一定的間隔時(shí)間(一般在15ms-4mins之間)向網(wǎng)絡(luò)廣播信標(biāo)幀,兩個(gè)信標(biāo)幀發(fā)送間隔之間有16個(gè)相同的時(shí)槽,這些時(shí)槽分為網(wǎng)絡(luò)休眠區(qū)和網(wǎng)絡(luò)活動(dòng)區(qū)兩個(gè)部分,消息只能在網(wǎng)絡(luò)活動(dòng)區(qū)的各時(shí)槽內(nèi)發(fā)送。非信標(biāo):終端可休眠,路由器、協(xié)調(diào)器一直工作。父節(jié)點(diǎn)為終端緩存數(shù)據(jù),終端主動(dòng)向父節(jié)點(diǎn)提取數(shù)據(jù),故,終端大多處于休眠狀態(tài),周期性醒來與父節(jié)點(diǎn)握手以確認(rèn)自己仍處于網(wǎng)絡(luò)中,醒來一般需要15ms。實(shí)際使用中非信標(biāo)模式使用更多,因?yàn)槁酚善?、協(xié)調(diào)器往往還要擔(dān)任一些其他功能,且常常加入功放擴(kuò)大傳輸距離,一般加主電源供電。2.5地址兩種地址:64位IEEE地址,即MAC地址,16位網(wǎng)絡(luò)地址(協(xié)調(diào)器網(wǎng)絡(luò)地址為
17、0x00)。#defineNWK_PAN_COORD_ADDR0x00002.5.1網(wǎng)絡(luò)地址分配l 分布式尋址方案:ZigBee2006、ZigBee2007使用分布式尋址方案來分配網(wǎng)絡(luò)地址,保證唯一。設(shè)備只能從父設(shè)備接受網(wǎng)絡(luò)地址,不需要全網(wǎng)通訊分配,有助于測量。l 隨機(jī)地址分配機(jī)制:ZigBee2007PRO采用。新節(jié)點(diǎn)加入時(shí),父節(jié)點(diǎn)為其隨機(jī)分配地址,然后產(chǎn)生“設(shè)備聲明”(包含分配到的網(wǎng)絡(luò)地址和IEEE地址)發(fā)送至網(wǎng)絡(luò)。若有沖突,則通過路由器廣播“網(wǎng)絡(luò)狀態(tài)-地址沖突”至網(wǎng)絡(luò)中的所有節(jié)點(diǎn)。所有發(fā)生沖突的節(jié)點(diǎn)更改自己的網(wǎng)絡(luò)地址,然后再發(fā)起“設(shè)備聲明”直到無沖突。在每個(gè)路由加入網(wǎng)絡(luò)之前,尋址方案需
18、要知道和配置一些參數(shù):MAX_DEPTH(最大網(wǎng)絡(luò)深度)、MAX_ROUTERS(最多路由數(shù))和MAX_CHILDREN(最多子節(jié)點(diǎn)數(shù))。這些參數(shù)是棧配置的一部分,ZigBee2007協(xié)議棧已經(jīng)規(guī)定了這些參數(shù)的值:如果要改動(dòng),首先要確保整個(gè)地址空間不能超過216,這就限制了參數(shù)能夠設(shè)置的最大值??梢允褂胮rojectsZStacktools文件夾下的CSkip.xls文件來確認(rèn)這些值是否合法。當(dāng)在表格中輸入了這些數(shù)據(jù)后,如果你的數(shù)據(jù)不合法的話就會(huì)出現(xiàn)錯(cuò)誤信息。當(dāng)選擇了合法的數(shù)據(jù)后,開發(fā)人員還要保證不再使用標(biāo)準(zhǔn)的棧配置,取而代之的是網(wǎng)絡(luò)自定義棧配置(例如:在nwk_globals.h文件中將ST
19、ACK_PROFILE_ID改為NETWORK_SPECIFIC)。然后nwk_globals.h文件中的MAX_DEPTH參數(shù)將被設(shè)置為合適的值。此外,還必須設(shè)置nwk_globals.c文件中的Cskipchldrn數(shù)組和CskipRtrs數(shù)組。這些數(shù)組的值由MAX_CHILDREN和MAX_ROUTER構(gòu)成。2.5.2尋址應(yīng)用程序通常使用AF_DataRequest()函數(shù)發(fā)送數(shù)據(jù),給一個(gè)afAddrType_t(在ZComDef.h中定義)類型的目標(biāo)設(shè)備。目標(biāo)設(shè)備網(wǎng)絡(luò)地址目標(biāo)設(shè)備模式數(shù)據(jù)包傳送模式分三種:(1) 單點(diǎn)傳送(Unicast):發(fā)給已知網(wǎng)絡(luò)地址的網(wǎng)絡(luò)設(shè)備。將afAddrMo
20、de設(shè)置為Addr16Bit并且在數(shù)據(jù)包中攜帶目標(biāo)設(shè)備地址。(2) 間接傳送(Indirect):應(yīng)用程序不知道目標(biāo)設(shè)備位置時(shí)。將模式設(shè)置為AddrNotPresent,目標(biāo)地址沒有指定,而是從發(fā)送設(shè)備的棧的綁定表中查找目標(biāo)設(shè)備。這種特點(diǎn)稱之為源綁定。數(shù)據(jù)到達(dá)棧中后,從綁定表中查找并使用目標(biāo)設(shè)備地址,這樣,數(shù)據(jù)包將被處理成為一個(gè)標(biāo)準(zhǔn)的單點(diǎn)傳送數(shù)據(jù)包。如果在綁定表中找到多個(gè)設(shè)備,則向每個(gè)設(shè)備都發(fā)送一個(gè)數(shù)據(jù)包的拷貝?!綵igBee2004中有一個(gè)選項(xiàng)可以講綁定表保存在協(xié)調(diào)器(Coordinator)當(dāng)中。發(fā)送設(shè)備將數(shù)據(jù)包發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器查找它棧中的綁定表,然后將數(shù)據(jù)發(fā)送給最終的目標(biāo)設(shè)備。這個(gè)附
21、加的特性叫做協(xié)調(diào)器綁定(CoordinatorBinding)。2004中綁定表只能在協(xié)調(diào)器,2006和2007中可以將綁定表放在任意節(jié)點(diǎn)】(3) 廣播傳送(broadcast):應(yīng)用程序?qū)?shù)據(jù)包發(fā)給每一個(gè)設(shè)備。地址模式設(shè)置為AddrBroadcast。目標(biāo)地址可以設(shè)置為下面廣播地址的一種:NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)發(fā)給所有設(shè)備,包括睡眠中的設(shè)備。對(duì)于睡眠中的設(shè)備,數(shù)據(jù)包將被保留在其父親節(jié)點(diǎn)直到查詢到它,或者消息超時(shí)(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg中)。NWK_BROADCAST_SHORTADDR
22、_DEVRXON(0xFFFD)發(fā)給所有除睡眠之外的所有設(shè)備。NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)發(fā)給所有路由器、協(xié)調(diào)器。(4) 組尋址(GroupAddressing):發(fā)送給網(wǎng)絡(luò)上的一組設(shè)備。地址模式設(shè)置為afAddrGroup并且addr.shortAddr設(shè)置為組ID。使用這個(gè)功能,必須先定義組。(參見Z-stackAPI文檔中的aps_AddGroup()函數(shù))。2.5.3重要設(shè)備地址(ImportantDeviceAddresses)應(yīng)用程序可能需要知道它的設(shè)備地址和父親地址。使用下面的函數(shù)獲取設(shè)備地址(在ZStackAPI中定義):NLM
23、E_GetShortAddr()返回本設(shè)備的16位網(wǎng)絡(luò)地址NLME_GetExtAddr()返回本設(shè)備的64位擴(kuò)展地址使用下面的函數(shù)獲取該設(shè)備的父親設(shè)備的地址:NLME_GetCoordShortAddr()返回本設(shè)備的父親設(shè)備的16位網(wǎng)絡(luò)地址NLME_GetCoordExtAddr()返回本設(shè)備的父親設(shè)備的64位擴(kuò)展地址2.6zigbee術(shù)語一個(gè)節(jié)點(diǎn):一個(gè)射頻收發(fā)器、多個(gè)設(shè)備(最常見的為僅一個(gè)),一個(gè)設(shè)備中包含端點(diǎn)0(ZDO),端點(diǎn)1-端點(diǎn)240一個(gè)端點(diǎn)中包含群集(按功能分為輸入群集、輸出群集)一個(gè)群集中包含多個(gè)屬性(1) 屬性Attribute:是一個(gè)反映物理數(shù)量或狀態(tài)的數(shù)據(jù)值,比如開關(guān)值
24、(On/Off),溫度值、百分比等。(2) 群集Cluster:是包含一個(gè)或多個(gè)屬性(attribute)的集合。每個(gè)群集都被分配一個(gè)唯一的群集ID且每個(gè)群集最多有65536個(gè)屬性。(3) 端點(diǎn)EndPoint:是協(xié)議棧應(yīng)用層的入口,也可以理解應(yīng)用對(duì)象(ApplicationObject)存在的地方,它是為實(shí)現(xiàn)一個(gè)設(shè)備描述而定義的一組群集。每個(gè)ZigBee設(shè)備可以最多支持240這樣的端點(diǎn),這也意味著在每個(gè)設(shè)備上可以定義240個(gè)應(yīng)用對(duì)象。端點(diǎn)0被保留用于與ZDO接口,這是每個(gè)ZigBee設(shè)備必須使用的端點(diǎn),而端點(diǎn)255被保留用于廣播,端點(diǎn)241-254則被保留用于將來做擴(kuò)展使用(4) 設(shè)備描述D
25、eviceDescription:是指一個(gè)大型目標(biāo)應(yīng)用的一部分,包括一個(gè)或多個(gè)群集,并且指定群集是輸入還是輸出。描述符有:節(jié)點(diǎn)描述符、電源描述符、簡單描述符、端點(diǎn)描述符。(5)節(jié)點(diǎn)Node:也可以理解為一個(gè)容器,包含一組ZigBee設(shè)備,分享一個(gè)無線信道。每個(gè)節(jié)點(diǎn)有且只有一個(gè)無線信道使用。2.7綁定通過使用 ClusterID為不同節(jié)點(diǎn)上的獨(dú)立端點(diǎn)建立一個(gè)邏輯上的連接。要實(shí)現(xiàn)綁定操作,端點(diǎn)必須向協(xié)調(diào)器發(fā)送綁定請(qǐng)求,協(xié)調(diào)器在有限的時(shí)間間隔內(nèi)接收到兩個(gè)端點(diǎn)的綁定請(qǐng)求后,便通過建立端點(diǎn)之間的綁定表在這兩個(gè)不同的端點(diǎn)之間形成了一個(gè)邏輯鏈路。因此,在綁定后的兩個(gè)端點(diǎn)之間進(jìn)行消息傳送的過程屬于消息的間接傳
26、送。其中一個(gè)端點(diǎn)首先會(huì)將信息發(fā)送到 ZigBee 協(xié)調(diào)器中,ZigBee 協(xié)調(diào)器在接收到消息后會(huì)通過查找綁定表,將消息發(fā)送到與這個(gè)端點(diǎn)相綁定的所有端點(diǎn)中,從而實(shí)現(xiàn)了綁定端點(diǎn)之間的間接通信。也可以不在協(xié)調(diào)器中建立綁定表,而在任意一個(gè)路由器中建立。2.8路由Zstack協(xié)議棧的路由代碼我們不需要寫,也無法寫(已被封裝)。整個(gè)路由功能如何實(shí)現(xiàn)的需要了解,有助于對(duì)zigbee協(xié)議棧進(jìn)行整體的把握。 zigbee路由還能夠自愈網(wǎng)絡(luò),如果某個(gè)無線連接斷開了,路由功能又能自動(dòng)尋找一條新的路徑避開那個(gè)斷開的網(wǎng)絡(luò)連接。這就極大的提高了網(wǎng)絡(luò)的可靠性,同時(shí)也是 ZigBee 網(wǎng)絡(luò)的一個(gè)關(guān)鍵特性。2.8.1 路由協(xié)議
27、(Routing ProtocolZigBee 執(zhí)行基于用于 AODV 專用網(wǎng)絡(luò)的路由協(xié)議。簡化后用于傳感器網(wǎng)絡(luò)。ZigBee 路由議有助于網(wǎng)絡(luò)環(huán)境有能力支持移動(dòng)節(jié)點(diǎn),連接失敗和數(shù)據(jù)包丟失。當(dāng)路由器從他自身的應(yīng)用程序或者別的設(shè)備那里收到一個(gè)單點(diǎn)發(fā)送的數(shù)據(jù)包,則網(wǎng)絡(luò)層NWK Layer)根據(jù)一下程序?qū)⑺^續(xù)傳遞下去。如果目標(biāo)節(jié)點(diǎn)是它相鄰路由器中的一個(gè),則數(shù)據(jù)包直接被傳送給目標(biāo)設(shè)備。否則,路由器將要檢索它的路由表中與所要傳送的數(shù)據(jù)包的目標(biāo)地址相符合的記錄。如果存在與目標(biāo)地址相符合的活動(dòng)路由記錄,則數(shù)據(jù)包將被發(fā)送到存儲(chǔ)在記錄中的下一級(jí)地址中去。如果沒有發(fā)現(xiàn)任何相關(guān)的路由記錄,則路由器發(fā)起路徑尋找,數(shù)
28、據(jù)包存儲(chǔ)在緩沖區(qū)中知道路徑尋找結(jié)束。 ZigBee終端節(jié)點(diǎn)不執(zhí)行任何路由功能。終端節(jié)點(diǎn)要向任何一個(gè)設(shè)備傳送數(shù)據(jù)包,它只需簡單的將數(shù)據(jù)向上發(fā)送給它的父親設(shè)備,由它的父親設(shè)備以它自己的名義執(zhí)行路由。同樣的,任何一個(gè)設(shè)備要給終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),發(fā)起路由尋找,終端節(jié)的的父親節(jié)點(diǎn)都已它的名義來回應(yīng)。 注意 ZigBee 地址分配方案使得對(duì)于任何一個(gè)目標(biāo)設(shè)備,根據(jù)它的地址都可以得到一條路徑。在 Z-Stack 中,如果萬一正常的路徑尋找過程不能啟動(dòng)的話(通常由于缺少路由表空間),那么Z-Stack 擁有自動(dòng)回退機(jī)制。 此外,在 Z-Stack 中,執(zhí)行的路由已經(jīng)優(yōu)化了路由表記錄。通常,每一個(gè)目標(biāo)設(shè)備都需要一
29、條路由表記錄。但是,通過把一定父親節(jié)點(diǎn)記錄與其子所有子結(jié)點(diǎn)的記錄合并,這樣既可以優(yōu)化路徑也可以不喪失任何功能。 ZigBee 路由器,包括協(xié)調(diào)器執(zhí)行下面的路由函數(shù):(i)路徑發(fā)現(xiàn)和選擇;(ii)路徑保持維護(hù);(iii)路徑期滿。2.8.2 路徑的發(fā)現(xiàn)和選擇(Route Discovery and Selection)路徑發(fā)現(xiàn)是網(wǎng)絡(luò)設(shè)備憑借網(wǎng)絡(luò)相互協(xié)作發(fā)現(xiàn)和建立路徑的一個(gè)過程。路由發(fā)現(xiàn)可以由任意一個(gè)路由設(shè)備發(fā)起,并且對(duì)于某個(gè)特定的目標(biāo)設(shè)備一直執(zhí)行。路徑發(fā)現(xiàn)機(jī)制尋找源地址和目標(biāo)地址之間的所有路徑,并且試圖選擇可能的最好的路徑。 路徑選擇就是選擇出可能的最小成本的路徑。每一個(gè)結(jié)點(diǎn)通常持有跟它所有鄰接
30、點(diǎn)的“連接成本(link costs)”。通常,連接成本的典型函數(shù)是接收到的信號(hào)的強(qiáng)度。沿著路徑,求出所有連接的連接成本總和,便可以得到整個(gè)路徑的“路徑成本”。路由算法試圖尋找到擁有最小路徑成本的路徑。 路徑通過一系列的請(qǐng)求和回復(fù)數(shù)據(jù)包被發(fā)現(xiàn)。源設(shè)備通過向它的所有鄰接節(jié)點(diǎn)廣播一個(gè)路由請(qǐng)求數(shù)據(jù)包,來請(qǐng)求一個(gè)目標(biāo)地址的路徑。當(dāng)一個(gè)節(jié)點(diǎn)接收到 RREQ 數(shù)據(jù)包,它依次轉(zhuǎn)發(fā)REQ數(shù)據(jù)包。但是在轉(zhuǎn)發(fā)之前,它要加上最新的連接成本,然后更新 RREQ數(shù)據(jù)包中的成本值。這樣,沿著所有它通過的連接,RREQ數(shù)據(jù)包攜帶著連接成本的總和。這個(gè)過程一直持續(xù)到 RREQ 數(shù)據(jù)包到達(dá)目標(biāo)設(shè)備。通過不同的路由器,許多 RR
31、EQ 副本都將到達(dá)目標(biāo)設(shè)備。目標(biāo)設(shè)備選擇最好的RREQ數(shù)據(jù)包,然后發(fā)回一個(gè)路徑答復(fù)數(shù)據(jù)包(a Route Reply)RREP給源設(shè)備.RREP 數(shù)據(jù)包是一個(gè)單點(diǎn)發(fā)送數(shù)據(jù)包,它沿著中間節(jié)點(diǎn)的相反路徑傳送直到它到達(dá)原來發(fā)送請(qǐng)求的節(jié)點(diǎn)為止。一旦一條路徑被創(chuàng)建,數(shù)據(jù)包就可以發(fā)送了。當(dāng)一個(gè)結(jié)點(diǎn)與它的下一級(jí)相鄰節(jié)點(diǎn)失去了連接(當(dāng)它發(fā)送數(shù)據(jù)時(shí),沒有收到 MAC ACK),該節(jié)點(diǎn)向所有等待接收它的 RREQ數(shù)據(jù)包的節(jié)點(diǎn)發(fā)送一個(gè) RERR數(shù)據(jù)包,將它的路徑設(shè)為無效。各個(gè)結(jié)點(diǎn)根據(jù)收到的數(shù)據(jù)包 RREQ、RREP 或者RERR 來更新它的路由表。2.8.3 路徑保持維護(hù)(Route maintenance)網(wǎng)狀網(wǎng)
32、提供路徑維護(hù)和網(wǎng)絡(luò)自愈功能。中間節(jié)點(diǎn)沿著連接跟蹤傳送失敗,如果一個(gè)連接被認(rèn)定是壞鏈,那么上游節(jié)點(diǎn)將針對(duì)所有使用這條連接的路徑啟動(dòng)路徑修復(fù)。節(jié)點(diǎn)發(fā)起重新發(fā)現(xiàn)直到下一次數(shù)據(jù)包到達(dá)該節(jié)點(diǎn),標(biāo)志路徑修復(fù)完成。如果不能夠啟動(dòng)路徑發(fā)現(xiàn)或者由于某種原因失敗了,節(jié)點(diǎn)則向數(shù)據(jù)包的源節(jié)點(diǎn)發(fā)送一個(gè)路徑錯(cuò)誤包(RERR),它將負(fù)責(zé)啟動(dòng)新路徑的發(fā)現(xiàn)。這兩種方法,路徑都自動(dòng)重建。2.8.4 路徑期滿(Route expiry)路由表為已經(jīng)建立連接路徑的節(jié)點(diǎn)維護(hù)路徑記錄。如果在一定的時(shí)間周期內(nèi),沒有數(shù)據(jù)通過沿著這條路徑發(fā)送,這條路徑將被表示為期滿。期滿的路徑一直保留到它所占用的空間要被使用為止。這樣,路徑在絕對(duì)不使用之前不
33、會(huì)被刪除掉的。在配置文件 f8wConfig.cfg 文件中配置自動(dòng)路徑期滿時(shí)間。設(shè)置 ROUTE_EXPIRY_TIME 為期滿時(shí)間,單位為秒。如果設(shè)置為 0,則表示關(guān)閉自動(dòng)期滿功能。2.9zigbee原語ZigBee協(xié)議按照開放系統(tǒng)互聯(lián)的 7 層模型將協(xié)議分成了一系列的層結(jié)構(gòu),各層之間通過相應(yīng)的服務(wù)訪問點(diǎn)來提供服務(wù)。這樣使得處于協(xié)議中的不同層能夠根據(jù)各自的功能進(jìn)行獨(dú)立的運(yùn)作,從而使整個(gè)協(xié)議棧的結(jié)構(gòu)變得清晰明朗。另一方面,由于 ZigBee 協(xié)議棧是一個(gè)有機(jī)的整體,任何 ZigBee 設(shè)備要能夠正確無誤的工作,就要求協(xié)議棧各層之間共同協(xié)作。因此,層與層之問的信息交互就顯得十分重要。ZigBe
34、e協(xié)議為了實(shí)現(xiàn)層與層之間的關(guān)聯(lián),采用了稱為服務(wù)“原語"的操作。利用下圖來說明原語操作的概念。服務(wù)由 N 用戶和 N 層之問信息流的描述來指定。這個(gè)信息流由離散瞬時(shí)事件構(gòu)成,以提供服務(wù)的特征。每個(gè)事件由服務(wù)原語組成,它將在一個(gè)用戶的某一 層,通過與該層相關(guān)聯(lián)的層服務(wù)訪問 A(SAP)與建立對(duì)等連接的用戶的相同層之 問傳送。層與層之間的原語一般情況下可以分為 4 種類型: 請(qǐng)求:請(qǐng)求原語從 NI 用戶發(fā)送到它的 N層,請(qǐng)求發(fā)起一個(gè)服務(wù)。 指示:指示原語從 N層到N2 用戶,指示一個(gè)對(duì) N2 用戶有重要意義外部 N 層事件。這個(gè)事件可能與一個(gè)遠(yuǎn)程的服務(wù)請(qǐng)求有關(guān),或者由內(nèi)部事件產(chǎn)生。 響應(yīng):
35、響應(yīng)原語由 N2 用戶向它的 N層傳遞,用來響應(yīng)上一個(gè)由指示原語引 起的過程。 確認(rèn):確認(rèn)原語由 N層向Nl 用戶傳遞,用來傳遞與前面一個(gè)或多個(gè)服務(wù)請(qǐng) 求相關(guān)的執(zhí)行結(jié)果。 3Z-Stack 協(xié)議??傮w設(shè)計(jì)Chipcon 公司為自己設(shè)計(jì)的 Z-Stack 協(xié)議棧中提供了一個(gè)名為操作系統(tǒng)抽象層OSAL 的協(xié)議棧調(diào)度程序。對(duì)于用戶來說,除了能夠看到這個(gè)調(diào)度程序外,其它任何協(xié)議棧操作的具體實(shí)現(xiàn)細(xì)節(jié)都被封裝在庫代碼中。用戶在進(jìn)行具體的應(yīng)用開發(fā)時(shí)只能夠通過調(diào)用 API接口來進(jìn)行,而無權(quán)知道 Zig,Bee 協(xié)議棧實(shí)現(xiàn)的具體細(xì)節(jié)。(即物理層、mac層、網(wǎng)絡(luò)層封裝到庫函數(shù)中,無法查看;應(yīng)用層的aps、zdo代
36、碼完全開源)Z-Stack 由 main()函數(shù)開始執(zhí)行, main()函數(shù)共做了 2 件事:一是系統(tǒng)初始化,一是輪轉(zhuǎn)查詢式操作系統(tǒng),如下圖所示:Osal初始化完成后,一經(jīng)進(jìn)入操作系統(tǒng)則永遠(yuǎn)無休止執(zhí)行下去,除非板子壞掉。void osalInitTasks( void ) uint8 taskID = 0; tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt); macTaskInit( ta
37、skID+ ); nwk_init( taskID+ ); Hal_Init( taskID+ );#if defined( MT_TASK )/通過串口調(diào)試的一個(gè)任務(wù) MT_TaskInit( taskID+ );#endif APS_Init( taskID+ );#if defined ( ZIGBEE_FRAGMENTATION )/如果定義了數(shù)據(jù)分割的分包,則執(zhí)行分包初始化 APSF_Init( taskID+ );#endif ZDApp_Init( taskID+ );#if defined ( ZIGBEE_FREQ_AGILITY ) | defined ( ZIGBEE_P
38、ANID_CONFLICT )/如果定義了調(diào)頻初始化,和個(gè)域網(wǎng)id沖突初始化,則執(zhí)行網(wǎng)絡(luò)管理層初始化 ZDNwkMgr_Init( taskID+ );#endif SampleApp_Init( taskID );/應(yīng)用對(duì)象初始化3.1osal初始化:3.2任務(wù)調(diào)度ZigBee 協(xié)議棧中的每一層都有很多原語操作要執(zhí)行,因此對(duì)于整個(gè)協(xié)議棧來說,就會(huì)有很多并發(fā)操作要執(zhí)行。協(xié)議棧中的每一層都設(shè)計(jì)了一個(gè)事件處理函數(shù),用來處理與這一層操作相關(guān)的各種事件。將這些事件處理函數(shù)看成是與協(xié)議棧每一層相對(duì)應(yīng)的任務(wù),由 ZigBee 協(xié)議棧中調(diào)度程序 OSAL 來進(jìn)行管理。這樣,對(duì)于協(xié)議棧來說,無論何時(shí)發(fā)生了何種
39、事件,我們都可以通過調(diào)度協(xié)議棧相應(yīng)層的任務(wù),即事件處理函數(shù)來進(jìn)行處理。這樣,整個(gè)協(xié)議棧便會(huì)按照時(shí)間順序有條不紊的運(yùn)行。ZigBee 協(xié)議棧的實(shí)時(shí)性要求并不高,因此在設(shè)計(jì)任務(wù)調(diào)度程序時(shí), OSAL 只采用了輪詢?nèi)蝿?wù)調(diào)度隊(duì)列的方法來進(jìn)行任務(wù)調(diào)度管理。任務(wù)列表:const pTaskEventHandlerFn tasksArr = macEventLoop, nwk_event_loop, Hal_ProcessEvent,#if defined( MT_TASK ) MT_ProcessEvent,#endif APS_event_loop,#if defined ( ZIGBEE_FRAGME
40、NTATION ) APSF_ProcessEvent,#endif ZDApp_event_loop,#if defined ( ZIGBEE_FREQ_AGILITY ) | defined ( ZIGBEE_PANID_CONFLICT ) ZDNwkMgr_event_loop,#endif SampleApp_ProcessEvent;void osal_start_system( void ) for(;) / Forever Loopuint8 idx = 0; osalTimeUpdate(); Hal_ProcessPoll(); / This replaces MT_Ser
41、ialPoll() and osal_check_timer(). do if (tasksEventsidx) / Task is highest priority that is ready. break; while (+idx < tasksCnt); if (idx < tasksCnt) uint16 events; halIntState_t intState; HAL_ENTER_CRITICAL_SECTION(intState); events = tasksEventsidx; tasksEventsidx = 0; / Clear the Events fo
42、r this task. HAL_EXIT_CRITICAL_SECTION(intState); events = (tasksArridx)( idx, events ); HAL_ENTER_CRITICAL_SECTION(intState); tasksEventsidx |= events; / Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState); #if defined( POWER_SAVING ) else / Complete pass through all task events with no activity? osal_pwrmgr_powerconserve(); / Put the processor/system into sleep #endif /* Yield in case cooperative scheduling is being used. */#if defined (configUSE_PREEMPTION) && (configUSE_PREEMPTION
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賣場承包經(jīng)營合同
- 企業(yè)公司房屋租賃合同
- 公廁給排水施工方案
- bef增光膜施工方案
- 實(shí)驗(yàn)室咨詢服務(wù)合同
- TACCEM 135-2024 雙組份聚氨酯導(dǎo)熱結(jié)構(gòu)膠
- 與石油管道交叉施工方案
- 建筑工程機(jī)械租賃合同范文
- 昌河中學(xué)高一數(shù)學(xué)試卷
- 水泥樓梯改造施工方案
- GB/T 44569.1-2024土工合成材料內(nèi)部節(jié)點(diǎn)強(qiáng)度的測定第1部分:土工格室
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 機(jī)動(dòng)車維修經(jīng)營備案表
- 《公務(wù)員錄用體檢操作手冊(cè)(試行)》
- 膝關(guān)節(jié)穿刺術(shù)課件
- 海信入職在線測評(píng)真題
- 設(shè)計(jì)(技術(shù))變更申報(bào)審批單
- 大象版(2017秋)六年級(jí)下冊(cè) 科學(xué) 2.4可再生與不可再生資源(教學(xué)設(shè)計(jì))
- 《珍愛生命拒絕毒品》主題班會(huì)課件
- 螢石市場洞察報(bào)告
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
評(píng)論
0/150
提交評(píng)論