1. 程式人生 > >zigbee基本概念及組網特性

zigbee基本概念及組網特性

在這一章中,我們將一起來看一下zigbee的幾個基本概念。當然,由於zigbee協議的複雜性,暫時只介紹下後面將提到的幾個功能中用得到的概念。對於一些深入的概念的理解,將在介紹模組的API模式時,再進行補充。

一、Zigbee基本概念介紹
  Zigbee是一種基於802.15.4物理層協議、支援自組網、多點中繼,可實現網狀拓撲的複雜的組網協議,加上其低功耗的特點,使得網路間的裝置必須各司其職,有效地協同工作。

1、Zigbee網路的裝置型別
  在Zigbee網路中,有三種不同型別的裝置,分別叫做:協調器(Coordinator)、路由器(Router)和終端節點(End Device),如下圖所示:

   CRE.png



  1.1  協調器的功能特點
       >選擇一個頻道和PAN ID,組建網路
       >允許路由和終端節點加入這個網路
       >對網路中的資料進行路由
       >必須常電供電,不能進入睡眠模式
       >可以為睡眠的終端節點保留資料,至其喚醒後獲取。

  1.2  路由器的功能特點
      >在進行資料收發之前,必須首先加入一個zigbee網路
        >本身加入網路後,允許路由和終端節點加入
        >加入網路後,可以對網路中的資料進行路由
        >必須常電供電,不能進入睡眠模式
        >可以為睡眠的終端節點保留資料,至其喚醒後獲取。

  1.3  終端節點的功能特點


        >在進行資料收發之前,必須首先加入一個zigbee網路
        >不能允許其他裝置加入
        >必須通過其父節點收發資料,不能對網路中的資料進行路由
        >可由電池供電,進入睡眠模式

  協調器在選擇頻道和PAN ID組建網路後,其功能將相當於一個路由器。協調器或者路由器均允許其他裝置加入網路,併為其路由資料。

  終端節點通過協調器或者某個路由器加入網路後,便成為其“子節點”;對應的路由器或者協調器即成為“父節點”。由於終端節點可以進入睡眠模式,其父節點便有義務為其保留其他節點發來的資料,直至其醒來,並將此資料取走。

2、PAN ID

  PAN的全稱為Personal Area Networks,即個域網。每個個域網都有一個獨立的ID號,即稱為PAN ID。整個個域網中的所有裝置共享同一個PAN ID。Zigbee裝置的PAN ID可以通過程式預先指定,也可以在裝置執行期間,自動加入到一個附近的PAN中。

二、定址

1、Zigbee裝置的地址型別

  Zigbee裝置有兩種不同的地址:16位短地址和64位IEEE地址。其中64位地址是全球唯一的地址,在裝置的整個生命週期內都將保持不同,它由國際IEEE組織分配,在晶片出廠時已經寫入晶片中,並且不能修改。而短地址是在裝置加入一個zigbee網路時分配的,它只在這個網路中唯一,用於網路內資料收發時的地址識別。但由於短地址有時並不穩定,由於網路結構的變化會發生改變,所以在某些情況下必須以IEEE地址作為通訊的目標地址,以保證資料有效送達。

2、FBee的地址分配方法
  FBee採用的是最新的Zigbee Pro的協議棧,在此版本的協議棧中:首先,在任何一個PAN中,短地址0x0000都是指協調器。而其他裝置的短地址是隨機生成的。當一個裝置加入網路之後,它從其父節點獲取一個隨機地址,然後向整個網路廣播一個包含其短地址和IEEE地址的“裝置宣告”(Device Announce),如果另外一個裝置收到此廣播後,發現與自己地址相同,它將發出一個“地址衝突”(Address Conflict)的廣播資訊。有地址衝突的裝置將全部重新更換地址,然後重複上述過程,直至整個網路中無地址衝突。

3、FBee裝置的短地址變化說明
  在FBee的“透傳”、“採集”與“控制”幾大功能中,裝置地址是至關重要的一個引數,只有地址設定正確,通訊才能按照預期進行。在此有必要對地址的使用進行詳細的說明。

  3.1 協調器和路由器的短地址
  協調器的短地址為0x0000,不會發生變化。而FBee的路由器短地址,是在其第一次上電時,按照上文2的規則,由其父節點成功分配一次之後,儲存在內部flash中,以後無論如何開關機都將保持不變。

  值得一提的是,正是由於這種簡單的網路結構,使用者可以選擇一個協調器+n個路由器的方式來組成一個無“低功耗”需求的網路,進行“無線透傳”等應用,簡單地使用短地址即可保證資料送達至正確的裝置。

  3.2 終端節點的短地址
  上述協調器+路由器的方式可以滿足部分應用,但無法體現Zigbee自組網與低功耗的優勢。這時就要發揮終端節點的特點。FBee終端節點的使用,將在後續章節中詳細說明,此處僅介紹其短地址變化規律與長地址的使用。

  FBee終端節點可實現Zigbee的“自組”、“自愈”功能。每次開啟終端節點的電源,它將自動檢查其附近的路由器/協調器與其連線的訊號質量,選擇訊號質量最好的路由為其父節點加入網路。在加入網路之後,它將週期性地傳送資料請求(MAC data requests),如果其父節點沒有對其請求進行響應,並且重試幾次後,仍無響應,則判定為父節點丟失,此時終端節點將重複上述過程,重新尋找並加入網路。

  注:由於FBee遵循的是Zigbee Pro的規範,重新加入新的父節點後,其短地址將保持不變。但在Zigbee 2007協議中,由於採用的是樹型的固定地址方式,在更換父地址後,節點短地址會發生變化。

  3.3 利用節點的長地址進行定址
  由於短地址的可變性,在具備可移動節點(End Device)的網路中,最好使用長地址進行通訊,以確保資料送到正確的裝置中。FBee模組可實現裝置的長地址定址,僅需一個簡單的ATDL指令即可。具體的操作將在後續章節進行介紹。

三、資料傳送方式
  針對FBee模組現有的資料傳送方式,我們重點介紹Zigbee的單播和廣播兩種方式。單播模式下面,資料由一個源裝置,傳送至一個目標裝置;而廣播模式,資料是由一個源裝置,傳送至很多,或者是所有的裝置。

1、單播方式
  單播方式下,資料由源裝置發出,直接或者經過幾級中轉後,傳送至目的地址。加入zigbee網路的所有裝置之間都可以進行單播傳輸,可用16位短地址或者64位長地址進行定址。具體路由關係由協調器/路由器進行維護、查詢。路由表的相關內容將在後續FBee API模式的章節中進行介紹。

2、廣播方式
  廣播方式是由一個裝置傳送資訊至整個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也已經收到了自己的廣播資訊,且成功中繼。

  以此類推,任何一個數據廣播都可以以這種方式,一步步往外蔓延,最終每個節點都成功收到資訊,而且保證資訊不會無止境地在網路間傳播。

  這種廣播方式成功地將通訊範圍擴大至整個網路,但由於這種資訊在網路間頻繁地轉發,導致網路負擔陡增,所以建議不要過分使用廣播方式,而且每次廣播的資料儘可能少,傳送的時間間隔儘量不要太短!