Zigbee协议术语

Zigbee协议术语

ZigBee学习时,需要理解几个基本术语:簇(Cluster)、端点(Endpoint)、属性(Attribute),配置文件(profile)。

概念如下:

配置文件(profile):Zigbee协议的配置文件是对逻辑组件及其相关接口的描述,是面向某个应用类别的公约、准则.通常没有程序代码与配置文件相关联.

属性(attribute):设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性.每个属性可得到唯一的ID值.

簇(cluster):多个属性的汇集形成了簇,每个簇也拥有一个唯一的ID.虽然个体之间传输的通常是属性信息,但所谓的逻辑组件的接口指的却是簇一级的操作,而非属性一级.

终端(endpoint):每个支持一个或多个簇的代码功能块称为终端.不同的设备通过它们的终端及所支持的簇来进行通信.

配置文件定义了属性ID与簇ID,使之看起来就像设备的某种特性.以家庭智能控制系统为例,灯配置文件设定了远程控制设备的簇OnOffDRC含有一种属性OnOff,且该属性为无符号8位值,值0XFF意味着"开",0X00为关,0XF0则为无效。通常,配置文件也为设备定义了,哪些簇是强制托管的,哪些簇是可选择的。另外,配置文件还定义了一些可选择的Zigbee协议托管服务.

基于簇及配置所定义的服务,用户可使用配置文件中定义的属性编写所需的函数.改写自己的程序代码.因此,配置文件使得ZigBee 设备可以互操作。任何遵循某一标准配置文件的节点都可以与其他实现相同配置文件的节点进行互操作。也就是说,在使用同一标准配置文件进行设计的基础上,即使生产开关的厂家与生产控制器的厂家不同,他们生产的产品仍可实现协同操作.

以家庭智能系统中的灯光控制为例,灯配置文件定义了6个设备,协议栈通过带有以下信息的报头文件对此配置提供支持:配置(profile)ID,设备ID及版本,簇ID,属性ID,属性数据类型.

下图(1)显示了不同术语之间的关系,对于家庭智能控制系统的灯光配置,图中给出了两种设备(相当于两个节点).每种设备各有一个终端(当然可以有多个终端,终端1-终端240).负荷切换控制器的终端中仅有一个输入簇,而远程转换控制终端则有两个簇,且分别为一个输入一个输出.数据的传输基于簇而进行.

从图中可以看出,每一个设备可以包含多个终端。设备的终端可以从1到240(终端0为ZDO所用,终端241-255保留),可以理解为对应于240种不同的网络应用。设备中的每一个终端可以有多个簇,按照簇的接口方向来划分,可以分为输入簇和输出簇两种。在ZigBee的一个终端中既可以有输入簇也可以有输出簇。一个终端中的输出簇要能够控制另外一个端点中的输入簇必须要求这两个簇具有相同的簇标识符(ClustcrID)。

例如在家庭照明控制灯规范中,zjgBee为遥控开关控制器(开关)定义了一个必要的输出簇:OnOffSRC。它也为开关负载控制器(灯)定义了一个必要的输入簇:OnOffSRC。这两个簇的ClustedD都是OnOffSRC,因此开关便可以通过这个簇来对灯进行控制。ZigBee在OnOffSRC簇中定义了一个属性OnOff。为它定义了三种不同的属性值,分别是oxFF表示On,oxoo表示Oif,0xF0表示Toggle。当需要打开照明灯时,遥控开关便通过应用层KVP消息,发送Set命令将照明灯OnOffSRC簇中OnOff属性设置为On。同样,如果需要关闭照明灯时,也可以通过Set命令将照明灯OnOflSRC簇中OnOff设置为Off。Toggle属性值的意义是,如果电灯在开的状态下,设置这个值将会把电灯关掉;如果电灯是关闭状态,通过设定这个属性值则又会把电灯打开。

根据网上资料一些理解:

Cluster: is a container for one or more attributes. (一个或更多属性的集合)

Attribute: a data entity which represents a physical quantity or state.(反映物理特性或状态的一个数据实体)Cluster是逻辑设备之间的事务关系Cluster定性

Attribute则是某种事务关系的具体特例Attribute定量

Endpoint是一个逻辑设备(个人理解为入口地址)。而一个Endpoint可以包含多个Cluster,每个Cluster包含不同的属性,这就是用来更加细分的了,Endpoint之间依据“事务关系”(cluster)通讯.

--------------------------------------------------------------------------------------

一个节点除了64位的IEEE地址,16位的网络地址,每个节点还提供了8位的应用层入口地址(端点:EndPoint),对应于用户应用对象。端点0为ZDO接口,端点I至240供用户自定义应用对象使用,端点255为广播地址,端点241—254保留为将来使用。

每一个应用都对应一个配置文件(Profile)。配置文件内容包括:设备ID(Device ID),事务ID(Cluster ID),属性ID(Attribute ID),及AF使用何种服务类型等信息。在zigbee协议中,一个配置文件中允许最多2^16个设备(16位表示),2^8个事务,每个事务支持最多约2^16个属性。

例:由zigbee联盟给出的HomeControlLighting,是针对家庭灯控应用的配置文件,灯设备和按钮设备便是其中两种设备类型,点灯即是一项方法,灯状态便是该项事件的其中一个属性。

-----------------------------------------------------------------------------------------

如下图:

节点一Z1:自动调温装置;

节点二Z2:烤炉控制器;

Event:开关2控制灯4的亮灭

cluster:灯控制;

Endpoint:灯(EP17)和开关(EP21);

Attribute:开、关;

灯控制这个Cluster包含了不同情况的attribute开或关);

一个设备可以有240个终端(EP1-EP240),每一个终端必须有一个终端描述符endPointDesc(终端描述符里包括一个简单描述符SimpleDescriptionFormat),都用结构体来描述。

typedef struct

{

byte endPoint; //终端号1-240

byte *task_id; //任务ID指针

SimpleDescriptionFormat_t*simpleDesc; //简单描述符!!!

afNetworkLatencyReq_t latencyReq; //noLatencyReqs

} endPointDesc_t; //终端描述符

typedef struct

{

byte EndPoint; //终端号1-240

uint16 AppProfId; //支持的Profile ID

uint16 AppDeviceId; //支持的设备ID

byte AppDevVer:4; //执行的设备描述的版本

byte Reserved:4; //保留

byte AppNumInClusters; //终端支持的输入簇数目

cId_t *pAppInClusterList; //指向输入Cluster ID列表的指针

byte AppNumOutClusters; //终端支持的输出簇数目

cId_t *pAppOutClusterList; //指向输出Cluster ID列表的指针

} SimpleDescriptionFormat_t; //简单描述符

一个设备可以有240个终端(EP1-EP240),这些终端存在于一个列表中,epList是指向这个终端列表条目的指针。而每个终端列表条目也是由结构体来描述的。

typedef struct

{

endPointDesc_t *epDesc; //终端描述符(里面包含了简单描述符)

eEP_Flags flags; //终端标志位?这里我还不大清楚

pDescCB pfnDescCB; // 回调函数Don't use if this function pointer is NULL.

void *nextDesc; //指向下一终端列表条目的描述符??用到链表,数据结构中的知识,不大清楚,以后再说} epList_t; /* epList_t:终端列表条目结构体*/

相关主题
相关文档
最新文档