新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于ZigBee無線網(wǎng)絡(luò)的可控組網(wǎng)方法研究

基于ZigBee無線網(wǎng)絡(luò)的可控組網(wǎng)方法研究

作者: 時間:2017-06-12 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://www.butianyuan.cn/article/201706/352656.htm

無線網(wǎng)絡(luò)申節(jié)點多采用自組網(wǎng)的方式入網(wǎng),這種方式容易引起網(wǎng)絡(luò)中部分節(jié)點的過度消耗。針對此種情況提出可控組網(wǎng)方式,通過對節(jié)點入網(wǎng)父節(jié)點的選擇控制,可以有效的監(jiān)控管理整個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和節(jié)點分布,并延長節(jié)點和網(wǎng)絡(luò)的壽命。通過在基于CC2530的開發(fā)系統(tǒng)申對可控組網(wǎng)方式編譯和實現(xiàn),驗證了其可行性。

隨著社會的發(fā)展,無線網(wǎng)絡(luò)在我們的各項活動中扮演著越來越重要的角色。無線通信技術(shù)有很多,其中技術(shù)以其低速率、短距離、低功耗的特點,較好地適用于智能家庭、智能建筑、醫(yī)療應(yīng)用和工業(yè)自動化等某些特定的需求。

文中主要是對網(wǎng)絡(luò)通訊組網(wǎng)方式的研究。ZigBee2007/PRO中規(guī)定的ZigBee網(wǎng)絡(luò)中節(jié)點采取的方式組建網(wǎng)絡(luò)。自組網(wǎng)容易將多個子節(jié)點經(jīng)同一父節(jié)點入網(wǎng),導(dǎo)致部分路由節(jié)點負(fù)擔(dān)過重耗電較快,進(jìn)而引起過早死亡。本文主要是研究通過一種可控的組網(wǎng)方式,使得用戶可以通過上位機自動或手動的選擇父節(jié)點讓節(jié)點入網(wǎng),這樣可以避免對個別關(guān)鍵節(jié)點的過量消耗,延長網(wǎng)絡(luò)壽命。

1方法分析

(Ad Hoc)又稱為多跳無線網(wǎng),它是一種無中心節(jié)點、多跳的自組織技術(shù)。在ZigBee2007/PRO中倡導(dǎo)的組網(wǎng)方式中,一個新的節(jié)點在網(wǎng)絡(luò)中可以隨機放置,接通電源后先完成節(jié)點初始化,然后首先向協(xié)調(diào)點發(fā)送指令,協(xié)調(diào)點接收到請求分配級別指令后會記錄節(jié)點信息并分配對應(yīng)級別,并發(fā)送分配級別指令。節(jié)點在設(shè)定的時間內(nèi)如果收到了分配指令,就會協(xié)調(diào)點發(fā)送包含白組織信息的數(shù)據(jù)包,確定自己在網(wǎng)絡(luò)中的級別和父節(jié)點信息,接入網(wǎng)絡(luò)。如果在設(shè)定的時間內(nèi)沒有收到分配級別的指令,該節(jié)點就會從待機狀態(tài)喚醒,再次發(fā)送分配級別請求指令,循環(huán)執(zhí)行,直到接入成功。當(dāng)達(dá)到設(shè)置的上限次數(shù)但仍未獲得指令信息時,則節(jié)點接入失敗并報告錯誤。節(jié)點自組織流程圖1所示。



圖1 節(jié)點自組織流程圖


2改進(jìn)的組網(wǎng)方式

文中要實現(xiàn)的組網(wǎng)方式,是要讓子節(jié)點加入網(wǎng)絡(luò)時實現(xiàn)有效的全程可控。當(dāng)新節(jié)點放入網(wǎng)絡(luò)后,會先廣播發(fā)送信標(biāo)幀,有效范圍內(nèi)的可用父節(jié)點收到信標(biāo)后會回復(fù)確認(rèn)消息,其中包含父節(jié)點本身的信息,新節(jié)點收到反饋的消息后會搜集父節(jié)點信息,整理后把包含父節(jié)點信息和自身信息的消息廣播發(fā)送給協(xié)調(diào)器。協(xié)調(diào)器接收到消息后會通過串口發(fā)送到上位機控制器,經(jīng)判斷后自動或人為的選擇適合接入的父節(jié)點并將此消息發(fā)送給對應(yīng)父節(jié)點,父節(jié)點接收到此消息后向新節(jié)點發(fā)送消息建立連接,節(jié)點入網(wǎng)完成。

一個新節(jié)點放入網(wǎng)絡(luò)中,打開電源后會首先應(yīng)用層會向網(wǎng)絡(luò)層發(fā)送一條發(fā)現(xiàn)網(wǎng)絡(luò)請求原語NLME-NETWORK-DISCOVERY.request對節(jié)點進(jìn)行初始化。網(wǎng)絡(luò)層收到網(wǎng)絡(luò)發(fā)現(xiàn)請求原語后會向發(fā)送節(jié)點掃描請求原語MLME-SCAN.request,來指示進(jìn)行網(wǎng)絡(luò)的主動掃描。收到此條原語后就會指示物理層向網(wǎng)絡(luò)中廣播發(fā)送一條掃描父節(jié)點信標(biāo)幀,然后進(jìn)入待機模式等待反饋。在可用的父節(jié)點接收到信標(biāo)幀后,會向子節(jié)點反饋發(fā)送確認(rèn)消息,其確認(rèn)消息中將包含父節(jié)點本身的信息。節(jié)點的MAC層會接收每條具有有效負(fù)載的反饋信標(biāo),然后對收到的信息進(jìn)行整理,確認(rèn)信標(biāo)負(fù)載、信標(biāo)的對應(yīng)節(jié)點地址等信息,整理后MAC層將會向NLME發(fā)送一條指示原語MLME-BEACON-NOTIFY.indication.NLME在收到原語后會對接收到的數(shù)據(jù)中的地址字段進(jìn)行標(biāo)記,以確定是否與自己的近鄰表中現(xiàn)有地址相同。如果比對結(jié)果顯示二者相同,即重復(fù)節(jié)點,節(jié)點會把信標(biāo)丟棄;如果二者不同,節(jié)點就保存信標(biāo)信息,并把其中的地址信息添加到自己的近鄰表中。MAC層在達(dá)到設(shè)定的計時周期后,就會向NLME發(fā)送掃描確認(rèn)原語MLME-SCAN.confirm,以標(biāo)志掃描過程結(jié)束。然后網(wǎng)絡(luò)層向應(yīng)用層法發(fā)送一條發(fā)現(xiàn)確認(rèn)原語NLME-NETWORK-DISCOVERY.confirm,將其掃描到的節(jié)點信息反饋給應(yīng)用層。應(yīng)用層在接收到網(wǎng)絡(luò)層發(fā)送的發(fā)現(xiàn)確認(rèn)原語后,會向NLME發(fā)送加入請求原語NL ME-JOIN.request,發(fā)送的原語中對應(yīng)的標(biāo)識符參數(shù)與搜尋到的各節(jié)點的網(wǎng)絡(luò)標(biāo)識符一致。網(wǎng)絡(luò)層在收到上層的加入請求指令后,會整理搜尋到的可用父節(jié)點信息,加入地址信息后發(fā)送加入請求原語MLME-JOIN.request給MAC層。MAC層收到原語后會指示物理層向網(wǎng)絡(luò)中廣播發(fā)送一條加入請求信標(biāo)幀,然后節(jié)點會打開定時器并進(jìn)入低功耗待機狀態(tài),等待上級響應(yīng)。

子節(jié)點會在指定的時間間隔周期的喚醒接收上級的指令。協(xié)調(diào)器完成父節(jié)點選擇后會給指定的父節(jié)點發(fā)送確認(rèn)加入指令,父節(jié)點接收到消息后會給子節(jié)點發(fā)送一條加入請求原語NLME-DIRECT-JOIN.request來完成初始化,原語中的參數(shù)DeviceAddress記錄將要加入網(wǎng)絡(luò)的節(jié)點地址信息,然后向子節(jié)點發(fā)送一條請求加入的信標(biāo)幀。子節(jié)點在收到父節(jié)點的信標(biāo)幀后,MAC層會向網(wǎng)絡(luò)層發(fā)送指示原語MLME-ASSOICATE.in dication,將接收到的父節(jié)點信息發(fā)送到上層。網(wǎng)絡(luò)層收到原語后將記錄父節(jié)點信息并比對與近鄰表中記錄的可用父節(jié)點信息是否一致,若一致,則向MAC層發(fā)送加入請求原語MLME-JOIN.request;若不一致則發(fā)送錯誤報告。MAC層在與父節(jié)點關(guān)聯(lián)成功后會向網(wǎng)絡(luò)層發(fā)送加入確認(rèn)原語MLME-JOIN.confirm指示加入成功,網(wǎng)絡(luò)層將向應(yīng)用層發(fā)送加入確認(rèn)原語NLME-JOIN.confirm,告知節(jié)點入網(wǎng)成功。新節(jié)點加入網(wǎng)絡(luò)中子節(jié)點的信息流程圖如2所示。



圖2 新節(jié)點加入網(wǎng)絡(luò)中子節(jié)點的信息流程圖


作為父節(jié)點的協(xié)調(diào)點或路由節(jié)點收到子節(jié)點發(fā)出的節(jié)點掃描信標(biāo)幀后,NLME會先查看自己的近鄰表中是否存在與之相匹配的地址信息,以對新節(jié)點是否加入過網(wǎng)絡(luò)進(jìn)行判斷。如果發(fā)現(xiàn)有相匹配的地址信息,則路由節(jié)點NLME會記錄此條地址信息,然后按照下文的網(wǎng)絡(luò)原有節(jié)點重新加入網(wǎng)絡(luò)進(jìn)行操作;如果發(fā)現(xiàn)沒有相匹配的地址信息,則路由節(jié)點NLME會向MAC層發(fā)送一條響應(yīng)原語MIME-ASSOCIATE.resPonse。MAC層收到響應(yīng)原語后會指示節(jié)點物理層向新節(jié)點發(fā)送一條狀態(tài)信息,信息中記錄路由節(jié)點的地址和標(biāo)識符等信息。

等收到子節(jié)點發(fā)送來的整理完成的信息幀時,路由節(jié)點的MAC層會讀取信息幀中的頭地址信息,然后向NLME發(fā)送數(shù)據(jù)發(fā)送請求原語MLME-SEND.request,網(wǎng)絡(luò)層收到請求原語后判斷發(fā)送地址是否正確并尋找發(fā)送數(shù)據(jù)需要的路徑。路徑建立后網(wǎng)絡(luò)層向MAC層發(fā)送發(fā)送確認(rèn)原語MLME-SEND.response,指示節(jié)點發(fā)送數(shù)據(jù)。

當(dāng)信息發(fā)送到協(xié)調(diào)點并經(jīng)上位機選擇后會生成一條指示入網(wǎng)命令幀,然后發(fā)送。網(wǎng)絡(luò)會根據(jù)上位機選擇的父節(jié)點地址將命令幀轉(zhuǎn)發(fā)給對應(yīng)的節(jié)點。選擇的父節(jié)點收到命令幀后會讀取命令信息,然后節(jié)點MAC層發(fā)送加入請求原語MLME-JOIN.request給網(wǎng)絡(luò)層,NLME收到原語后會給新節(jié)點分配網(wǎng)絡(luò)地址。父節(jié)點接收入網(wǎng)請求成功,NLME會在節(jié)點近鄰表中加入新節(jié)點的地址等信息,然后發(fā)送加入確認(rèn)原語MLME-JOI N.confirm給MAC層以報告關(guān)聯(lián)成功。新節(jié)點加入網(wǎng)絡(luò)中時路由節(jié)點的信息流程圖如圖3所示。



圖3 新節(jié)點加入網(wǎng)絡(luò)中路由節(jié)點的信息流程圖


3組網(wǎng)過程的實現(xiàn)

在進(jìn)行ZigBee無線網(wǎng)絡(luò)的開發(fā)應(yīng)用時,首先應(yīng)選取合適的硬件設(shè)備。TI公司的CC2530微控制器是新一代的片上系統(tǒng)解決方案。本文選取了成都無線龍公司生產(chǎn)的較為成熟的基于ZigBee的無線網(wǎng)絡(luò)開發(fā)系統(tǒng)C51RF-CC2530-PK.軟件開發(fā)環(huán)境本文選取了IAR Embedded Workbench的C/C++交叉編譯器和調(diào)試器。

需要入網(wǎng)的子節(jié)點在完成初始化后,就會啟動入網(wǎng)過程。節(jié)點會向網(wǎng)絡(luò)中廣播信標(biāo)幀,然后等待可用路由節(jié)點的反饋。廣播發(fā)送數(shù)據(jù)的函數(shù)如下所示:



當(dāng)收到反饋的可用父節(jié)點信息時,節(jié)點會將反饋的信息搜集整理后發(fā)送出去,然后進(jìn)入待機狀態(tài),等待入網(wǎng)反饋。節(jié)點廣播入網(wǎng)請求信息函數(shù)段如下所示:


當(dāng)上位機選取合適的父節(jié)點后,父節(jié)點會與子節(jié)點啟動經(jīng)指定節(jié)點直接入網(wǎng)過程。此部分程序在ZigBee協(xié)議棧中有例子程序,在此不再詳述。

在子節(jié)點有效距離內(nèi)的路由節(jié)點和協(xié)調(diào)器會在于節(jié)點廣播消息時接收到掃描幀,當(dāng)路由節(jié)點收到子節(jié)點的掃描幀時會首先判斷自身是否具有加入新節(jié)點的能力,包括是否有足夠地址空間等。路由節(jié)點反饋的函數(shù)段如下所示:


子節(jié)點搜集收到信息后會給路由節(jié)點發(fā)送入網(wǎng)請求,其入網(wǎng)請求信息中包含可用父節(jié)點信息。向協(xié)調(diào)器轉(zhuǎn)發(fā)請求入網(wǎng)信息的函數(shù)段如下所示:


父節(jié)點收到指令后會啟動節(jié)點入網(wǎng)過程。

文中用包括一個協(xié)調(diào)器、兩個路由節(jié)點和一個終端節(jié)點的網(wǎng)絡(luò)進(jìn)行實驗驗證。程序編寫完成后將協(xié)調(diào)器代碼下載至節(jié)點1,并將此節(jié)點標(biāo)記為協(xié)調(diào)器;將父節(jié)點程序分別下載至節(jié)點2和節(jié)點3,并將這兩個節(jié)點作為原網(wǎng)絡(luò)的路由節(jié)點,也即子節(jié)點入網(wǎng)時的可用父節(jié)點;將入網(wǎng)節(jié)點程序下載至節(jié)點4.

下載完成后分別先打開協(xié)調(diào)器節(jié)點1和路由節(jié)點節(jié)點2節(jié)點3的電源,用USB線將協(xié)調(diào)器與上位機連接起來,等待路由節(jié)點自動加入網(wǎng)絡(luò),組建所需主干網(wǎng)。待組建完成后打開節(jié)點4電源,并打開串口調(diào)試助手,此時會看到節(jié)點4掃描可用父節(jié)點信息后發(fā)送的入網(wǎng)請求信息,并在上微機軟件窗口顯示節(jié)點信息,此時選擇節(jié)點3作為接入父節(jié)點,此時可通過串口調(diào)試助手看到確認(rèn)接入命令。節(jié)點3接收到指令后會啟動接收節(jié)點4為其子節(jié)點,節(jié)點4加入網(wǎng)絡(luò)。加入網(wǎng)絡(luò)成功后會在上位機軟件顯示網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。


4結(jié)論

通過對組建網(wǎng)絡(luò)和入網(wǎng)過程的運行實現(xiàn),驗證了所做的可控組網(wǎng)改進(jìn)方法達(dá)到了預(yù)期設(shè)定的目的,實現(xiàn)了上位機通過選取可用的父節(jié)點對入網(wǎng)過程的控制。這樣的情況下當(dāng)在一些特殊情況下或者已知路由節(jié)點狀態(tài)的情況下可以很好地避開功能較弱或者剩余電量較低的節(jié)點,可有效地提高關(guān)鍵節(jié)點的壽命,進(jìn)而提高了網(wǎng)絡(luò)的壽命。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉