zigbee协议栈学习(0)
概述
ZigBee是一種新興的短距離、低速率無線網絡技術,它是一種介于無線標記技術和藍牙之間的技術方案。曾被稱作HomeRF Lite或FireFly無線技術,主要用于近距離無線連接。 ZigBee的基礎是IEEE 802.15.4,這是IEEE無線個人區域網(PAN,Personal Area NetWork)工作組的一個標準,被稱為IEEE 802.15.4(ZigBee)技術標準。組網方式
?
ZigBee的基本成員被稱為設備,網絡中設備按照各自的作用可分為協調器節點、路由器節點和終端節點。
協調器
ZigBee網絡協調器是整個網絡的中心,它的功能包括建立、維持和管理整個網絡,分配網絡地址等。所以可以將ZigBee網絡協調器認為是整個ZigBee網絡的“大腦”。 協調器在選擇頻道和PAN ID組建網絡后,其功能將相當于一個路由器。協調器或者路由器均允許其他設備加入網絡,并為其路由數據。 功能特點: >選擇一個頻道和PAN ID,組建網絡; >允許路由和終端節點加入這個網絡; >對網絡中的數據進行路由; >必須常電供電,不能進入睡眠模式; >可以為睡眠的終端節點保留數據,至其喚醒后獲取。路由器
ZigBee網絡路由器主要負責路由發現、消息傳輸、允許其他節點通過它接入網絡。 功能特點: >在進行數據收發之前,必須首先加入一個zigbee網絡; >本身加入網絡后,允許路由和終端節點加入; >加入網絡后,可以對網絡中的數據進行路由; >必須常電供電,不能進入睡眠模式; >可以為睡眠的終端節點保留數據,至其喚醒后獲取。終端
ZigBee終端節點通過ZigBee協調器或者ZigBee路由器接入網絡中,ZigBee終端節點主要負責采集或控制功能,但不允許其他節點通過它加入到網絡中。 終端節點通過協調器或者某個路由器加入網絡后,便成為其“子節點”;對應的路由器或者協調器即成為“父節點”。由于終端節點可以進入睡眠模式,其父節點便有義務為其保留其他節點發來的數據,直至其醒來,并將此數據取走。 功能特點: >在進行數據收發之前,必須首先加入一個zigbee網絡; >不能允許其他設備加入; >必須通過其父節點收發數據,不能對網絡中的數據進行路由; >可由電池供電,進入睡眠模式.PAN ID
PAN的全稱為Personal Area Networks,即個域網。每個個域網都有一個獨立的ID號,即稱為PAN ID。整個個域網中的所有設備共享同一個PAN ID。Zigbee設備的PAN ID可以通過程序預先指定,也可以在設備運行期間,自動加入到一個附近的PAN中。尋址
Zigbee設備的地址類型
Zigbee設備有兩種不同的地址:16位短地址和64位IEEE地址。其中64位地址是全球唯一的地址,在設備的整個生命周期內都將保持不同,它由國際IEEE組織分配,在芯片出廠時已經寫入芯片中,并且不能修改。而短地址是在設備加入一個zigbee網絡時分配的,它只在這個網絡中唯一,用于網絡內數據收發時的地址識別。但由于短地址有時并不穩定,由于網絡結構的變化會發生改變,所以在某些情況下必須以IEEE地址作為通訊的目標地址,以保證數據有效送達。
FBee的地址分配方法
FBee采用的是最新的Zigbee Pro的協議棧,在此版本的協議棧中:首先,在任何一個PAN中,短地址0x0000都是指協調器。而其他設備的短地址是隨機生成的。當一個設備加入網絡之后,它從其父節點獲取一個隨機地址,然后向整個網絡廣播一個包含其短地址和IEEE地址的“設備聲明”(Device Announce),如果另外一個設備收到此廣播后,發現與自己地址相同,它將發出一個“地址沖突”(Address Conflict)的廣播信息。有地址沖突的設備將全部重新更換地址,然后重復上述過程,直至整個網絡中無地址沖突。
FBee設備的短地址變化說明
在FBee的“透傳”、“采集”與“控制”幾大功能中,設備地址是至關重要的一個參數,只有地址設置正確,通訊才能按照預期進行。在此有必要對地址的使用進行詳細的說明。
協調器和路由器的短地址
協調器的短地址為0x0000,不會發生變化。而FBee的路由器短地址,是在其第一次上電時,按照上文2的規則,由其父節點成功分配一次之后,保存在內部flash中,以后無論如何開關機都將保持不變。
值得一提的是,正是由于這種簡單的網絡結構,用戶可以選擇一個協調器+n個路由器的方式來組成一個無“低功耗”需求的網絡,進行“無線透傳”等應用,簡單地使用短地址即可保證數據送達至正確的設備。
終端節點的短地址
上述協調器+路由器的方式可以滿足部分應用,但無法體現Zigbee自組網與低功耗的優勢。這時就要發揮終端節點的特點。FBee終端節點的使用,將在后續章節中詳細說明,此處僅介紹其短地址變化規律與長地址的使用。
FBee終端節點可實現Zigbee的“自組”、“自愈”功能。每次打開終端節點的電源,它將自動檢查其附近的路由器/協調器與其連接的信號質量,選擇信號質量最好的路由為其父節點加入網絡。在加入網絡之后,它將周期性地發送數據請求(MAC data requests),如果其父節點沒有對其請求進行響應,并且重試幾次后,仍無響應,則判定為父節點丟失,此時終端節點將重復上述過程,重新尋找并加入網絡。
注:由于FBee遵循的是Zigbee Pro的規范,重新加入新的父節點后,其短地址將保持不變。但在Zigbee 2007協議中,由于采用的是樹型的固定地址方式,在更換父地址后,節點短地址會發生變化。
利用節點的長地址進行尋址
由于短地址的可變性,在具備可移動節點(End Device)的網絡中,最好使用長地址進行通訊,以確保數據送到正確的設備中。FBee模塊可實現設備的長地址尋址,僅需一個簡單的ATDL指令即可。具體的操作將在后續章節進行介紹。
數據發送方式
針對FBee模塊現有的數據發送方式,我們重點介紹Zigbee的單播和廣播兩種方式。單播模式下面,數據由一個源設備,發送至一個目標設備;而廣播模式,數據是由一個源設備,發送至很多,或者是所有的設備。
單播方式
單播方式下,數據由源設備發出,直接或者經過幾級中轉后,發送至目的地址。加入zigbee網絡的所有設備之間都可以進行單播傳輸,可用16位短地址或者64位長地址進行尋址。具體路由關系由協調器/路由器進行維護、查詢。路由表的相關內容將在后續FBee API模式的章節中進行介紹。
廣播方式
廣播方式是由一個設備發送信息至整個zigbee網絡的所有設備,其目標短地址使用0xFFFF。另外,0xFFFD與0xFFFC也可作為廣播地址。其區別如下:
0xFFFF: 廣播數據發送至所有設備,包括睡眠節點?
0xFFFD: 廣播數據發送至正在睡眠的所有設備?
0xFFFC: 廣播數據發送至所有協調器和路由器
提到“廣播”,可能不少人會認為zigbee的廣播就像村里的大喇叭,一個人講一遍,所有的人豎著耳朵聽一次,就完成任務了。其實并不是這樣的,Zigbee的廣播更像是“傳悄悄話”,一傳十、十傳百,一點點“蔓延”出去的。
舉個最簡單的例子:?
一個網絡中,有ABC三個設備,A是B的鄰居;B是C的鄰居;但A和C不是鄰居。
A———>B——–>C
當A要發廣播給整個網絡的時候,由于距離關系,A無法直接發送給C,那么A首先廣播給它的鄰居(此例中只有B),B再廣播給它的鄰居(此例中有A和C),A此時收到B的廣播數據,與自己發送的廣播數據對比后得知:自己已經將信息廣播給了B,且B已經成功中繼此廣播數據,此時A完成任務,并不再繼續接受廣播。
同理,C收到B的廣播后,再廣播給它的鄰居(此例中只有B),B受到C的廣播后,得知C也已經收到了自己的廣播信息,且成功中繼。
以此類推,任何一個數據廣播都可以以這種方式,一步步往外蔓延,最終每個節點都成功收到信息,而且保證信息不會無止境地在網絡間傳播。
這種廣播方式成功地將通訊范圍擴大至整個網絡,但由于這種信息在網絡間頻繁地轉發,導致網絡負擔陡增,所以建議不要過分使用廣播方式,而且每次廣播的數據盡可能少,發送的時間間隔盡量不要太短!
參考資料
? ? ? ? 《ZigBee無線網絡技術與實戰》?
? ? ? ??飛比Zigbee模塊-FBee手把手教程(二).基本概念及組網特性
總結
以上是生活随笔為你收集整理的zigbee协议栈学习(0)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Protel 99SE在Win10下按键
- 下一篇: 高通GPS芯片WGR7640的驱动