ZigBee.docx

上传人:b****4 文档编号:6067463 上传时间:2023-05-09 格式:DOCX 页数:27 大小:815.79KB
下载 相关 举报
ZigBee.docx_第1页
第1页 / 共27页
ZigBee.docx_第2页
第2页 / 共27页
ZigBee.docx_第3页
第3页 / 共27页
ZigBee.docx_第4页
第4页 / 共27页
ZigBee.docx_第5页
第5页 / 共27页
ZigBee.docx_第6页
第6页 / 共27页
ZigBee.docx_第7页
第7页 / 共27页
ZigBee.docx_第8页
第8页 / 共27页
ZigBee.docx_第9页
第9页 / 共27页
ZigBee.docx_第10页
第10页 / 共27页
ZigBee.docx_第11页
第11页 / 共27页
ZigBee.docx_第12页
第12页 / 共27页
ZigBee.docx_第13页
第13页 / 共27页
ZigBee.docx_第14页
第14页 / 共27页
ZigBee.docx_第15页
第15页 / 共27页
ZigBee.docx_第16页
第16页 / 共27页
ZigBee.docx_第17页
第17页 / 共27页
ZigBee.docx_第18页
第18页 / 共27页
ZigBee.docx_第19页
第19页 / 共27页
ZigBee.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ZigBee.docx

《ZigBee.docx》由会员分享,可在线阅读,更多相关《ZigBee.docx(27页珍藏版)》请在冰点文库上搜索。

ZigBee.docx

ZigBee

1.      ZigBee简介

1.1.    概述

zigbee协议栈结构由一些层构成,每个层都有一套特定的服务方法和上一层连接,称为协议。

数据实体(dataentity)提供数据的传输服务,而管理实体(managemententity)提供所有的服务类型。

每个层的服务实体通过服务接入点(serviceaccesspointSAP)和上一层相接,每个SAP提供大量服务方法来完成相应的操作。

zigbee协议栈基于标准的OSI七层模型,但只是在相关范围来定义一些相应层来完成特定的任务。

IEEE802.15.4-2003标准定义了下面的两个层:

物理层(PHY层)和媒介层(MAC层)。

zigbee联盟在此基础上建立了网络层(NWK层)以及应用层(APL层)的框架(framework)。

APL层又包括应用支持子层(applicationsupportsub-layerAPS),zigbee的设备对象(zigbeedeviceobjectZDO)以及制造商定义的应用对象。

 

1.2.    缩略语和简称

AIB                      应用支持层的信息库

AF                       应用框架

APDU                  应用支持子层协议数据单元

APL                     应用层

APS                     应用支持子层

APSDE                应用支持子层数据实体

APSDE-SAP       应用支持子层数据实体-服务接入点

APSME               应用支持子层管理实体

APSME-SAP      应用支持子层管理实体-服务接入点

ASDU                  APS服务数据单元

MAC                   媒体访问控制

MCPS-SAP         媒体访问控制公用部分子层-服务接入点

MLME-SAP        媒体访问控制子层管理实体-服务接入点

MSG                    信息服务类型

NHLE                  上层实体

NIB                            网络层信息库

NWK                  网络

OSI                      开放式系统互连

PAN                    个人区域网络

PDU                    协议数据单元

PHY                    物理层

QOS                    服务质量

RREP                   路由应答

RREQ                  路由请求

SAP                     服务接入点

ZB                       ZigBee

ZDO                    ZigBee设备对象

1.3.    ZDO

ZigBee设备对象(ZDO)描述了一个基本的功能函数类,在应用对象、设备profile和APS之间提供了一个接口。

ZDO位于应用框架和应用支持子层之间,它满足zigBee协议栈所有应用操作的一般要求。

ZDO还有以下作用:

(1)初始化应用支持子层(APS)、网络层(NWK)和安全服务文档(SSS);

(2)从终端应用中集合配置信息来确定和执行发现、安全管理、网络管理、以及绑定管理。

ZDO描述了应用框架层的应用对象的公用接口,控制设备和应用对象的网络功能。

在终端节点0,ZDO提供了与协议栈中下一层相接的接口。

1.4.    AF

ZigBee应用层框架是应用设备和ZigBee设备连接的环境。

在应用层框架中,应用对象发送和接收数据通过APSDE.SAP,而对应用对象的控制和管理则通过ZDO公用接口来实现。

APSDE.SAP提供的数据服务包括请求、确认、响应以及数据传输的指示信息。

有240个不同的应用对象能够被定义,每个终端节点的接口标识从l到240,还有两个附加的终端节点为了APSDE.SAP的使用。

标识0被用于ZDO的数据接口,255则用于所有应用对象的广播数据接口,而241.254予以保留。

使用APSDE-SAP提供的服务,应用层框架提供了应用对象的两种数据服务类型:

主值对服务(KeyValuePairservice,KVP)和通用信息服务(GenericMessageService,MSG)。

两者传输机制一样,不同的是MSG并不采用应用支持子层(APS)数据帧的内容,而是留给profile应用者自己去定义。

1.5.    APS

应用支持子层在网络层和应用层之间提供了一个接口,接口的提供是通过ZDO和制造商定义的应用设备共同使用的一套通用的服务机制,此服务机制是由两个实体提供:

通过APS数据实体接入点(APSDE.SAP)的APS数据实体(APSDE),通过APS管理实体接入点(APSME.SAP)的APS管理实体(APSME)。

APSDE提供数据传输服务对于应用PDUs的传送在同一网络的两个或多个设备之间。

APSME提供服务以发现和绑定设备并维护一个管理对象的数据库,通常称为APS信息库(AIB)。

1.6.    NWK

网络层建立新的网络、处理节点的进入和离开网络、根据网络类型设置节点的协议堆栈、使网络协调器对节点分配地址、保证节点之间的同步、提供网络的路由。

网络层确保MAC子层的正确操作,并为应用层提供合适的服务接口。

为了给应用层提供合适的接口,网络层用数据服务和管理服务这两个服务实体来提供必需的功能。

网络层数据实体(NLDE)通过相关的服务接入点(SAP)来提供数据传输服务,即NLDE.SAP;网络层管理实体(NLME)通过相关的服务接入点(SAP)来提供管理服务,即NLME.SAP。

NLME利用NLDE来完成一些管理任务和维护管理对象的数据库,通常称作网络信息库(NetworkInformationBase,NIB)。

1.7.    MAC

MAC层遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址。

它可完成对无线物理信道的接入过程管理,包括以下几方面:

网络协调器(coordinator)产生网络信标、网络中设备与网络信标同步、完成PAN的入网和脱离网络过程、网络安全控制、利用CSMA-CA机制进行信道接入控制、处理和维持GTS(GuaranteedTimeSlot)机制、在两个对等的MAC实体间提供可靠的链路连接。

1、数据传输模型:

MAC规范定义了三种数据传输模型:

数据从设备到网络协调器、从网络协调器到设备、点对点对等传输模型。

对于每一种传输模型,又分为信标同步模型和无信标同步模型两种情况。

在数据传输过程中,ZigBee采用了CSMA/CA碰撞避免机制和完全确认的数据传输机制,保证了数据的可靠传输。

同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。

2、帧结构定义:

MAC规范定义了四种帧结构:

信标帧、数据帧、确认帧和MAC命令帧。

1.8.    PHY

IEEE802.15.4协议的物理层是协议的最底层,承担着和外界直接作用的任务。

它采用扩频通信的调制方式,控制RF(radiofrequency 射频)收发器工作,信号传输距离约为50m(室内)或150m(室外)。

IEEE802.15.4.2003有两个PHY层,提供两个独立的频率段:

868/915MHz和2.4GHz。

868/915MHz频段包括欧洲使用的868MHz频段以及美国和澳大利亚使用的915MHz频段,2.4GHz频段世界通用。

1.9.    ZigBee术语

1.9.1.      属性

属性Attribute是一个反映物理数量或状态的数据值,比如开关值(On/Off) ,温度值、百分比等。

1.9.2.      群集

群集Cluster是包含一个或多个属性(attribute)的群组。

简单的说,群集就是属性的集合。

每个群集都被分配一个唯一的群集ID 且每个群集最多有65536个属性。

1.9.3.      设备描述

设备描述DeviceDescription是指一个大型目标应用的一部分,包括一个或多个群集,并且指定群集是输入还是输出。

1.9.4.      端点

端点EndPoint是协议栈应用层的入口,也可以理解应用对象(ApplicationObject)存在的地方,它是为实现一个设备描述而定义的一组群集。

每个ZigBee设备可以最多支持240这样的端点,这也意味着在每个设备上可以定义240个应用对象。

端点0被保留用于与ZDO接口而端点255被保留用于广播,端点241-254则被保留用于将来做扩展使用。

1.9.5.      节点

节点Node也可以理解为一个容器,包含一组ZigBee设备,分享一个无线信道。

每个节点有且只有一个无线信道使用。

2.      参考资料

[B1]Z-StackDeveloper'sGuide_F8W-2006-0022

[B2]Z-StackAPI_F8W-2006-0021

[B3]ZigBee2006协议规范完整版(中)

[B4] 网络博客,文章

[B5] 基于MSP430的ZigBee/802.15.4解决方案

3.      设备类型和栈配置

在由ZigBee协议栈组成的网络中,存在三种类型的逻辑设备类型——(i)协调器(ii)路由器(iii)终端设备。

一个ZigBee网络包括一个协调器节点、多个路由器和终端设备节点。

 

       如下图,黑色圆代表协调器,红色圆代表路由器,白色圆代表终端设备。

3.1.    协调器

Coordinator协调器负责启动整个网络。

它也是网络的第一个设备。

协调器选择一个信道和一个网络ID(也称之为PANID,即PersonalAreaNetworkID),随后启动整个网络。

ZigBee协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。

协调器的角色主要涉及网络的启动和配置。

一旦这些都完成后,协调器的工作就像一个路由器(或者消失goaway)。

由于ZigBee网络本身的分布特性,因此接下来整个网络的操作就不再依赖协调器是否存在。

3.2.    路由器

ZigBee路由器的功能主要是:

允许其他设备加入网络,多跳路由和协助它自己由电池供电子终端设备通讯。

通常,路由器希望是一直处于活动状态,因此它必须使用主电源供电。

但是当使用树群这种网络模式时,允许路由间隔一定的周期操作一次,这样就可以使用电池给其供电。

3.3.    终端设备

ZigBee终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电池供电设备。

通常,终端设备对存储空间(特别是RAM的需要)比较小。

在Z-Stack1.4.1中一个设备的类型通常在编译的时候通过编译选项(ZDO_COORDINATOR 和RTR_NWK)确定。

所有的应用例子都提供独立的项目文件来编译每一种设备类型。

3.4.    栈配置

栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。

ZigBee联盟定义了这些由栈配置组成栈参数。

网络中的所有设备必须遵循同样的栈配置。

为了促进互用性这个目标,ZigBee联盟为ZigBee2006规范定义了栈配置。

所有遵循此栈配置的设备可以在其他开发商开发的遵循同样栈配置的网络中。

栈配置是指对分布式应用的描述。

它根据应用必须处理的数据包和必须执行的操作来描述分布式应用。

使用描述符对配置文件进行描述,描述符仅仅是各种值的复杂结构。

此配置文件使ZigBee 设备可以互操作。

ZigBee 联盟已经定义了很多标准的配置文件,比如远程控制开关配置文件和光传感器配置文件等。

任何遵循某一标准配置文件的节点都可以与其他实现相同配置文件的节点进行互操作。

每个配置文件可以定义最多256 个群集,而且和我们在前面所看到的一样,每个群集可以最多有65536 个属性。

此灵活性允许节点有大量的属性(或I/O 点)。

1.      寻址

1.1.    地址类型

ZigBee设备有两种类型的地址。

一种是64位IEEE地址(物理),即MAC地址,另一种是16位网络地址。

64位地址是全球唯一的地址,设备将在它的生命周期中一直拥有它,通常由制造商或者被安装时设置。

这些地址由IEEE来维护和分配。

16位网络地址是当设备加入网络后由协调器或路由器分配的。

它在网络中是唯一的,用来在网络中鉴别设备和发送数据。

1.2.    网络地址分配

ZigBee使用分布式寻址方案来分配网络地址。

这个方案保证在整个网络中所有分配的地址是唯一的。

这一点是必须的,因为这样才能保证一个特定的数据包能够发给它指定的设备,而不出现混乱。

同时,这个寻址算法本身的分布特性保证设备只能与他的父辈设备通讯来接受一个网络地址。

不需要整个网络范围内通讯的地址分配,这有助于网络的可测量性。

在每个路由加入网络之前,寻址方案需要知道和配置一些参数。

这些参数是MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。

这些参数是栈配置的一部分,ZigBee2006协议栈已经规定了这些参数的值:

MAX_DEPTH=5,MAX_ROUTERS=6和MAX_CHILDREN=20。

MAX_DEPTH决定了网络最大深度。

协调器(Coordinator)位于深度0,它的儿子位于深度1,他儿子的儿子位于深度2,以此类推。

MAX_DEPTH参数限制了网络在物理上的长度。

MAX_CHILDREN决定了一个路由(Router)或者一个协调器节点可以处理的儿子节点的最大个数。

MAX_ROUTER决定了一个路由(Router)或者一个协调器(Coordinator)节点可以处理的具有路由功能的儿子节点的最大个数。

这个参数是MAX_CHILDREN的一个子集,终端节点使用(MAX_CHILDREN – MAX_ROUTER)剩下的地址空间。

如果开发人员想改变这些值,则需要完成以下几个步骤:

首先,要保证这些参数新的赋值要合法。

即整个地址空间不能超过216,这就限制了参数能够设置最大值。

可以使用projects/ZStack/tools文件夹下的CSkip.xls文件来确认这些值是否合法。

当在表格中输入了这些数据后,如果数据不合法的话就会出现错误信息。

当选择了合法的数据后,开发人员还要保证不再使用标准的栈配置,取而代之的是网络自定义栈配置(例如:

在nwk_globals.h文件中将STACK_PROFILE_ID改为NETWORK_SPECIFIC)。

然后nwk_globals.h文件中的MAX_DEPTH参数将被设置为合适的值。

此外,还必须设置nwk_globals.c文件中的Cskipchldrn数组和CskipRtrs数组。

这些数组的值由MAX_CHILDREN和MAX_ROUTER构成。

1.3.    Z-Stack寻址

为了向一个在ZigBee网络中的设备发送数据,应用程序通常使用AF_DataRequest()函数。

数据包将要发送给一个afAddrType_t(在ZComDef.h中定义)类型的目标设备。

typedefstruct

{

union

{

uint16shortAddr;

}addr;

afAddrMode_taddrMode;

byteendPoint;

}afAddrType_t;

注意,除了网路地址之外,还要指定地址模式参数。

目的地址模式可以设置为以下几个值:

typedefenum

{

afAddrNotPresent=AddrNotPresent,

afAddr16Bit=Addr16Bit,

afAddrGroup=AddrGroup,

afAddrBroadcast=AddrBroadcast

}afAddrMode_t;

因为在Zigbee中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传送,所以必须有地址模式参数。

一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。

这个将在下面详细解释。

单点传送

Uicast是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备。

将afAddrMode设置为Addr16Bit并且在数据包中携带目标设备地址。

1.3.1.      间接传送

当应用程序不知道数据包的目标设备在哪里的时候使用的模式。

将模式设置为AddrNotPresent并且目标地址没有指定。

取代它的是从发送设备的栈的绑定表中查找目标设备。

这种特点称之为源绑定。

当数据向下发送到达栈中,从绑定表中查找并且使用该目标地址。

这样,数据包将被处理成为一个标准的单点传送数据包。

如果在绑定表中找到多个设备,则向每个设备都发送一个数据包的拷贝。

上一个版本的ZigBee(ZigBee04),有一个选项可以将绑定表保存在协调器(Coordinator)当中。

发送设备将数据包发送给协调器,协调器查找它栈中的绑定表,然后将数据发送给最终的目标设备。

这个附加的特性叫做协调器绑定(CoordinatorBinding)。

1.3.2.      广播传送

当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。

地址模式设置为AddrBroadcast。

目标地址可以设置为下面广播地址的一种:

NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。

对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg中)。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包括协调器。

1.3.3.      组寻址

当应用程序需要将数据包发送给网络上的一组设备时,使用该模式。

地址模式设置为afAddrGroup并且addr.shortAddr设置为组ID。

在使用这个功能之前,必须在网络中定义组。

(参见Z-stackAPI文档中的aps_AddGroup()函数)。

注意组可以用来关联间接寻址。

在绑定表中找到的目标地址可能是单点传送或者是一个组地址。

另外,广播发送可以看做是一个组寻址的特例。

下面的代码是一个设备怎样加入到一个ID为1的组当中:

aps_Group_tgroup;

//Assignyourselftogroup1

group.ID=0x0001;

group.name[0]=0;//Thiscouldbeahumanreadablestring

aps_AddGroup(SAMPLEAPP_ENDPOINT,&group);

1.4.    重要设备地址

应用程序可能需要知道它的设备地址和父亲地址。

使用下面的函数获取设备地址(在ZStackAPI中定义):

NLME_GetShortAddr()——返回本设备的16位网络地址

NLME_GetExtAddr()——  返回本设备的64位扩展地址

使用下面的函数获取该设备的父亲设备的地址:

NLME_GetCoordShortAddr()——返回本设备的父亲设备的16位网络地址

NLME_GetCoordExtAddr()——  返回本设备的父亲设备的64位扩展地址

2.      绑定

绑定是一种两个(或者多个)应用设备之间信息流的控制机制。

在ZigBee2006发布版本中,它被称为资源绑定,所有的设备都必须执行绑定机制。

绑定允许应用程序发送一个数据包而不需要知道目标地址。

APS层从它的绑定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。

注意:

在ZigBee的1.0版本中,绑定表是保存在协调器(Coordinator当中)。

现在所有的绑定记录都保存在发送信息的设备当中。

2.1.    建立绑定表

有三种方法可以建立一个绑定表:

ZigbeeDeviceObjectBindRequest——一个启动工具可以告诉设备创建一个绑定记录。

ZigbeeDeviceObjectEndDeviceBindRequest——两个设备可以告诉协调器它们想要建立一个绑定表记录。

协调器来协调并在两个设备中创建绑定表记录。

DeviceApplication——一个设备上的应用程序建立或者管理一个绑定表。

2.1.1.      ZigBee设备对象请求绑定

任何一个设备都可以发送一个ZDO信息给网络中的另一个设备,用来建立绑定表。

称之为援助绑定,它可以为一个发送设备创建一个绑定记录。

启动申请

一个应用程序可以通过ZDP_BindReq()函数(在ZDProfile.h),并在绑定表中包含两个请求(地址和终点)以及想要的群ID。

第一个参数(目标dstAddr)是绑定源的短地址即16位网络地址。

确定已经在ZDConfig.h允许了这个功能ZDO_BIND_UNBIND_REQUEST。

也可以使用ZDP_UnbindReq()用同样的参数取消绑定记录。

目标设备发回ZigBeeDeviceObjectBind 或者UnbindResponse信息,该信息是ZDO代码根据动作的状态,通过调用ZDApp_BindRsq()或者ZDApp_UnbindRsq()函数来分析和通知ZDApp.c的。

对于绑定响应,从协调器返回的状态将ZDP_SUCCESS,ZDP_TABLE_FULL或者ZDP_NOT_SUPPORTED。

对于解除绑定响应,从协调器返回的状态ZDP_SUCCESS,ZDP_NO_ENTRY或者ZDP_NOT_SUPPORTED。

2.1.2.      ZigBee设备对象终端绑定请求

这个机制是在指定的时间周期(timeoutperiod)内,通过按下选定设备上的按钮或者类似的动作来绑定。

协调器在指定的时间周期内,搜集终端设备的绑定请求信息,然后以配置ID(ProfileID)和群ID(ClusterID)协议为基础,创建一个绑定表记录作为结果。

默认的设备绑定时间(APS_DEFAULT_MAXBINDING_TIME)是16秒钟(在nwk_globals.h中定义)。

但是将它添加到f8wConfig.cfg中,则可以更改。

在“用户指南”中的应用程序就是一个终端设备绑定的例子(在每个设备上按下RIGHT按键)。

应该注意到,所有的例程都有处理关键事件的函数(例如:

在TransmitApp.c中的TransmitApp_HandleKeys()函数)。

调用ZDApp_SendEndDeviceBindReq()(在ZDApp.c中)。

这个函数搜集所有终端节点请求,再调用ZDP_EndDeviceBindReq()函数将这些信息发送给协调器。

协调器调用函数ZDP_IncomingData()【ZDProf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2