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应用支持子层管理实体-服务接入点ASDUAPS服务数据单元MAC媒体访问控制MCPS-SAP媒体访问控制公用部分子层-服务接入点MLME-SAP媒体访问控制子层管理实体-服务接入点MSG信息服务类型NHLE上层实体NIB网络层信息库NWK网络OSI开放式系统互连PAN个人区域网络PDU协议数据单元PHY物理层QOS服务质量RREP路由应答RREQ路由请求SAP服务接入点ZBZigBeeZDOZigBee设备对象1.3.ZDOZigBee设备对象(ZDO)描述了一个基本的功能函数类,在应用对象、设备profile和APS之间提供了一个接口。ZDO位于应用框架和应用支持子层之间,它满足zigBee协议栈所有应用操作的一般要求。ZDO还有以下作用:(1)初始化应用支持子层(APS)、网络层(NWK)和安全服务文档(SSS);(2)从终端应用中集合配置信息来确定和执行发现、安全管理、网络管理、以及绑定管理。ZDO描述了应用框架层的应用对象的公用接口,控制设备和应用对象的网络功能。在终端节点0,ZDO提供了与协议栈中下一层相接的接口。1.4.AFZigBee应用层框架是应用设备和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.MACMAC层遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址。它可完成对无线物理信道的接入过程管理,包括以下几方面:网络协调器(coordinator)产生网络信标、网络中设备与网络信标同步、完成PAN的入网和脱离网络过程、网络安全控制、利用CSMA-CA机制进行信道接入控制、处理和维持GTS(GuaranteedTimeSlot)机制、在两个对等的MAC实体间提供可靠的链路连接。1、数据传输模型:MAC规范定义了三种数据传输模型:数据从设备到网络协调器、从网络协调器到设备、点对点对等传输模型。对于每一种传输模型,又分为信标同步模型和无信标同步模型两种情况。在数据传输过程中,ZigBee采用了CSMA/CA碰撞避免机制和完全确认的数据传输机制,保证了数据的可靠传输。同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。2、帧结构定义:MAC规范定义了四种帧结构:信标帧、数据帧、确认帧和MAC命令帧。1.8.PHYIEEE802.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参数限制了网络在物理上的长度。