基于ZigBee協(xié)議棧的無線傳感器網(wǎng)絡(luò)的設(shè)計(jì)
傳感器節(jié)點(diǎn)啟動(dòng)后,開始初始化網(wǎng)絡(luò)。在ZDO層調(diào)用網(wǎng)絡(luò)層的網(wǎng)絡(luò)發(fā)現(xiàn)函數(shù)NLME_NetworkDiscoveryRequest(),嘗試發(fā)現(xiàn)是否已經(jīng)存在的網(wǎng)絡(luò)可以加入。當(dāng)發(fā)現(xiàn)協(xié)調(diào)器所建立的網(wǎng)絡(luò)時(shí),傳感器節(jié)點(diǎn)的ZDO層會(huì)收到網(wǎng)絡(luò)發(fā)現(xiàn)確認(rèn)信息。這時(shí),傳感器節(jié)點(diǎn)通過調(diào)用網(wǎng)絡(luò)層的網(wǎng)絡(luò)加入請(qǐng)求函數(shù)NLME_JionRequest(),向協(xié)調(diào)器發(fā)送加入網(wǎng)絡(luò)請(qǐng)求。如果協(xié)調(diào)器允許其他節(jié)點(diǎn)加入網(wǎng)絡(luò),則該傳感器節(jié)點(diǎn)會(huì)接收到協(xié)調(diào)器發(fā)送來的加入確認(rèn)信息。這里的網(wǎng)絡(luò)發(fā)現(xiàn)函數(shù)NLME_NetworkDiscoveryRequest()和網(wǎng)絡(luò)加入請(qǐng)求函數(shù)NLME_JionRequest(),與協(xié)調(diào)器中所調(diào)用的網(wǎng)絡(luò)形成函數(shù)NLME NetworkFormationReouest()一樣,均為ZigBee協(xié)議棧所封裝起來的函數(shù),只能由開發(fā)人員編程時(shí)調(diào)用,不能看到其內(nèi)部程序。傳感器節(jié)點(diǎn)加入網(wǎng)絡(luò)的流程如圖3所示。本文引用地址:http://www.ex-cimer.com/article/154688.htm
2.3 傳感器節(jié)點(diǎn)與協(xié)調(diào)器的綁定
為了讓傳感器節(jié)點(diǎn)與協(xié)調(diào)器能相互傳送數(shù)據(jù),兩者之間必須建立綁定關(guān)系。綁定是兩個(gè)(或多個(gè))應(yīng)用設(shè)備之間信息傳輸?shù)目刂茩C(jī)制,在ZigBee2006及以后的協(xié)議棧中,所有的設(shè)備都必須執(zhí)行綁定機(jī)制。
協(xié)調(diào)器通過執(zhí)行zb_AllowBind()函數(shù),開啟允許綁定功能。在該函數(shù)中,可以設(shè)置允許綁定的時(shí)間,即在某一段時(shí)間內(nèi),協(xié)調(diào)器接收其他設(shè)備發(fā)來的綁定請(qǐng)求,超過這段時(shí)間,則關(guān)閉該功能。傳感器節(jié)點(diǎn)通過執(zhí)行綁定設(shè)備函數(shù)zb_BindDevice(),向協(xié)調(diào)器發(fā)送綁定請(qǐng)求。協(xié)調(diào)器接收到傳感器節(jié)點(diǎn)發(fā)送來的綁定請(qǐng)求,并進(jìn)行解析,綁定請(qǐng)求信息中包含了傳感器節(jié)點(diǎn)中的端點(diǎn)信息,然后協(xié)調(diào)器在自身所注冊(cè)過的端點(diǎn)中尋找與之相匹配的端點(diǎn)。找到之后,則處理綁定請(qǐng)求信息,并向傳感器節(jié)點(diǎn)發(fā)送綁定響應(yīng)信息。傳感器節(jié)點(diǎn)接收到綁定響應(yīng)信息之后,通過調(diào)用應(yīng)用支持子層的綁定請(qǐng)求函數(shù)APSME_BindRequest()來建立綁定表,并將向自己的應(yīng)用層發(fā)送綁定確認(rèn)信息。傳感器節(jié)點(diǎn)與協(xié)調(diào)器建立綁定的流程如圖4所示。
評(píng)論