第3章 CHAPTER 3 ZigBee通信技术 ZigBee是一种短距离、低功耗、低速率、低成本、低复杂度的无线通信技术,是一种介于无线标记技术和蓝牙技术之间的解决方案。ZigBee技术以IEEE 802.15.4协议为基础,在IEEE的物理层和数据链路层协议基础上,对其网络层和应用层协议重新进行了定义,形成了自己的无线电标准。应用ZigBee技术能够在数千个微小的传感器之间相互协调实现通信,主要适用于自动控制和远程控制等领域。  了解ZigBee技术的形成及发展。  了解ZigBee网络的应用领域。  掌握ZigBee通信技术的相关概念和原理。  掌握ZigBee网络的组建流程。  能够应用ZigBee技术实现简单物联网的组建。 本章的知识结构如图3.1所示。 图3.1本章知识结构图 图3.1(续) 3.1ZigBee技术概述 ZigBee是基于IEEE 802.15.4标准的低功耗局域网协议,是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通信技术。ZigBee技术主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的周期性数据、间歇性数据和低反应时间数据的传输应用。 3.1.1ZigBee技术的形成、发展 1. ZigBee技术的形成 ZigBee名称的由来与蜜蜂相关,蜜蜂在发现花丛后会通过一种特殊的肢体语言来告知同伴新发现的食物源的位置等信息,这种肢体语言就是之字形舞蹈,英文名称为ZigZag,是蜜蜂之间一种简单的传达信息方式。在通信技术领域,借此寓意用ZigBee来命名新一代无线通信技术,ZigBee技术的标志性图标如图3.2所示。 图3.2ZigBee图标 那么到底什么是ZigBee技术?ZigBee是一种开放式的基于IEEE 802.15.4协议的无线个人局域网标准。IEEE 802.15.4标准定义了ZigBee协议栈的物理层和数据链路层,而ZigBee联盟则定义了网络层及应用层。简单而言,ZigBee是一种无线自组网技术标准,ZigBee技术有自己的无线电标准,在数千个微小的传感器之间相互协调实现网络通信。这些传感器只需要很低的功耗,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,因此它们的通信效率非常高。 ZigBee联盟是一个非营利物联网产业标准化国际组织,联盟的目的在于制定一个基于IEEE 802.15.4、可靠的、高性价比的、低功耗的ZigBee网络应用技术。生产商可以利用ZigBee标准化无线网络平台设计简单、可靠、便宜又省电的各种无线产品。ZigBee联盟的成员包括: 国际著名半导体生产商、技术提供者、代工生产商以及最终使用者。 ZigBee联盟成立于2002年,是一个非营利物联网产业标准化国际组织,ZigBee联盟的目的在于制定一个基于IEEE 802.15.4、可靠的、高性价比的、低功耗的ZigBee网络应用技术。生产商可以利用ZigBee标准化无线网络平台设计简单、可靠、 图3.3ZigBee联盟的部分成员 便宜又省电的各种无线产品。ZigBee联盟的成员包括: 国际著名半导体生产商、技术提供者、代工生产商以及最终使用者。2021年,ZigBee联盟更名为CSA连接标准联盟,作为处于物联网行业发展中心的领先组织,CSA连接标准联盟的全球影响力不断增长,其成员遍布37个国家/地区,联盟成员数量超过350家,图3.3所示为ZigBee联盟的部分成员。 2. ZigBee技术的发展 ZigBee是以IEEE 802.15.4标准为基础发展起来的无线通信技术。在ZigBee技术的发展过程中经历了几个重要的发展阶段,如表3.1所示。 表3.1ZigBee技术的发展历程 时间事件 2000年12月成立工作小组起草IEEE 802.15.4标准 2001年8月ZigBee联盟成立 2004年12月ZigBee 1.0标准敲定(又称ZigBee 2004) 2005年9月公布ZigBee 1.0标准并提供下载 2006年12月进行标准修订,推出ZigBee 1.1版(又称ZigBee 2006) 2007年10月ZigBee标准完成再次修订(又称ZigBee 2007/Pro) 2009年3月ZigBee RF4CE推出,具备更强的灵活性和远程控制能力 ZigBee的前身是1998年由Intel公司、IBM公司等产业巨头发起的HomeRF技术,在2000年12月成立了工作小组起草IEEE 802.15.4标准。2001年8月,ZigBee联盟成立,在2002年下半年,英国英维思公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司四大巨头共同宣布加盟“ZigBee联盟”,研发名称为ZigBee的下一代无线通信标准,这一事件成为该项技术发展过程中的里程碑。 2004年12月,ZigBee 1.0标准敲定,这使ZigBee有了自己的发展基本标准。2005年9月,ZigBee 1.0标准公布并提供下载,在这一年里,华为技术有限公司和IBM公司加入了ZigBee联盟。虽然基于ZigBee 1.0标准的应用很少,而且该版本与后续的其他版本也不兼容,但其仍是ZigBee技术发展中的标志事件。2006年12月推出了ZigBee 1.1版本,对原有ZigBee 1.0版本进行了若干修改,例如,新增ZCL(ZigBee簇群库)、群化式装置、多播功效、直接透过无线方式进行组态配置等。 2007年10月,ZigBee标准完成再次修订,推出ZigBee Pro Feature Set(简称ZigBee Pro)新标准,新标准能够兼容之前的ZigBee 2006版本。此时ZigBee联盟更加专注于家庭自动化、建筑/商业大楼自动化、先进抄表基础建设三方面。2009年3月,ZigBee又推出RF4CE标准,采用了IETF的IPv6 6Lowpan作为新一代智能电网的标准,致力于形成全球统一的易于与互联网集成的网络,实现端到端的网络通信。 3.1.2ZigBee技术的特点 与同类通信技术相比,ZigBee技术具备如下特点。 1. 数据传输率低 ZigBee网络的数据传输率在20~250kb/s。比如,在频率为2.4GHz的波段,其数据传输率为250kb/s,在频率为915MHz的波段,其数据传输率为40kb/s,而在频率为868MHz的波段,其数据传输率则为20kb/s。 2. 网络容量大 ZigBee网络中一个主节点最多可管理254个子节点,同时主节点还可由上一层网络节点管理,最多可组成65000个节点的大网。例如,一个星状结构的ZigBee网络最多可以容纳254个从设备和一个主设备,一个区域内可以同时存在最多100个ZigBee网络,而且网络组成灵活。 3. 成本低、功耗低 早期的ZigBee模块初始成本在6美元左右,目前已经降到1.5~2.5美元,并且ZigBee协议免专利费。由于ZigBee的传输速率低,其发射功率仅为1mW,而且又采用了休眠模式使其具有较低功耗,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节5号电池就可以维持长达6个月到2年左右的使用时间,这是其他无线设备望尘莫及的。 4. 安全、可靠 ZigBee网络提供了基于循环冗余校验的数据包完整性检查功能,支持鉴权和认证,并采用了AES128的加密算法。ZigBee网络采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据的竞争和冲突。此外,ZigBee技术还采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息,如果传输过程中出现问题,可以进行重发。 5. 网络速度快、时延短 ZigBee网络的通信时延以及从休眠状态激活的时延都非常短,典型的搜索设备时延30ms,休眠激活的时延是15ms,活动设备信道接入的时延为15ms。因此ZigBee技术适用于对时延要求苛刻的无线控制应用。 3.1.3ZigBee技术的应用 ZigBee作为一种新兴的近距离无线网络技术,有效弥补了低成本、低功耗和低速率无线通信市场的空缺,其成功的关键在于丰富而便捷的应用,而不是技术本身。 1. ZigBee技术的适用条件 ZigBee技术适合于承载数据流量较小的业务,能为低能耗的简单设备提供有效覆盖范围在10m左右的低速连接。通常符合下述条件之一的应用就可以考虑采用ZigBee技术。 (1) 若需组建的网络中设备成本很低,而且要传输的数据量很小,则使用ZigBee技术可以实现。 (2) 若需组建的网络中设备体积很小,不方便放置较大的充电电池或者电源模块,则使用ZigBee技术可以实现。 (3) 若需组建的网络中没有充足的电源支持,只能使用一次性电池,则可以考虑使用ZigBee技术。 (4) 若组建的网络主要用于监测或控制,且通信覆盖范围较大,则可以使用ZigBee技术实现。 (5) 若网络中的设备需要频繁地更换电池或者反复充电,无法做到或者很困难,则可以考虑使用ZigBee技术。 2. ZigBee技术的应用领域 ZigBee技术具有强大的组网能力,使用ZigBee技术可以组建低速率传输的无线短距离网络,具有非常广泛的应用领域,如图3.4所示。 图3.4ZigBee技术的应用领域 (1) 数字家庭领域。 在数字家庭领域,ZigBee技术拥有广阔的市场,可应用于家庭的照明、温度、安全、控制等各个方面。ZigBee模块可安装在电视、遥控器、儿童玩具、游戏机、门禁系统、空调系统等产品中。例如,利用ZigBee网络可以实现电表、气表、水表的自动抄表与自动监控等功能,如图3.5所示。在实际应用中,要求抄表釆集器具有超低功耗、低成本,但数据传输速率要求不高,可将ZigBee技术与GPRS/CDMA结合起来,根据抄表用户的不同分布灵活构建无线抄表网络,采集器采集到的数据可通过GPRS/CDMA网络送到抄表监控中心。使用ZigBee技术实现远程抄表的公司有湖南威盛仪表、 图3.5应用ZigBee技术的智能抄表系统 华蓝佳声、蓝斯通信、南京正泰龙等。 (2) 工业领域。 在工业领域,利用传感器和ZigBee网络可以实现数据的自动采集、分析和处理,也可以作为决策辅助系统的重要组成部分。例如,在油田无线测控数据通信系统中利用ZigBee技术的组网能力可以组成复杂多跳的路由网络,从而保证数据无线采集系统的可靠和稳定,如图3.6所示。系统主要由采油场监控中心、油井无线遥测遥控主机、传感器、电机控保装置等组成,通信部分采用ZigBee无线网络传输。 图3.6基于ZigBee技术的油田无线测控数据通信系统 (3) 现代农业领域。 将ZigBee技术运用于传统农业中,可以使传统农业改变为以现代信息技术为中心的精准农业模式,让农业种植全面实现智能化、网络化、自动化,从而进一步提高农业生产的效率。例如,温室大棚的智能控制系统就可采用ZigBee技术实现,如图3.7所示。智能控制系统采用ZigBee技术进行组网,利用传感器可将土壤湿度、氮浓度、pH值、降水量、气温、气压、光照强度等环境因子信息经由ZigBee网络传送到中央控制设备,并能对环境因子进行控制,以基于作物和环境信息知识的专家决策系统为依托,使农民能够及早而且准确地发现问题,从而有助于保持并提高农作物的产量。 图3.7基于ZigBee技术的温室大棚智能控制系统 (4) 医学领域。 在医学领域,借助于传感器和ZigBee网络可以准确而且实时地检测病人的血压、体温和心跳速度等信息,从而减少医生查房的工作负担,有助于医生做出快速的反应,特别是对重病和危重病患者的监护和治疗。例如,应用ZigBee技术可以设计无线医疗监护系统,如图3.8所示。监护系统由监护中心和ZigBee传感器节点构成,具有ZigBee通信功能的传感器节点采集到监护对象的生理参数信息后,以多跳中继的无线网络传输方式经路由器节点传递到ZigBee网络的中心节点,监护终端设备通过Internet将数据传输至远程医疗监护中心或者通过终端外接的3G/4G模块传送到指定医疗人员的手机中,由专业医疗人员对数据进行统计观察,提供必要的咨询服务,实现远程医疗监护和诊治。 图3.8基于ZigBee技术的无线医疗监护系统 (5) 智能交通领域。 在智能交通领域,交通运输具有高度的流动性,可以通过ZigBee网络对高速移动的车辆进行定位、监测、信息采集等。例如,通过ZigBee网络可对交通路口车辆信息进行检测,如图3.9所示。系统运用红外传感器采集交通路口的路况信息,并通过ZigBee无线通信网络将信息传送回控制中心,通过对数据进行分析,可以直接控制交通信号。此外,利用ZigBee技术实现区域路口信号灯的联动管理,可以使路口车辆在最短的时间内通过,缩短不必要的等待时间,不但可以改善城市的交通拥挤状况,而且还可以减少车辆等待所带来的燃油浪费造成的环境污染。 图3.9基于ZigBee技术的交通路口车辆信息检测系统 3.2ZigBee协议栈 ZigBee协议栈是基于标准的开放式系统互联参考模型设计的,共包括四个层次,分别为物理层、数据链路层、网络层和应用层。其中,较低的两个层次,即物理层和数据链路层由IEEE 802.15.4标准定义,网络层和应用层标准由ZigBee联盟制定。图3.10所示为ZigBee协议栈的体系结构模型。 图3.10ZigBee协议栈的体系结构模型 3.2.1物理层 IEEE 802.15.4标准定义物理层的任务是通过无线信道进行安全、有效的数据通信,为数据链路层提供服务。IEEE 802.15.4标准定义了两个物理层,分别为运行在868/915MHz的物理层和2.4GHz的物理层,如图3.11所示。 图3.11物理层的频段及信道 物理层通过射频固件和射频硬件提供了一个从MAC(媒体访问控制)层到物理层无线信道的接口,物理层的参考模型如图3.12所示。在物理层中有数据服务接入点(PDSAP)和物理层管理实体服务接入点(PLMESAP),通过PDSAP为物理层数据提供服务,通过PLMESAP为物理层管理提供服务。 图3.12物理层的参考模型 3.2.2数据链路层 IEEE 802系列标准把数据链路层分成逻辑链路控制(LLC)层和媒体访问控制(MAC)层。LLC层在IEEE 802.6标准中定义,为802标准系列所共用,而MAC层协议则依赖于各自的物理层。LLC层进行数据包的分段与重组以及确保数据包按顺序传输,MAC层为两个ZigBee设备的MAC层实体之间提供可靠的数据链路。MAC层的参考模型如图3.13所示。 图3.13MAC层的参考模型 MAC层在服务协议汇聚层(SSCS)和物理层之间提供了一个接口。MAC层包括一个管理实体,该实体通过一个服务接口可调用MAC层管理功能,该实体还负责维护MAC层固有的管理对象的数据库。MAC层的主要功能是通过CSMACA机制解决信道访问时的冲突,并且可实现发送信标或检测、跟踪信标,能够处理和维护保护时隙(GTS),实现设备间链路连接的建立和断开,为设备提供安全机制。 3.2.3网络层 网络层是ZigBee协议栈的核心部分,其主要功能是确保MAC层的正确工作,同时为应用层提供服务,具体包括网络维护、网络层数据的发送与接收、路由的选择、广播通信和多播通信等。网络层的参考模型如图3.14所示。 图3.14网络层的参考模型 为实现与应用层的通信,网络层定义了两个服务实体,分别为网络层数据实体(NLDE)和网络层管理实体(NLME)。NLDE通过服务接入点NLDESAP提供数据传输服务,NLME则通过服务接入点NLMESAP提供网络管理服务,并完成对网络信息库(NIB)的维护和管理。NLDE提供数据服务是通过允许一个应用程序在两个或多个设备之间传输应用协议数据单元(APDU)实现的,但是设备本身必须位于同一个网络中。NLME提供管理服务则是通过允许一个应用程序与协议栈相互作用来实现的。 3.2.4应用层 ZigBee应用层由应用支持子层(APS)、厂商定义的应用对象(AF)和ZigBee设备对象(ZDO)三部分组成,应用层的参考模型如图3.15所示。ZigBee 应用层除了为网络层提供必要的服务接口和函数,还允许应用者自定义应用对象。ZigBee网络中的应用框架是为驻扎在ZigBee设备中的应用对象提供活动的环境。 图3.15应用层的参考模型 APS主要用于绑定ZigBee设备之间的传送信息并维护绑定信息。在网络层和应用层之间,APS提供了从ZDO到供应商应用对象的通用服务集接口,由APS数据实体(APSDE)和APS管理实体(APSME)实现。APSDE通过服务接入点APSDESAP实现在同一个网络中的两个或者更多的应用实体之间的数据通信。APSME通过服务接入点APSMESAP提供多种服务给应用对象,并维护管理对象的数据库AIB。 ZDO是一个应用程序,位于应用框架和APS之间,通过使用网络层和应用支持子层的服务原语来执行ZigBee终端设备、ZigBee路由器和ZigBee协调器功能。ZDO的主要功能是发现网络中的设备、定义设备在网络中的角色、确定向设备提供某种服务、发起和响应绑定请求以及在设备间建立安全机制等。 3.2.5ZStack协议栈 ZigBee协议栈由各层定义的协议组成,以函数库的形式实现,为编程人员提供应用层接口(API)。ZigBee协议栈的具体实现有很多版本,但不同厂商提供的ZigBee协议栈存在差别。目前,常见的ZigBee协议栈有美国德州仪器(TI)公司研发的ZStack协议栈,美国飞思卡尔(Freescale)公司研发的BeeStack协议栈,此外还有EmberNet、freakz 和msstatePAN等ZigBee协议栈。TI公司的ZStack协议栈已经成为ZigBee联盟认可并推广的指定软件规范,全球众多ZigBee开发商都广泛采用该协议栈。ZStack协议栈属于半开源,程序代码以库的形式体现,在实际应用中底层驱动的程序基本不需要修改,只需要调用API函数既可。ZStack协议栈的软件架构如图3.16所示。 图3.16ZStack协议栈的软件架构 ZStack协议栈采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,操作系统抽象层(OSAL)实现类似操作系统的某些功能,可以通过时间片轮转算法实现多任务调度,用户也可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。ZStack协议栈源码结构如图3.17所示。 图3.17ZStack协议栈源码结构 App为应用层目录,是用户创建各种不同工程的区域,在该目录中包含了应用层和项目的主要内容; HAL为硬件层目录,包含与硬件相关的配置和驱动及操作函数; MAC目录包含了MAC 层的参数配置文件及MAC的LIB库的函数接口文件; MT为监控调试层目录,通过串口可控各层,并与各层进行直接交互; NWK目录包含网络层配置参数文件、网络层库的函数接口文件及APS子层库的函数接口; ZDO目录包含ZigBee设备对象,是一种公共的功能集,方便用户用自定义的对象调用APS子层的服务和NWK层的服务。 3.2.6ZigBee原语 ZigBee协议栈的各层之间通过相应的服务访问点来提供服务。一方面,层结构使处于协议中的不同层能够根据各自的功能进行独立的运作,从而使整个协议栈的结构变得清晰明朗; 另一方面,由于ZigBee协议栈是一个有机整体,任何ZigBee设备要能够正确无误地工作,就要求协议栈各层之间共同协作。ZigBee设备在工作时,各种不同的任务在不同的层次上执行,每层的服务主要完成两种功能: 一是根据它的下层服务要求,为上层提供相应的服务; 二是根据上层的服务要求,对它的下层提供相应的服务。 ZigBee协议为了实现层与层之间的关联,采用了称为“服务原语”的操作。服务原语是一个抽象的概念,仅仅指出提供的服务内容,而没有指出由谁来提供服务,它的定义与其他任何接口的实现无关,由代表其特点的服务原语和参数的描述来指定一种服务。一种服务可能有一个或多个相关的原语,这些原语构成了与具体服务相关的执行命令。每种服务原语提供服务时,根据具体的服务类型,可能不带有传输信息,也可能带有多个传输必需的信息参数。ZigBee原语有四种类型,分别是请求(Request)原语、指示(Indication)原语、响应(Response)原语及确认(Confirm)原语。 【例3.1】 假设原语环境设置为一个具有m个用户的网络,阐述两个对等用户及其与第k层或子层对等协议实体建立连接的服务原语。 具体如下: ① 请求原语是从第m1个用户发送到它的第k层,请求服务开始。 ② 指示原语是从第m1个用户的第k层向第m2个用户发送,指出对于第m2个用户有重要意义的内部k层的事件,该事件可能与一个服务请求有关,或者可能是由一个k层的内部事件引起。 ③ 响应原语是从第m2个用户向它的第k层发送,用来表示用户执行上一条原语调用过程的响应。 ④ 确认原语是由第k层向第m1个用户发送,用来传递一个或多个前面服务请求原语的执行结果。 3.3ZigBee网络的拓扑结构 ZigBee技术具有强大的组网能力,基于ZigBee技术的无线传感器网络适用于网点多、体积小、数据量小,传输可靠、功耗低等场合,在环境监测、无线抄表、智能小区、工业控制等领域已取得一席之地。网络拓扑是网络形状,或者是它在物理上的连通性,ZigBee技术可以形成星状、树状和网状网络,具体由ZigBee协议栈的网络层来管理。 3.3.1设备类型 ZigBee网络中包括两种无线设备: 全功能设备(FullFunction Device,FFD)和精简功能设备(ReducedFunction Device,RFD)。 FFD具备控制器的功能,可设置网络。FFD可以和FFD、RFD通信,而RFD只能和FFD通信,RFD之间需要通信时只能通过FFD转发。FFD不仅可以发送和接收数据,还具备路由器的功能。 RFD的应用相对简单,例如,在无线传感器网络中只负责将采集的数据信息发送给协调器,并不具备数据转发、路由发现和路由维护等功能,采用极少的存储容量就可实现。因此,RFD相对于FFD具有较低的成本。 3.3.2节点类型 从网络配置上来讲,ZigBee网络中有三种类型的节点,分别是ZigBee协调器节点,ZigBee路由器节点和ZigBee终端节点。 ZigBee协调器节点在IEEE 802.15.4标准中也称作PAN(个域网)协调器节点,在无线传感器网络中可以作为汇聚节点。ZigBee协调器节点必须是全功能设备,而且在一个ZigBee网络中只能有一个ZigBee协调器节点, 图3.18ZigBee协调器产品示例 它往往比网络中其他节点的功能更强大,是整个网络的主控节点,主要负责发起建立新的网络,设定网络参数、管理网络中的节点以及存储网络中节点信息等,网络形成后也可以执行路由器的功能。ZigBee协调器节点是三种类型ZigBee节点中最为复杂的一种,一般由交流电源持续供电。图3.18所示为部分厂家生产的ZigBee协调器产品。 ZigBee路由器节点也必须是全功能设备,路由器节点可以参与路由发现、消息转发、通过连接其他节点来扩展网络的覆盖范围等。此外,ZigBee路由器节点还可以在它的操作空间中充当普通协调器节点,但普通协调器节点与ZigBee协调器节点不同,它仍然受ZigBee协调器节点的控制。图3.19所示为部分厂家生产的ZigBee路由器产品。 ZigBee终端节点可以是全功能设备或者精简功能设备,通过ZigBee协调器节点或者ZigBee路由器节点连接到网络,不允许其他任何节点通过终端节点加入网络,ZigBee终端节点能够以非常低的功率运行。图3.20所示为部分厂家生产的ZigBee终端产品。 图3.19ZigBee路由器产品示例 图3.20ZigBee终端产品示例 协调器在ZigBee系统中的作用是建立并管理网络,自动允许其他节点加入网络的请求,收集终端节点传来的数据,并通过串口同上位机进行通信,协调器建立网络并处理节点请求的程序流程如图3.21所示。在ZigBee系统中,路由器节点的主要作用是路由选择和数据转发,路由器节点建立网络的流程如图3.22所示。终端节点在ZigBee系统中的作用是采集数据,并通过与协调器建立“绑定”将数据发送给协调器,同时接收协调器发来的控制命令。在终端节点以终端的身份启动并加入网络后,即开始与协调器建立绑定。一旦一个绑定被创建,终端节点就可以在不需要知道明确的目的地址的情况下发送数据,其与协调器建立绑定的流程如图3.23所示。 图3.21协调器节点的工作流程 图3.22路由器节点建立网络的流程 图3.23终端节点建立绑定的流程 3.3.3拓扑结构类型 ZigBee网络层主要支持三种拓扑结构,分别是星状拓扑结构、树状拓扑结构和网状拓扑结构,如图3.24所示。 图3.24拓扑结构类型 1. 星状拓扑结构 星状拓扑结构网络由一个ZigBee协调器节点和一个或多个ZigBee终端节点组成。ZigBee协调器节点位于网络的中心,负责发起建立和维护整个网络。其他的节点一般为RFD,也可以为FFD,它们分布在ZigBee协调器节点的覆盖范围内,直接与ZigBee协调器节点进行通信。如果需要在两个终端节点之间进行通信则必须通过协调器节点转发。例如,若图3.24(a)中的EP1节点要和EP2节点进行通信,则必须经过协调器节点CP的转发方可实现。星状拓扑结构具有结构简单、成本低、不需要路由功能,网络管理和维护方便等优点,但是由于网络中的终端节点必须要布置在协调器的通信范围之内,因而限制了星状网络的覆盖距离,而且由于网络中的终端节点均向协调器发送数据,容易形成网络拥塞,影响网络性能。 【例3.2】 基于ZigBee技术采用星状拓扑结构组建智能电源监控系统的无线传感器网络,解决传统电源监控系统中安装困难、布线烦琐及维护不便等问题。 图3.25所示为星状拓扑结构的智能电源监控系统结构图,系统由若干终端节点、一个协调器节点和一个上位机(PC)组成。协调器设备用于实现组建网络和串口通信等功能,一方面通过串口与上位机通信把终端设备的数据发送给上位机进行处理; 另一方面接收上位机下达的采样、标定、关闭电源等命令信息,然后发送给对应的终端节点。终端节点负责采集电源设备的电压数据,发送给协调器节点,同时还要接收协调器的控制命令并作相应处理。 图3.25星状拓扑结构的智能电源监控系统结构图 2. 树状拓扑结构 树状网络由星状网络连接形成,通过多个星状网络的连接使网络覆盖范围更大。树状网络中枝干末端的叶节点一般为RFD,协调器节点和路由器节点可包含子节点,而终端节点不能有子节点。树状拓扑的通信规则是每个节点都只能与其父节点或子节点进行通信,如果需要从一个节点向另一个节点发送数据,那么信息将沿着树的路径向上传递到最近的祖先节点,然后再向下传递到目标节点。树状网络具有结构比较固定、网络覆盖范围大、可实现网络范围内多跳信息服务、路由算法比较简单等优点,但当网络中的某个节点发生故障脱离网络时,与该节点相连的子节点都将脱离网络,而且信息的传输时延会增大,同步也会变得比较复杂。 【例3.3】 基于ZigBee技术采用树状拓扑结构组建智能家居内部无线网络,通过ZigBee无线传感器网络节点的设计,实现对各种传感器信息的采集、传输和控制功能。 图3.26树状拓扑结构的智能家居系统结构框图 图3.26所示为树状拓扑结构的智能家居系统结构框图。系统中的无线传感器网络有一个协调器,负责整个网络中数据的处理、转发以及网络的管理,终端节点(传感器节点)上电复位后,会搜索协调器节点,当能够搜索到协调器时,直接申请加入网络,当终端节点搜索不到协调器时,则通过路由器节点找到协调器来加入网络,加入网络后保持待机状态,当有数据需要发送时,按照网络组建时的路径进行数据收发。协调器通过串口与PC相连,利用超级终端实现发送命令或者显示数据。 3. 网状拓扑结构 网状网络是三种拓扑结构中最复杂的一种,网络一般由若干FFD连接在一起组成骨干网,网络中的节点均具有路由功能,且采用点对点的连接方式。网络中的节点不仅可以和其通信覆盖范围内的邻居节点直接通信,而且可以通过中间节点的转发,经由多条路径将数据发送给其覆盖范围之外的节点。网状网络具有高可靠性、“自恢复”能力、灵活的信息路由规则,可为传输的数据包提供多条路径,一旦一条路径出现故障则存在另一条或多条路径可供选择,但也正是由于两个节点之间存在多条路径,同时它也是一种“高冗余”的网络。网状网络的不足之处在于,需要复杂的路由算法来实现多跳通信和路径重选等功能,对网络中节点的计算处理能力要求也较高。 【例3.4】 基于ZigBee技术采用网状拓扑结构设计智能电源监控系统。 图3.27所示为网状拓扑结构的智能电源监控系统结构框图。系统由一个协调器节点、多个路由器节点、多个终端节点和上位机组成。协调器节点一方面接收终端节点采集到的电源电压数据,并把该数据通过串口发送给上位机,另一方面接收上位机的命令信息,然后发送给对应的终端节点。路由器节点在系统中的主要任务是数据中转,确保协调器节点与终端节点间的数据交换正确,增加了ZigBee网络的覆盖范围。终端节点通过采集/保护模块采集电源设备的电压数据,通过路由器节点发送给协调器节点,同时还要接收协调器的控制命令并作相应处理。上位机实现对监控设备状态信息的管理,包括系统配置、实时状态显示、节点控制、数据处理及数据查询等功能。 图3.27网状拓扑结构的智能电源监控系统结构框图 3.4ZigBee网络的路由协议 路由协议是自组网体系结构中不可或缺的重要组成部分,其主要作用是发现和维护路由。ZigBee路由协议不同于传统的无线传感器网络,传统的传感器网络中除了汇聚节点是一个增强功能的传感器节点外,其他传感器节点功能基本相同,都兼具终端和路由器双重功能,即除了能够进行本地信息收集和数据处理外,还要处理其他节点转发来的数据。在ZigBee传感器网络中,除了ZigBee协调器节点在网络中具有与汇聚节点相似的功能和地位外,其余节点功能并不相同。为了达到节约成本、节省能量消耗的设计目的,ZigBee网络中一部分节点的功能被简化,这些节点只能进行简单的收发,而不能充当路由器。因而,传统无线传感器网络中的路由协议并不适用于ZigBee网络。 ZigBee路由协议是指ZigBee规范中规定的与路由相关的功能和算法部分,主要包括不同网络拓扑结构下ZigBee协议数据单元的路由方式、路由发现和路由维护等内容。 3.4.1网络层地址分配机制 ZigBee网络中的每个节点都有一个16位网络短地址和一个64位IEEE扩展地址。其中,16位网络地址是在节点加入网络时由其父节点动态分配,这种地址仅仅用于路由机制和网络中的数据传输,类似于Interact中使用的IP地址; 64位地址类似于MAC地址,是每个节点的唯一标识。 加入ZigBee网络的节点通过IEEE 802.15.4 MAC层提供的关联过程组成一棵逻辑树,当网络中的节点允许一个新节点通过它加入网络时,它们之间就形成了父子关系,每个进入网络的节点都会得到父节点为其分配的一个在此网络中唯一的16位网络地址,如图3.28所示。 图3.28网络地址逻辑树图示例 节点的网络深度是指从节点到根节点协调器的最短跳数,标识节点在网络拓扑图中的层次位置。当协调器建立一个新的网络后,首先将自己的16位网络地址初始化为0,网络深度初始化为0。在ZigBee网络中,16位短地址的分配机制如下。 规定每个父节点最多可以连接C个子节点,这些子节点中最多可以有R个路由器节点,网络的最大深度为L,Cskip(d)是网络深度为d的父节点为其子节点分配的地址之间的偏移量,其值按照式(3.1)计算。 Cskip(d)=1+C·(L-d-1),R=1 1+C-R-C·RL-d-11-R,其他(3.1) 说明: ① 当一个路由器节点的Cskip(d)为0时,它就不再具备为子节点分配地址的能力,也即表明不能够再使其他节点通过它加入网络。 ② 当Cskip(d)大于0时,表明父节点可以接受其他节点为其子节点,并为子节点分配网络地址。父节点会为第一个与它关联的路由器节点分配比自己大1的地址,之后与之关联的路由器节点的地址之间都相隔偏移量Cskip(d)。 ③ 每个父节点最多可以分配R个这样的地址。为终端节点分配地址与为路由器节点分配地址不同,假设父节点的地址为Ap, 则第n个与之关联的终端子节点地址An按式(3.2)计算。 图3.29网络示例 An=Ap+Cskip(d)·R+n,1≤n≤(C-R)(3.2) 【例3.5】 在图3.29所示的网络中,共有11个节点。其中,中间的深色节点为ZigBee协调器节点,其他节点是与协调器相连的路由器节点和终端节点。假设在当前的网络结构中,每个父节点最多可以连接4个子节点(C=4),且这些子节点中最多可以有4个路由器节点(R=4),当前网络的最大深度为3(L=3)。计算各个节点的网络地址。 首先,计算偏移量。根据偏移量Cskip的计算公式,计算出不同网络深度的父节点为其子节点分配的地址之间的偏移量,具体结果见表3.2。 表3.2地址偏移量的计算结果 已 知 条 件网络深度(d)偏移量(Cskip) C= 4 R= 4 L= 3 021 15 21 30 然后,计算各个节点的网络地址。作为网络中的协调器节点也即1号节点,是网络的初始化节点,其深度为0,16位地址也为0,与其相连的2号节点其地址为0+1,也即1,之后与其相连的其他节点地址都相差偏移量21。因此,3号、4号、5号节点的地址分别为1+21=22、22+21=43、43+21=64,6号节点的偏移量为1,地址为2,7号节点的偏移量为1,地址为23,8号、9号、10号节点的地址分别为28、65、70,深度为3的11号节点其地址为66。注意到11号节点的偏移量为0,因此该节点不具备地址分配能力。图3.12中各节点的网络地址计算结果见表3.3。 表3.3各节点的网络地址 节 点 编 号网络深度(d)偏移量(Cskip)地址(Addr) 10210 2151 31522 41543 51564 6212 72123 82128 92165 102170 113066 3.4.2ZigBee网络路由的数据结构 1. 节点存储的数据结构 ZigBee协调器节点和路由器节点都保存一张路由表和路由发现表,路由表用来转发数据分组,为网络中的其他节点保存一个路由表条目,路由发现表用来储存路由发现过程中的一些临时路由信息。此外,ZigBee网络中的每个节点都保存一张邻居节点列表,用来存储此节点传输范围内其他节点的信息。路由表的构成见表3.4,路由发现表的构成见表3.5,邻居节点列表的构成见表3.6。 表3.4路由表的构成 比特数16316 含义目的节点地址状态信息下一跳节点地址 表3.5路由发现表的构成 比特数816168816 含义发起路由请求的节点产生的序列号发起路由发现的节点地址发送路由请求分组的节点地址路由请求分组中携带的开销路由应答分组中携带的开销路由建立过程的有效时间 表3.6邻居节点列表的构成 比特数16641688 含义邻节点PAN标识符邻节点的64位IEEE扩展地址邻节点16位网络地址邻节点类型邻节点与当前节点的关系 2. 节点交互的分组结构 ZigBee网络层的控制分组包括三种类型,分别是路由请求(RREQ)分组、路由应答(RREP)分组和路由出错(RERR)分组。ZigBee网络中具有路由功能的节点可以向周围邻节点广播一个RREQ分组,目的是找到一条通往目的节点的有效路径; RREQ分组希望到达的目的节点收到路由请求分组后向路由请求分组的发起节点回复一个RREP; 当节点转发数据分组失败时将产生一个RERR分组,目的是通知此数据分组的源节点分组转发失败。RREQ分组格式见表3.7,RREP分组格式见表3.8,RERR分组格式见表3.9。 表3.7RREQ分组格式 比特数888168 含义控制分组类型(0x01: RREQ; 0x02: RREP; 0x03: RERR)RREQ分组是否是在路由修复过程中产生发起RREQ分组的节点产生的序列号发起RREQ分组的节点希望建立的路径的目的地址从RREQ分组的发起节点到接收节点的路径开销 表3.8RREP分组格式 比特数88816168 含义控制分组类型(0x01: RREQ; 0x02: RREP; 0x03: RERR)RREQ分组是否是在路由修复过程中产生发起RREQ分组的节点产生的序列号发起路由请求的节点的网络地址响应RREQ分组的节点网络地址发起RREP分组的节点到接收节点的路径开销 表3.9RERR分组格式 比特数8816 含义控制分组的类型(0x01: RREQ; 0x02: RREP; 0x03: RERR)路由出错的原因被转发失败的数据分组的目的地址 3.4.3ZigBee网络的路由算法 1. AODVjr路由算法 AODV(Adhoc Ondemand Distance Vector)是指按需距离矢量路由利用扩展环搜索的办法来限制搜索发现过的目的节点的范围,支持组播,可以实现在ZigBee节点间动态的、自发的路由,使节点很快获得通向所需目的地址的路由。ZigBee网络中使用一种简化版本的AODV协议——AODVjr。 AODVjr路由协议只有在路由器节点接收到网络数据包,并且网络数据包的目的地址不在节点的路由表中时才会进行路由发现过程,也即路由表的内容按照需要建立,而且它可能仅仅是整个网络拓扑结构的一部分。AODVjr路由算法中一次路由建立由三个步骤组成: 路由发现、反向路由建立、正向路由建立,经过这三个步骤,即可建立起一条路由器节点到目的节点的有效传输路径。在路由建立过程中,AODVjr路由算法使用三种消息作为控制信息: 路由请求分组、路由应答分组、路由出错分组。 1) 路由发现 对于一个具有路由能力的节点,当接收到一个从网络层的更高层发出的发送数据帧的请求,且路由表中没有和目的节点对应的条目时,就会发起路由发现过程。源节点首先创建一个路由请求分组,并使用多播的方式向周围节点进行广播。 如果一个节点发起了路由发现过程,就应该建立相应的路由表条目和路由发现表条目,状态设置为路由发现中。任何一个节点都可能从不同的邻居节点处接收到广播的RREQ,接收到RREQ后,节点将进行分析。如果是第一次接收到RREQ消息,且消息的目的地址不是自己,则节点会保留该RREQ的信息用于建立反向路径,然后将该RREQ消息广播出去; 如果节点之前已经接收过该RREQ消息,则表明这是由于网络内多个节点频繁广播产生的多余消息,对路由建立过程没有任何作用,则节点将丢弃该消息。 2) 反向路由建立 当RREQ消息从一个源节点转发到不同的目的地时,沿途所经过的节点都要自动建立到源节点的反向路由,用于记录当前接收到的RREQ消息由哪一个节点转发而来。通过记录收到的第一个RREQ消息的邻居地址来建立反向路由,这些反向路由将会维持一定时间,该段时间足够RREQ消息在网内转发以及产生的RREP消息返回源节点。 当RREQ消息最终到达了目的节点,节点验证RREQ中的目的地址为自己的地址之后,目的节点就会产生RREP消息,作为一个对RREQ消息的应答。由于之前已经建立了明确的反向路由,因此RREP无须进行广播,只需按照反向路由的指导,采取单播的方式即可把RREP消息传送给源节点。 3) 正向路由建立 在RREP以单播方式转发回源节点的过程中,沿着这条路径上的每个节点都会根据PREP的指导建立到目的节点的路由,也即确定到目的地址节点的下一跳。通过记录RREP从哪个节点传播而来,然后将该邻居节点写入路由表中的路由表项,一直到RREP传送到源节点,至此,一次路由建立过程完毕,源节点与目标节点之间可以开始数据传输。 【例3.6】 在图3.30中,当RFD设备J要发送数据给D,J先把数据发送给具有路由功能的父节点G,G查找自身路由表,没有发现一条到D的有效路径,于是发起一个路由发现过程,构建并广播RREQ消息。D选择最先到达的RREQ消息的传送路径GCD,并返回RREP消息,G收到D发来的RREP信号,路由路径建立,G就会按这条路径来发送缓存的数据。同时D定期发送KEEPALIVE包,以维护路由信息。 图3.30AODVjr算法路由策略 可以看出,AODVjr路由算法按照需求驱动、使用RREQ和RREP控制实现、先广播、后单播的路由建立过程。AODVjr取消了AODV中HELLO信息的发送,由目的节点定期向源节点发送KEEPALIVE连接信息来维持路由。当源节点在一段时间内没有收到目的节点发来的KEEPALIVE信号时,它认为此条路径失效,必要时重新进行路由发现。 2. 树状网络结构路由算法 树状网络结构路由算法(ClusterTree路由算法)包括地址的分配与寻址路由两部分。其中,地址分配主要是指子节点的16位网络短地址,而寻址路由则根据目的节点的网络地址来计算下一跳(Next Hop)的路由。 ZigBee网络中,节点可以按照网络的树状结构中父子关系使用ClusterTree路由算法选择路径,即每个节点都会试图将收到的信息包转发给自己的后代节点,如果通过计算发现目的地址不是自己的一个后代节点,则将这个数据包转发给自身上一级的父节点,由父节点进行类似的判断处理,直到找到目的节点。 ClusterTree路由算法的基本思想: 当一个网络地址为A,网络深度为d的路由器节点收到目的地址为D的转发数据包时,路由器节点首先要判断目的地址D是否为自身的一个子节点,然后根据判断的结果采取不同的方式来处理该数据包。 若地址D满足式(3.3),则可以判断D地址节点是A地址节点的一个后代节点。如果D不在该范围之内,则D地址节点是A地址节点的父节点。 A