這一層是最上層了,包含三種東西

1. 應用程式支援 APS (Application Support)

2. 設備物件 ZDO (Zigbee Device Object)

3. 應用程式框架 AF (Application Framefork)

這一層一樣有預設值(constant)以及屬性(attribute),如同其他層一樣,預設值前面有apsc,屬性前面有aps關鍵字。這些東西存在APS IB內,而APS IB (APS Information Base) 屬於上面講的APS的管轄範圍。

在應用程式框架這一段,內有很多應用程式物件(Application Object),藉由AF,與ZDO以及APS溝通。定義上,每台device最多可以有240個應用程式物件,也配給每個應用程式物件一個端點(end point),作為溝通用,編號由1 ~ 240。

 

還有一個沒講到的,就是設備物件ZDO,他也要溝通,他使用特殊的端點,端點 0。還有一個特別的是端點255,若要把訊息廣播到所有的應用程式物件,就使用端點255。

 

<應用程式框架 AF (Application Framefork)>

Zigbee標準支援了profile這個概念,用來跟別的dvice互動。每個profile有一個16 bit的唯一編號,稱為profile ID。只有Zigbee聯盟有資格發布這個ID。

Profile內包含兩組最重要的東西,是Cluster 與 Description。這是兩組不是兩個。所以Cluster內有好多個,每個都用一個16bit 的cluster ID表示。而Description也是,包含好多個description,每個都用一個description ID表示。先講Cluster,他是一堆屬性(attribute)的組合。也就是說,每一個cluster ID的背後,代表一堆的attribute,當然,有一堆的東西,就會有ID,是的,每個在cluster內的attribute都有一個16 bit的ID,稱為attribute ID。

所以,cluster ,包含很多的cluster ID,每個cluster ID又代表一堆的attribute組合。

而Description也是,內部包含很多的description,每個用一個16 bit 的ID表示,稱為description ID。每個description ID背後代表5個描述子(descriptor),

1. 節點描述子 (node descriptor): 描述這是哪種節點,哪家公司製造的。

image

Logical type: 表明這是Coordinator, router 或是 end device,用三個bit表示。細節要用的時候再去看spec,記得要找 'node descriptor' 這個表格就行了。

Complex descriptor, user descriptor: 有用到的話,要設定起來。

 

2. 節點電源描述子 (node power descriptor): 描述節點是如何供電的,以及其電流的等級(current level)如何。

image

Current power mode: 指定接收機在idle時要不要開起,或是週期性開啟。

Available power source, Current power source: 指定電源形式,是有插電主電源的, 可充電電池,或是拋棄式電池。

Current power source level: 這個我不了解,以後再補。

3. 精簡描述子 (simple descriptor): 寫profile ID and cluster。

image

Endpoint: 這個端點的編號。

Application profile ID: 這個端點的profile ID。

這裡要提到 綁定(binding)的概念。我們知道每台device都有至多240個application object,每個applicaiton object 都有一個endpoint ID。以電燈控制為例子,第一台device內有兩個endpoint, 1號以及2號,都是開關。第二台device內有兩個燈泡 1號以及2號,都是燈泡。所以想當然第一台機器是輸出的,第二台機器是輸入的。若我們想要第一個開關控制第一個燈,第二的開關控制第二個燈,我們就需要將他們綁定,這個紀錄的地方稱為 綁定表 (binding table)。我們要將第一台機器的endpoint 1與第二台機器的endpoint 1 使用一樣的cluster ID,這樣就可以綁定了。

4. 詳細描述子 (complex descriptor): 額外的序號或是型號。

5. 使用者描述子 (user descriptor): user自己寫的內容,可以寫16 bytes。

 

<ZDO>

根據之前的圖,ZDO一端接AF一端接APS。ZDO本身也有一個profile,稱為ZDP (ZigBee Device Profile) 這個也可以件稱為device profile,這個profile包含description以及cluster。

機器探索(Device Discovery): 去找到同一個網路內機器的能力(ability)。

服務探索(Service Discovery): 去跟同一個網路的機器要資訊,如profile ID,cluster list等等。

Deivce profile可以被設定成client 或是server

Client: 機器要求綁定或是機器探索的服務。

Server: 回應要求或是提供服務的機器。

ZDP command是使用APS data service傳送的。他的傳送格式,是前面一個8bit的傳送序號,後面加上要傳送的資料。command 分成兩群,client service 以及server service,ZDP command 在任一群中,又切分為三類,所以在ZDO內就有三種物件來對應。

1. 機器與服務發現物件(Device discovery and service discovery object): 允許device要求資訊。

2. 綁定管理物件 (Bind managment object): 允許device新增與移除綁定的資訊。

3. 網路管理物件 (Network managment object): 管理路由資訊以及加入解散的機器等等。

 

ZDO還特別多了兩個物件

1. 網路管理物件 (network manager object): 包含網路管理的介面。

2. 安全管理物件 (security manager object): 包含安全相關的介面。

ZDO本身有特殊的屬性,這些屬性由config_ 關鍵字開始。

 

<APS>

APS的主要目的是提供資料服務給application object 以及ZDO。它包含三種原生(primitive)去執行三種工作

1. 綁定管理 (bind managment)

2. 資訊庫管理 (APS Information Base)

3. 群組管理 (Group managment)

 

我們之前介紹過ZigBee的三種通訊方式,廣播,多重播送,單一播送。現在APS提供了第四種 間接定址(indirect addressing)。在這種狀況下,device想傳輸,但是卻不知道目的地的位址,可以直接送給coordinator,然後coordinator可以從綁定表查詢,根據來源位址,端點位址,叢集ID (cluster ID),最後重新傳輸訊息到對應的端點。

<APS 框架>

APS的框架有三種,

1. 資料 (Data)

2. 命令 (Command)

3. 認可 (Acknowledgment)

傳輸時有個傳輸欄位的選項,有四種選擇

1. 正常單一發送 (normal unicast delivery)

2. 間接定址 (indirect addressing): 目的地位址需省略。要是你是間接定址,又寫位址,代表是coordinator傳出來的。

3. 廣播 (Broadcast)

4. 群組定址 (Group addressing)

創作者介紹
創作者 oldmonkey的部落格 的頭像
oldmonkey

oldmonkey的部落格

oldmonkey 發表在 痞客邦 留言(0) 人氣( 1775 )