在這一章中蝌矛,我們將一起來看一下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ù)有效送達赊淑。 - 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ù)送達至正確的設(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