1. 程式人生 > >ZigBee協議棧開發(四)

ZigBee協議棧開發(四)

1、要對ZigBee無線區域網有清晰的認識,明白ZigBee網路的組建過程中,網路工作時ZigBee無線模組在空氣中資料交換過程中進行了什麼工作。

2、ZigBee無線區域網中,節點按照在網路裡的功能劃分為協調器,路由器,終端。他們的硬體可以完全一樣,之所以在網路中表現不同的功能,是因為下載了不同功能的程式碼。

3、下載了路由器和終端程式碼的模組,上電後第一件事是去尋找網路,請求加入;網路的建立由下載了協調器程式碼的模組完成。網路建立的標誌是確定下來PANID,協調器地址永遠為0x0000,。任何網路第一個節點都是協調器,且一個網路只能有一個協調器。

4、任何一個ZigBee模組要加入到某個網路,一定要一個處於該網路的節點作為介紹人,並且這個介紹人不能是終端節點,在加入網路以後,介紹節點和被介紹節點互為父子關係,介紹人節點是被介紹節點的父節點。例如協調器組建網路後,若終端先加入網路,則終端是協調器的子節點,路由器只能經由協調器加入網路,路由器也是協調器的子節點;而若路由器

先加入網路,那麼終端既可以經由協調器加入網路,作為協調器的子節點,也可以經由路由器加入網路,作為路由器的子節點。具體選擇經由哪個節點,要檢測哪個節點的訊號強度更高,經由訊號強度更高的節點加入網路。

5、ZigBee網路組建之後,網路裡的節點可以進行相互通訊,通訊方式有四種:

單播

廣播

組播

繫結(實際開發基本不用)

6、入網前

路由器:在入網前一直髮送信標請求幀,它的作用是讓在它附近的所有具備介紹入網資格的節點回覆信標幀,這些信標幀被這個想要加入的無線模組拿到,選擇最優的節點經由加入網路。

終端:它在入網前的行為與下載了路由器程式碼的模組在入網前的行為完全一樣。

協調器:建網前也傳送了一幀信標請求幀,從而也會得到其餘節點的回覆信標幀,但協調器拿到此信標幀並不是為了加入其它網路,而是為了判斷當前區域的網路情況,從而建立一個不同於其它網路的唯一的最優網路。當協調器建立網路成功後會傳送個數據幀,這個幀裡可以看到協調器地址以及PANID,可以把這個幀叫做網路連線狀態幀。

7、從入網到穩定工作

路由器:

(1)協調器發出的網路連線狀態幀,表明協調器穩定工作,與路由器入網無關

(2)路由器模組發出的信標請求幀,用於發現周圍的網路,請求加入。

(3)協調器模組發出的信標請求幀,路由器模組拿到此幀後,判斷其訊號強度

(4)之後再重複兩次上面的兩個過程

補充:在ZigBee網路裡,如果一個模組發出的射頻幀,非常明確的指定接收目標節點的地址,那麼目標節點在接收到這個幀以後,硬體會自動回覆一個ACK,表明已經收到了。

TI在CC2530出廠時在FLASH上固化了一個8個位元組的編號唯一的值,這個值是晶片的MAC(物理)地址。

(5)是路由器模組確定好最好的介紹節點後,發給協調器一個命令幀,,這個  命令幀就相當於告訴了介紹節點將要通過你加入網路,這個幀中攜帶了路由器模組的MAC地址,這個地址是介紹模組給被介紹節模組分配網路地址的依據。

(6)協調器模組硬體回覆給路由器模組一個ACK,表明已經收到上一幀。

(7)路由器模組又發給協調器模組一個數據請求幀,作用是請求協調器把根據其MAC地址分配的網路地址發回給路由器模組。

(8)協調器回覆給路由器的ACK表明收到了路由器發來的資料請求幀。

(9)協調器將分配給路由器的網路地址發給路由器,此時由於路由器還不知道自己的網路地址,而又需要明確發給路由器,因此此時目標地址用MAC地址。

(10)路由器模組根據自己的MAC地址收到了協調器發來的分配給自己的網路地址,硬體回覆一個ACK,表明已經收到。

(11)路由器確定好自己的網路地址後,發出一個入網宣告幀,告訴網路中的所有節點它已經入網,而且其地址為現在的網路地址。

(12)協調器模組收到路由器的入網宣告幀後會轉發這個入網宣告幀告訴所有節點路由器的加入和它的網路地址。

(13)之後協調器和路由器一起在工作穩定時,每隔一段時間發出一次網路連線狀態幀。預設時間為15s。

終端:與路由器的入網過程中所有行為完全一樣,只是在入網完成之後不會發送網路連線狀態幀,而是會不斷髮送資料請求幀到它的父節點,父節點收到後回覆ACK,這是為了告訴父節點終端一直線上,可以進行資料交換。