ZigBee入門之基礎概念3
阿新 • • 發佈:2018-12-30
第三講:
zigbee術語
射頻收發器:如cc2420
一個節點可以對應多個裝置
一個裝置包含多個端點
每個端點又有很多群集(輸出群集、輸入群集)
每個群集有一個或多個屬性
屬性 Attribute 是一個反映物理數量或狀態的資料值,比如開關值(On/Off) ,溫度值、百
分比等。
群集(簇) Cluster 是包含一個或多個屬性(attribute)的群組。簡單的說,群集就是屬性的集合。
每個群集都被分配一個唯一的群集 ID 且每個群集最多有 65536 個屬性
裝置描述 Device Description 是指一個大型目標應用的一部分,包括一個或多個群集,並且
指定群集是輸入還是輸出。描述符有:節點描述符、電源描述符、簡單描述符、端點描述符。
重點使用:簡單描述符,端點描述符
描述符在c語言上的體現就是一個結構體,定義在應用層下的SampleApp.h下
端點
端點 EndPoint 是協議棧應用層的入口,也可以理解應用物件(Application Object)存在的
地方,它是為實現一個裝置描述而定義的一組群集。每個 ZigBee 裝置可以最多支援 240 這樣
的端點, 這也意味著在每個裝置上可以定義 240 個應用物件。 端點 0 被保留用於與 ZDO 介面,
這是每個 ZigBee 裝置必須使用的端點,而端點 255 被保留用於廣播,端點 241-254 則被保留用
於將來做擴充套件使用。
節點
節點 Node 也可以理解為一個容器,包含一組 ZigBee 裝置,分享一個無線通道。每個節點
有且只有一個無線通道使用。
繫結
在 zigaee 協議中定義了一種特殊的操作, 叫做繫結(binding)操作。 它能夠通過使用 ClusterID
為不同節點上的獨立端點建立一個邏輯上的連線。
網路中的兩個節點分別為 Z1 和 Z2,其中 Zl 節點中包含兩個獨立端點分別是
EP3 和 EP21,它們分別表示開關 1 和開關 2。Z2 節點中有 EP5、EP7、EP8、EPl7 四個端點分
別表示從 l 到 4 這四盞燈。在網路中,通過建立 ZigBee 繫結操作,可以將 EP3 和 EP5、EP7、
EP8 進行繫結,將 EP21 和 EPl7 進行繫結。這樣開關 I 便可以同時控制電燈 l、2、3,開關 2
便可以控制電燈 4。利用繫結操作,還可以更改開關和電燈之間的繫結關係,從而形成不同
的控制關係。從這個例子,可以看出繫結操作能夠使使用者的應用變得更加方便靈活。
要實現繫結操作,端點必須向協調器傳送繫結請求,協調器在有限的時間間隔內接收到兩
個端點的繫結請求後, 便通過建立端點之間的繫結表在這兩個不同的端點之間形成了一個邏輯
鏈路。因此,在繫結後的兩個端點之間進行訊息傳送的過程屬於訊息的間接傳送。其中一個端
點首先會將資訊傳送到 ZigBee 協調器中,ZigBee 協調器在接收到訊息後會通過查詢繫結表,
將訊息傳送到與這個端點相繫結的所有端點中,從而實現了繫結端點之間的通訊。
路由
路由對與應用層來說是完全透明的。應用程式只需簡單的向下傳送去往任何裝置的資料到
棧中,棧會負責尋找路徑。這種方法,應用程式不知道操作是在一個多跳的網路當中的。
路由還能夠自愈 ZigBee 網路, 如果某個無線連線斷開了, 路由功能又能自動尋找一條新的
路徑避開那個斷開的網路連線。這就極大的提高了網路的可靠性,同時也是 ZigBee 網路的一
個關鍵特性。
.2 路由協議 (Routing Protocol)
ZigBee 執行基於用於 AODV 專用網路的路由協議。簡化後用於感測器網路。ZigBee 路由
協議有助於網路環境有能力支援移動節點,連線失敗和資料包丟失。
當路由器從他自身的應用程式或者別的裝置那裡收到一個單點發送的資料包,則網路層
(NWK Layer)根據一下程式將它繼續傳遞下去。如果目標節點是它相鄰路由器中的一個,則數
據包直接被傳送給目標裝置。否則,路由器將要檢索它的路由表中與所要傳送的資料包的目標
地址相符合的記錄。如果存在與目標地址相符合的活動路由記錄,則資料包將被髮送到儲存在
記錄中的下一級地址中去。如果沒有發現任何相關的路由記錄,則路由器發起路徑尋找,資料
包儲存在緩衝區中知道路徑尋找結束。
ZigBee 終端節點不執行任何路由功能。終端節點要向任何一個裝置傳送資料包,它只需簡
單的將資料向上傳送給它的父親裝置,由它的父親裝置以它自己的名義執行路由。同樣的,任
何一個裝置要給終端節點發送資料, 發起路由尋找, 終端節的的父親節點都已它的名義來回應。
注意 ZigBee 地址分配方案使得對於任何一個目標裝置,根據它的地址都可以得到一條路徑。
在 Z-Stack 中,如果萬一正常的路徑尋找過程不能啟動的話(通常由於缺少路由表空間),那麼
Z-Stack 擁有自動回退機制。
此外,在 Z-Stack 中,執行的路由已經優化了路由表記錄。通常,每一個目標裝置都需要
一條路由表記錄。但是,通過把一定父親節點記錄與其子所有子結點的記錄合併,這樣既可以
優化路徑也可以不喪失任何功能。
ZigBee 路由器,包括協調器執行下面的路由函式:(i)路徑發現和選擇;(ii)路徑保持維護;
(iii)路徑期滿。
路徑的發現和選擇 (Route Discovery and Selection)
路徑發現是網路裝置憑藉網路相互協作發現和建立路徑的一個過程。路由發現可以由任意
一個路由裝置發起,並且對於某個特定的目標裝置一直執行。路徑發現機制尋找源地址和目標
地址之間的所有路徑,並且試圖選擇可能的最好的路徑。
路徑選擇就是選擇出可能的最小成本的路徑。每一個結點通常持有跟它所有鄰接點的“連
接成本(link costs)” 。通常,連線成本的典型函式是接收到的訊號的強度。沿著路徑,求出所有
連線的連線成本總和,便可以得到整個路徑的“路徑成本” 。路由演算法試圖尋找到擁有最小路
徑成本的路徑。
路徑通過一系列的請求和回覆資料包被發現。源裝置通過向它的所有鄰接節點廣播一個路
由請求資料包,來請求一個目標地址的路徑。當一個節點接收到 RREQ 資料包,它依次轉發
RREQ 資料包。但是在轉發之前,它要加上最新的連線成本,然後更新 RREQ 資料包中的成本
值。這樣,沿著所有它通過的連線,RREQ 資料包攜帶著連線成本的總和。這個過程一直持續
到 RREQ 資料包到達目標裝置。通過不同的路由器,許多 RREQ 副本都將到達目標裝置。目
標裝置選擇最好的RREQ資料包, 然後發回一個路徑答覆資料包(a Route Reply)RREP給源裝置。
RREP 資料包是一個單點發送資料包,它沿著中間節點的相反路徑傳送直到它到達原來發送請
求的節點為止。
一旦一條路徑被建立,資料包就可以傳送了。當一個結點與它的下一級相鄰節點失去了連
接(當它傳送資料時,沒有收到 MAC ACK),該節點向所有等待接收它的 RREQ 資料包的節點
傳送一個 RERR 資料包,將它的路徑設為無效。各個結點根據收到的資料包 RREQ、RREP 或
者 RERR 來更新它的路由表。
路徑保持維護
網狀網提供路徑維護和網路自愈功能。中間節點沿著連線跟蹤傳送失敗,如果一個連線被
認定是壞鏈,那麼上游節點將針對所有使用這條連線的路徑啟動路徑修復。節點發起重新發現
直到下一次資料包到達該節點,標誌路徑修復完成。如果不能夠啟動路徑發現或者由於某種原
因失敗了,節點則向資料包的源節點發送一個路徑錯誤包(RERR),它將負責啟動新路徑的發
現。這兩種方法,路徑都自動重建。
路徑期滿 (Route expiry)
路由表為已經建立連線路徑的節點維護路徑記錄。如果在一定的時間週期內,沒有資料通
過沿著這條路徑傳送,這條路徑將被表示為期滿。期滿的路徑一直保留到它所佔用的空間要被
使用為止。這樣,路徑在絕對不使用之前不會被刪除掉的。在配臵檔案 f8wConfig.cfg 檔案中配
臵自動路徑期滿時間。設臵 ROUTE_EXPIRY_TIME 為期滿時間,單位為秒。如果設臵為 0,
則表示關閉自動期滿功能。
ZigBee 原語
ZigBee 協議按照開放系統互聯的 7 層模型將協議分成了一系列的層結構,各層之間通過相
應的服務訪問點來提供服務。 這樣使得處於協議中的不同層能夠根據各自的功能進行獨立的運
作,從而使整個協議棧的結構變得清晰明朗。另一方面,由於 ZigBee 協議棧是一個有機的整
體,任何 ZigBee 裝置要能夠正確無誤的工作,就要求協議棧各層之間共同協作。因此,層與
層之問的資訊互動就顯得十分重要。 ZigBee 協議為了實現層與層之間的關聯, 採用了稱為服務
“原語"的操作
服務由 N 使用者和 N 層之問資訊流的描述來指定。這個資訊流由離散瞬時事件構成,以提
供服務的特徵。每個事件由服務原語組成,它將在一個使用者的某一
層,通過與該層相關聯的層服務訪問 A(SAP)與建立對等連線的使用者的相同層之
問傳送。層與層之間的原語一般情況下可以分為 4 種類型:
◆ 請求:請求原語從 NI 使用者傳送到它的 N 層,請求發起一個服務。
◆ 指示:指示原語從 N 層到 N2 使用者,指示一個對 N2 使用者有重要意義外部 N
層事件。這個事件可能與一個遠端的服務請求有關,或者由內部事件產生。
◆ 響應:響應原語由 N2 使用者向它的 N 層傳遞,用來響應上一個由指示原語引
起的過程。
◆ 確認:確認原語由 N 層向 Nl 使用者傳遞,用來傳遞與前面一個或多個服務請
求相關的執行結果。
zigbee術語
射頻收發器:如cc2420
一個節點可以對應多個裝置
一個裝置包含多個端點
每個端點又有很多群集(輸出群集、輸入群集)
每個群集有一個或多個屬性
屬性 Attribute 是一個反映物理數量或狀態的資料值,比如開關值(On/Off) ,溫度值、百
分比等。
群集(簇) Cluster 是包含一個或多個屬性(attribute)的群組。簡單的說,群集就是屬性的集合。
每個群集都被分配一個唯一的群集 ID 且每個群集最多有 65536 個屬性
裝置描述 Device Description 是指一個大型目標應用的一部分,包括一個或多個群集,並且
指定群集是輸入還是輸出。描述符有:節點描述符、電源描述符、簡單描述符、端點描述符。
重點使用:簡單描述符,端點描述符
描述符在c語言上的體現就是一個結構體,定義在應用層下的SampleApp.h下
端點
端點 EndPoint 是協議棧應用層的入口,也可以理解應用物件(Application Object)存在的
地方,它是為實現一個裝置描述而定義的一組群集。每個 ZigBee 裝置可以最多支援 240 這樣
的端點, 這也意味著在每個裝置上可以定義 240 個應用物件。 端點 0 被保留用於與 ZDO 介面,
這是每個 ZigBee 裝置必須使用的端點,而端點 255 被保留用於廣播,端點 241-254 則被保留用
於將來做擴充套件使用。
節點
節點 Node 也可以理解為一個容器,包含一組 ZigBee 裝置,分享一個無線通道。每個節點
有且只有一個無線通道使用。
繫結
在 zigaee 協議中定義了一種特殊的操作, 叫做繫結(binding)操作。 它能夠通過使用 ClusterID
為不同節點上的獨立端點建立一個邏輯上的連線。
網路中的兩個節點分別為 Z1 和 Z2,其中 Zl 節點中包含兩個獨立端點分別是
EP3 和 EP21,它們分別表示開關 1 和開關 2。Z2 節點中有 EP5、EP7、EP8、EPl7 四個端點分
別表示從 l 到 4 這四盞燈。在網路中,通過建立 ZigBee 繫結操作,可以將 EP3 和 EP5、EP7、
EP8 進行繫結,將 EP21 和 EPl7 進行繫結。這樣開關 I 便可以同時控制電燈 l、2、3,開關 2
便可以控制電燈 4。利用繫結操作,還可以更改開關和電燈之間的繫結關係,從而形成不同
的控制關係。從這個例子,可以看出繫結操作能夠使使用者的應用變得更加方便靈活。
要實現繫結操作,端點必須向協調器傳送繫結請求,協調器在有限的時間間隔內接收到兩
個端點的繫結請求後, 便通過建立端點之間的繫結表在這兩個不同的端點之間形成了一個邏輯
鏈路。因此,在繫結後的兩個端點之間進行訊息傳送的過程屬於訊息的間接傳送。其中一個端
點首先會將資訊傳送到 ZigBee 協調器中,ZigBee 協調器在接收到訊息後會通過查詢繫結表,
將訊息傳送到與這個端點相繫結的所有端點中,從而實現了繫結端點之間的通訊。
路由
路由對與應用層來說是完全透明的。應用程式只需簡單的向下傳送去往任何裝置的資料到
棧中,棧會負責尋找路徑。這種方法,應用程式不知道操作是在一個多跳的網路當中的。
路由還能夠自愈 ZigBee 網路, 如果某個無線連線斷開了, 路由功能又能自動尋找一條新的
路徑避開那個斷開的網路連線。這就極大的提高了網路的可靠性,同時也是 ZigBee 網路的一
個關鍵特性。
.2 路由協議 (Routing Protocol)
ZigBee 執行基於用於 AODV 專用網路的路由協議。簡化後用於感測器網路。ZigBee 路由
協議有助於網路環境有能力支援移動節點,連線失敗和資料包丟失。
當路由器從他自身的應用程式或者別的裝置那裡收到一個單點發送的資料包,則網路層
(NWK Layer)根據一下程式將它繼續傳遞下去。如果目標節點是它相鄰路由器中的一個,則數
據包直接被傳送給目標裝置。否則,路由器將要檢索它的路由表中與所要傳送的資料包的目標
地址相符合的記錄。如果存在與目標地址相符合的活動路由記錄,則資料包將被髮送到儲存在
記錄中的下一級地址中去。如果沒有發現任何相關的路由記錄,則路由器發起路徑尋找,資料
包儲存在緩衝區中知道路徑尋找結束。
ZigBee 終端節點不執行任何路由功能。終端節點要向任何一個裝置傳送資料包,它只需簡
單的將資料向上傳送給它的父親裝置,由它的父親裝置以它自己的名義執行路由。同樣的,任
何一個裝置要給終端節點發送資料, 發起路由尋找, 終端節的的父親節點都已它的名義來回應。
注意 ZigBee 地址分配方案使得對於任何一個目標裝置,根據它的地址都可以得到一條路徑。
在 Z-Stack 中,如果萬一正常的路徑尋找過程不能啟動的話(通常由於缺少路由表空間),那麼
Z-Stack 擁有自動回退機制。
此外,在 Z-Stack 中,執行的路由已經優化了路由表記錄。通常,每一個目標裝置都需要
一條路由表記錄。但是,通過把一定父親節點記錄與其子所有子結點的記錄合併,這樣既可以
優化路徑也可以不喪失任何功能。
ZigBee 路由器,包括協調器執行下面的路由函式:(i)路徑發現和選擇;(ii)路徑保持維護;
(iii)路徑期滿。
路徑的發現和選擇 (Route Discovery and Selection)
路徑發現是網路裝置憑藉網路相互協作發現和建立路徑的一個過程。路由發現可以由任意
一個路由裝置發起,並且對於某個特定的目標裝置一直執行。路徑發現機制尋找源地址和目標
地址之間的所有路徑,並且試圖選擇可能的最好的路徑。
路徑選擇就是選擇出可能的最小成本的路徑。每一個結點通常持有跟它所有鄰接點的“連
接成本(link costs)” 。通常,連線成本的典型函式是接收到的訊號的強度。沿著路徑,求出所有
連線的連線成本總和,便可以得到整個路徑的“路徑成本” 。路由演算法試圖尋找到擁有最小路
徑成本的路徑。
路徑通過一系列的請求和回覆資料包被發現。源裝置通過向它的所有鄰接節點廣播一個路
由請求資料包,來請求一個目標地址的路徑。當一個節點接收到 RREQ 資料包,它依次轉發
RREQ 資料包。但是在轉發之前,它要加上最新的連線成本,然後更新 RREQ 資料包中的成本
值。這樣,沿著所有它通過的連線,RREQ 資料包攜帶著連線成本的總和。這個過程一直持續
到 RREQ 資料包到達目標裝置。通過不同的路由器,許多 RREQ 副本都將到達目標裝置。目
標裝置選擇最好的RREQ資料包, 然後發回一個路徑答覆資料包(a Route Reply)RREP給源裝置。
RREP 資料包是一個單點發送資料包,它沿著中間節點的相反路徑傳送直到它到達原來發送請
求的節點為止。
一旦一條路徑被建立,資料包就可以傳送了。當一個結點與它的下一級相鄰節點失去了連
接(當它傳送資料時,沒有收到 MAC ACK),該節點向所有等待接收它的 RREQ 資料包的節點
傳送一個 RERR 資料包,將它的路徑設為無效。各個結點根據收到的資料包 RREQ、RREP 或
者 RERR 來更新它的路由表。
路徑保持維護
網狀網提供路徑維護和網路自愈功能。中間節點沿著連線跟蹤傳送失敗,如果一個連線被
認定是壞鏈,那麼上游節點將針對所有使用這條連線的路徑啟動路徑修復。節點發起重新發現
直到下一次資料包到達該節點,標誌路徑修復完成。如果不能夠啟動路徑發現或者由於某種原
因失敗了,節點則向資料包的源節點發送一個路徑錯誤包(RERR),它將負責啟動新路徑的發
現。這兩種方法,路徑都自動重建。
路徑期滿 (Route expiry)
路由表為已經建立連線路徑的節點維護路徑記錄。如果在一定的時間週期內,沒有資料通
過沿著這條路徑傳送,這條路徑將被表示為期滿。期滿的路徑一直保留到它所佔用的空間要被
使用為止。這樣,路徑在絕對不使用之前不會被刪除掉的。在配臵檔案 f8wConfig.cfg 檔案中配
臵自動路徑期滿時間。設臵 ROUTE_EXPIRY_TIME 為期滿時間,單位為秒。如果設臵為 0,
則表示關閉自動期滿功能。
ZigBee 原語
ZigBee 協議按照開放系統互聯的 7 層模型將協議分成了一系列的層結構,各層之間通過相
應的服務訪問點來提供服務。 這樣使得處於協議中的不同層能夠根據各自的功能進行獨立的運
作,從而使整個協議棧的結構變得清晰明朗。另一方面,由於 ZigBee 協議棧是一個有機的整
體,任何 ZigBee 裝置要能夠正確無誤的工作,就要求協議棧各層之間共同協作。因此,層與
層之問的資訊互動就顯得十分重要。 ZigBee 協議為了實現層與層之間的關聯, 採用了稱為服務
“原語"的操作
服務由 N 使用者和 N 層之問資訊流的描述來指定。這個資訊流由離散瞬時事件構成,以提
供服務的特徵。每個事件由服務原語組成,它將在一個使用者的某一
層,通過與該層相關聯的層服務訪問 A(SAP)與建立對等連線的使用者的相同層之
問傳送。層與層之間的原語一般情況下可以分為 4 種類型:
◆ 請求:請求原語從 NI 使用者傳送到它的 N 層,請求發起一個服務。
◆ 指示:指示原語從 N 層到 N2 使用者,指示一個對 N2 使用者有重要意義外部 N
層事件。這個事件可能與一個遠端的服務請求有關,或者由內部事件產生。
◆ 響應:響應原語由 N2 使用者向它的 N 層傳遞,用來響應上一個由指示原語引
起的過程。
◆ 確認:確認原語由 N 層向 Nl 使用者傳遞,用來傳遞與前面一個或多個服務請
求相關的執行結果。