在這一章中,我們將一起來看一下zigbee的幾個基本概念。當(dāng)然,由于zigbee協(xié)議的復(fù)雜性,暫時只介紹下后面將提到的幾個功能中用得到的概念。對于一些深入的概念的理解,將在介紹模塊的API模式時,再進行補充。
一、Zigbee基本概念介紹
Zigbee是一種基于802.15.4物理層協(xié)議、支持自組網(wǎng)、多點中繼,可實現(xiàn)網(wǎng)狀拓?fù)涞膹?fù)雜的組網(wǎng)協(xié)議,加上其低功耗的特點,使得網(wǎng)絡(luò)間的設(shè)備必須各司其職,有效地協(xié)同工作。
- Zigbee網(wǎng)絡(luò)的設(shè)備類型
在Zigbee網(wǎng)絡(luò)中,有三種不同類型的設(shè)備,分別叫做:協(xié)調(diào)器(Coordinator)
、路由器(Router)
和終端節(jié)點(End Device)
,如下圖所示:
-
協(xié)調(diào)器的功能特點
選擇一個頻道和PAN ID,組建網(wǎng)絡(luò)
允許路由和終端節(jié)點加入這個網(wǎng)絡(luò)
對網(wǎng)絡(luò)中的數(shù)據(jù)進行路由
必須常電供電,不能進入睡眠模式
可以為睡眠的終端節(jié)點保留數(shù)據(jù),至其喚醒后獲取。 -
路由器的功能特點
在進行數(shù)據(jù)收發(fā)之前,必須首先加入一個zigbee網(wǎng)絡(luò)
本身加入網(wǎng)絡(luò)后,允許路由和終端節(jié)點加入
加入網(wǎng)絡(luò)后,可以對網(wǎng)絡(luò)中的數(shù)據(jù)進行路由
必須常電供電,不能進入睡眠模式
可以為睡眠的終端節(jié)點保留數(shù)據(jù),至其喚醒后獲取。 -
終端節(jié)點的功能特點
在進行數(shù)據(jù)收發(fā)之前,必須首先加入一個zigbee網(wǎng)絡(luò)
不能允許其他設(shè)備加入
必須通過其父節(jié)點收發(fā)數(shù)據(jù),不能對網(wǎng)絡(luò)中的數(shù)據(jù)進行路由
可由電池供電,進入睡眠模式
-
協(xié)調(diào)器在選擇頻道和PAN ID組建網(wǎng)絡(luò)后,其功能將相當(dāng)于一個路由器。協(xié)調(diào)器或者路由器均允許其他設(shè)備加入網(wǎng)絡(luò),并為其路由數(shù)據(jù)。
終端節(jié)點通過協(xié)調(diào)器或者某個路由器加入網(wǎng)絡(luò)后,便成為其“子節(jié)點”;對應(yīng)的路由器或者協(xié)調(diào)器即成為“父節(jié)點”。由于終端節(jié)點可以進入睡眠模式,其父節(jié)點便有義務(wù)為其保留其他節(jié)點發(fā)來的數(shù)據(jù),直至其醒來,并將此數(shù)據(jù)取走。
- PAN ID
PAN的全稱為Personal Area Networks,即個域網(wǎng)。每個個域網(wǎng)都有一個獨立的ID號,即稱為PAN ID。整個個域網(wǎng)中的所有設(shè)備共享同一個PAN ID。Zigbee設(shè)備的PAN ID可以通過程序預(yù)先指定,也可以在設(shè)備運行期間,自動加入到一個附近的PAN中。
二、尋址
- Zigbee設(shè)備的地址類型
Zigbee設(shè)備有兩種不同的地址:16位短地址和64位IEEE地址。其中64位地址是全球唯一的地址,在設(shè)備的整個生命周期內(nèi)都將保持不同,它由國際IEEE組織分配,在芯片出廠時已經(jīng)寫入芯片中,并且不能修改。而短地址是在設(shè)備加入一個zigbee網(wǎng)絡(luò)時分配的,它只在這個網(wǎng)絡(luò)中唯一,用于網(wǎng)絡(luò)內(nèi)數(shù)據(jù)收發(fā)時的地址識別。但由于短地址有時并不穩(wěn)定,由于網(wǎng)絡(luò)結(jié)構(gòu)的變化會發(fā)生改變,所以在某些情況下必須以IEEE地址作為通訊的目標(biāo)地址,以保證數(shù)據(jù)有效送達(dá)。 - FBee的地址分配方法
FBee采用的是最新的Zigbee Pro的協(xié)議棧,在此版本的協(xié)議棧中:首先,在任何一個PAN中,短地址0x0000都是指協(xié)調(diào)器。而其他設(shè)備的短地址是隨機生成的。當(dāng)一個設(shè)備加入網(wǎng)絡(luò)之后,它從其父節(jié)點獲取一個隨機地址,然后向整個網(wǎng)絡(luò)廣播一個包含其短地址和IEEE地址的“設(shè)備聲明”(Device Announce),如果另外一個設(shè)備收到此廣播后,發(fā)現(xiàn)與自己地址相同,它將發(fā)出一個“地址沖突”(Address Conflict)的廣播信息。有地址沖突的設(shè)備將全部重新更換地址,然后重復(fù)上述過程,直至整個網(wǎng)絡(luò)中無地址沖突。 - FBee設(shè)備的短地址變化說明
在FBee的“透傳”、“采集”與“控制”幾大功能中,設(shè)備地址是至關(guān)重要的一個參數(shù),只有地址設(shè)置正確,通訊才能按照預(yù)期進行。在此有必要對地址的使用進行詳細(xì)的說明。- 協(xié)調(diào)器和路由器的短地址
協(xié)調(diào)器的短地址為0x0000,不會發(fā)生變化。而FBee的路由器短地址,是在其第一次上電時,按照上文2的規(guī)則,由其父節(jié)點成功分配一次之后,保存在內(nèi)部flash中,以后無論如何開關(guān)機都將保持不變。
值得一提的是,正是由于這種簡單的網(wǎng)絡(luò)結(jié)構(gòu),用戶可以選擇一個協(xié)調(diào)器+n個路由器的方式來組成一個無“低功耗”需求的網(wǎng)絡(luò),進行“無線透傳”等應(yīng)用,簡單地使用短地址即可保證數(shù)據(jù)送達(dá)至正確的設(shè)備。 - 終端節(jié)點的短地址
上述協(xié)調(diào)器+路由器的方式可以滿足部分應(yīng)用,但無法體現(xiàn)Zigbee自組網(wǎng)與低功耗的優(yōu)勢。這時就要發(fā)揮終端節(jié)點的特點。FBee終端節(jié)點的使用,將在后續(xù)章節(jié)中詳細(xì)說明,此處僅介紹其短地址變化規(guī)律與長地址的使用。
FBee終端節(jié)點可實現(xiàn)Zigbee的“自組”、“自愈”功能。每次打開終端節(jié)點的電源,它將自動檢查其附近的路由器/協(xié)調(diào)器與其連接的信號質(zhì)量,選擇信號質(zhì)量最好的路由為其父節(jié)點加入網(wǎng)絡(luò)。在加入網(wǎng)絡(luò)之后,它將周期性地發(fā)送數(shù)據(jù)請求(MAC data requests),如果其父節(jié)點沒有對其請求進行響應(yīng),并且重試幾次后,仍無響應(yīng),則判定為父節(jié)點丟失,此時終端節(jié)點將重復(fù)上述過程,重新尋找并加入網(wǎng)絡(luò)。
注:由于FBee遵循的是Zigbee Pro的規(guī)范,重新加入新的父節(jié)點后,其短地址將保持不變。但在Zigbee 2007協(xié)議中,由于采用的是樹型的固定地址方式,在更換父地址后,節(jié)點短地址會發(fā)生變化。 - 利用節(jié)點的長地址進行尋址
由于短地址的可變性,在具備可移動節(jié)點(End Device)的網(wǎng)絡(luò)中,最好使用長地址進行通訊,以確保數(shù)據(jù)送到正確的設(shè)備中。FBee模塊可實現(xiàn)設(shè)備的長地址尋址,僅需一個簡單的ATDL指令即可。具體的操作將在后續(xù)章節(jié)進行介紹。
- 協(xié)調(diào)器和路由器的短地址
三、數(shù)據(jù)發(fā)送方式
針對FBee模塊現(xiàn)有的數(shù)據(jù)發(fā)送方式,我們重點介紹Zigbee的單播和廣播兩種方式。單播模式下面,數(shù)據(jù)由一個源設(shè)備,發(fā)送至一個目標(biāo)設(shè)備;而廣播模式,數(shù)據(jù)是由一個源設(shè)備,發(fā)送至很多,或者是所有的設(shè)備。
單播方式
單播方式下,數(shù)據(jù)由源設(shè)備發(fā)出,直接或者經(jīng)過幾級中轉(zhuǎn)后,發(fā)送至目的地址。加入zigbee網(wǎng)絡(luò)的所有設(shè)備之間都可以進行單播傳輸,可用16位短地址或者64位長地址進行尋址。具體路由關(guān)系由協(xié)調(diào)器/路由器進行維護、查詢。路由表的相關(guān)內(nèi)容將在后續(xù)FBee API模式的章節(jié)中進行介紹。廣播方式
廣播方式是由一個設(shè)備發(fā)送信息至整個zigbee網(wǎng)絡(luò)的所有設(shè)備,其目標(biāo)短地址使用0xFFFF。另外,0xFFFD與0xFFFC也可作為廣播地址。其區(qū)別如下:
0xFFFF: 廣播數(shù)據(jù)發(fā)送至所有設(shè)備,包括睡眠節(jié)點
0xFFFD: 廣播數(shù)據(jù)發(fā)送至正在睡眠的所有設(shè)備
0xFFFC: 廣播數(shù)據(jù)發(fā)送至所有協(xié)調(diào)器和路由器
提到“廣播”,可能不少人會認(rèn)為zigbee的廣播就像村里的大喇叭,一個人講一遍,所有的人豎著耳朵聽一次,就完成任務(wù)了。其實并不是這樣的,Zigbee的廣播更像是“傳悄悄話”,一傳十、十傳百,一點點“蔓延”出去的。
舉個最簡單的例子:
一個網(wǎng)絡(luò)中,有ABC三個設(shè)備,A是B的鄰居;B是C的鄰居;但A和C不是鄰居。
A--------->B-------->C
當(dāng)A要發(fā)廣播給整個網(wǎng)絡(luò)的時候,由于距離關(guān)系,A無法直接發(fā)送給C,那么A首先廣播給它的鄰居(此例中只有B),B再廣播給它的鄰居(此例中有A和C),A此時收到B的廣播數(shù)據(jù),與自己發(fā)送的廣播數(shù)據(jù)對比后得知:自己已經(jīng)將信息廣播給了B,且B已經(jīng)成功中繼此廣播數(shù)據(jù),此時A完成任務(wù),并不再繼續(xù)接受廣播。
同理,C收到B的廣播后,再廣播給它的鄰居(此例中只有B),B受到C的廣播后,得知C也已經(jīng)收到了自己的廣播信息,且成功中繼。
以此類推,任何一個數(shù)據(jù)廣播都可以以這種方式,一步步往外蔓延,最終每個節(jié)點都成功收到信息,而且保證信息不會無止境地在網(wǎng)絡(luò)間傳播。
這種廣播方式成功地將通訊范圍擴大至整個網(wǎng)絡(luò),但由于這種信息在網(wǎng)絡(luò)間頻繁地轉(zhuǎn)發(fā),導(dǎo)致網(wǎng)絡(luò)負(fù)擔(dān)陡增,所以建議不要過分使用廣播方式,而且每次廣播的數(shù)據(jù)盡可能少,發(fā)送的時間間隔盡量不要太短!
轉(zhuǎn)載至:http://blog.csdn.net/tanqiuwei/article/details/17303085