ZigBee指的是:可靠,经济,低功耗,无线设备到设备通信的开放标准;由400多家公司组成的联盟,他们共同定义并使用该标准在智能能源和商业楼宇自动化等各种应用中进行通信。ZigBee联盟由一组组成董事会的发起人公司运营。目前包括Silicon Labs,飞利浦,施耐德电气,Landis和Gyr,Itron,Legrand,Kroger,Comcast,德州仪器和恩智浦。联盟的活动是通过致力于该技术特定领域的工作组完成的。这些包括网络组,安全组,应用程序配置文件组和其他几个组。成员可以使用标准,然后非成员可以下载。要在产品中使用ZigBee技术,公司必须成为联盟的成员。Silicon Labs活跃于联盟的各个领域,并通过其Ember®ZigBee解决方案帮助客户采用ZigBee技术。Ember ZigBee平台是迄今为止所有新标准的测试和认证的黄金单元。Ember Corporation于2012年7月被Silicon Labs收购,是ZigBee联盟的创始成员。所有ZigBee文档都可以在ZigBee网站www.zigbee.org 上找到。需要ZigBee联盟会员才能访问规范文档。
ZigBee网络- 网络交互的基本级别,包括可接受的RF行为,创建和加入网络的方法,发现路由以及使用路由通过网络传输流量。
ZigBee应用程序层- 描述 ZigBee应用程序的一组消息和网络设置。遵守这些设置的所有设备都可以互操作。在ZigBee 3.0之前,有个人应用程序配置文件,无论是公共的还是私有的,都有自己的认证程序。使用ZigBee 3.0,有一个通用的应用层认证计划,适用于每个ZigBee产品。下图显示了一些原始的独立ZigBee应用程序配置文件。
认证- 联盟认证ZigBee应用程序向最终用户表明设备符合要求。使用私有配置文件的应用程序会获得使用正确运行的ZigBee堆栈的认证,并且在运行期间不会对其他Zig-Bee网络产生负面影响。有关更多信息,请参阅7. ZigBee 合规性。由于ZigBee致力于开放和可互操作的设备,因此从物理层到应用层已经采用或开发了标准,如下图所示。在物理和MAC(媒体访问控制)层,ZigBee采用IEEE 802.15.4标准。网络,安全和应用层都是由ZigBee联盟开发的。还开发了一个支持系统(如网关和调试工具)的生态系统,以简化ZigBee网络的开发和部署。继续开发标准的扩展和增加,Silicon Labs致力于支持这些标准。
Silicon Labs在整个EM3xx系列产品和无线Gecko(EFR32™)产品组合中提供基于ZigBee规范的标准网络API。Silicon Labs还提供允许快速ZigBee应用程序开发的工具,包括应用程序框架和基于GUI的工具AppBuilder。Silicon Labs使用Simplicity Studio作为其集成开发环境(IDE),并利用适用于ARM平台的IAR Embedded Workbench。以下三节描述了ZigBee网络的一般特性,讨论了IEEE 802.15.4标准的使用,并总结了ZigBee网络的硬件和软件元素。
1)一般特性
ZigBee旨在成为经济高效的低功耗解决方案。它面向许多市场,包括家庭自动化,楼宇自动化,传感器网络,智能能源和个人医疗保健监控。ZigBee网络的一般特征如下:
低功耗 - 设备通常可以使用合适的工作周期在AA型电池上运行数年。通过极其谨慎的设计和特殊的电池技术,一些ZigBee设备(如燃气表)可以实现20年的电池寿命。
低数据速率 - 2.4 GHz频段支持250 kbps的无线电数据速率。通过网络的实际可持续流量低于理论无线电容量。因此,ZigBee更适用于采样和监控应用程序或基本控制应用程序。
小型和大型网络 - ZigBee网络从多个设备到数千个无缝通信的设备不等。网络层设计有多种不同的数据传输机制(路由类型),以根据预期用途优化网络操作。
范围 - 典型设备提供足够的范围来覆盖普通家庭。随时可用的功率放大器设计大大扩展了范围。在物理层使用分布式扩频,以更好地抵抗干扰。
简单的网络安装,启动和操作 - ZigBee标准支持多种网络拓扑。用于形成和加入网络的简单协议允许系统在发生路由问题时自行配置和修复路由问题。
2)IEEE 802.15.4
ZigBee网络基于IEEE 802.15.4 MAC和物理层。802.15.4标准在2.4 GHz频段以250 kbps运行,在900/868 MHz频段以40 kbps / 20 kbps运行。许多芯片公司提供2.4 GHz频段的解决方案,其中较小的数字支持900/868 MHz频段。ZigBee PRO使用802.15.4-2003。
802.15.4 MAC层用于基本消息处理和拥塞控制。该MAC层包括用于形成和加入网络的机制,用于监听空闲信道的设备的CSMA机制,以及用于处理相邻设备之间的可靠通信的消息的重试和确认的链路层。ZigBee网络层建立在这些基础机制的基础上,以在网络中提供可靠的端到端通信。802.15.4标准可从www.ieee.org获得。
802.15.4标准提供了MAC层内的一些选项,ZigBee在任何当前堆栈配置文件中都没有使用这些选项。这种未使用的特征的示例是保证时隙(GTS),其将由网络用于跨设备同步无线电活动。因此,这些项目通常不包含在ZigBee软件堆栈中以节省代码空间。ZigBee还对ZigBee规范的附录D中记录的802.15.4 MAC进行了具体更改。
3)硬件和软件元素
ZigBee解决方案需要实现ZigBee无线电和相关的微处理器(在一个芯片中或单独使用),以及在ZigBee堆栈之上实现应用程序。EmberZNet PRO是ZigBee PRO堆栈的Silicon Labs实现。
通常,开发人员可以购买ZigBee无线电和软件作为捆绑包,尽管已经开发了一些第三方软件堆栈。通常,硬件和软件提供商包括用于软件的硬件和样本应用的参考设计。基于这些,硬件开发人员可以根据自己的特定需求定制硬件。或者,许多模块提供商可以提供紧凑且低成本的定制模块。
由于典型ZigBee应用程序的嵌入特性,软件应用程序开发通常与硬件设计相互关联,以提供最佳解决方案。Silicon Labs提供了一个应用程序框架,为客户提供了一种基于ZigBee应用程序配置文件和ZigBee集群库(ZCL)快速开发应用程序的方法。或者,许多第三方软件开发公司专门开发ZigBee应用程序,并可以协助新产品开发。
AppBuilder与ZigBee应用程序框架配合使用,包括对ZigBee 3.0应用程序层的支持,以及许多传统的ZigBee配置文件(如家庭自动化(HA),智能能源(SE)和ZigBee Light Link(ZLL)) 。Silicon Labs还提供了许多在开发过程中可供开发人员使用的实用程序和工具,包括:
无线(OTA)引导加载程序,允许在部署后升级系统软件
网关接口将ZigBee网络连接到其他系统
微处理器的编程工具
网络嗅探器和调试工具,允许查看和分析网络操作。
处理器调试工具通过与领先公司的合作。
嵌入式网状网络允许无线电中继其他无线电的消息,从而使无线电系统更加可靠。例如,如果节点不能直接向另一个节点发送消息,则嵌入式网状网络通过一个或多个中间节点中继消息。
EmberZNet PRO支持三种类型的网状网络拓扑,如下图所示:
星空网络
全网状网络
混合网状网络
2.1 网络
在星形网络中,一个集线器是所有通信的中心点。集线器可能会成为网络/处理带宽的瓶颈。这种拓扑结构不是很像网状,传输受到集线器通信半径的限制。外围节点可以由电池供电。在EmberZNet PRO堆栈中,此拓扑由一组终端设备组成,其中一个协调器节点作为其父节点。协调器节点充当网络集线器。
全网状网络
在全网状网络中,所有节点都是路由器节点,包括形成网络后的协调器。由于所有节点都可以为所有其他节点中继信息,因此该拓扑最不容易受到链路故障的影响; 一个设备极不可能充当整个网络的单点故障。
混合网状网络
混合网状网络拓扑结合了星形和网格策略。存在多个星型网络,但它们的集线器可以作为网状网络进行通信。混合网络允许比星形拓扑更长距离的通信,并且比网状拓扑具有更多的分层设计能力。此拓扑由EmberZNet PRO堆栈组成,使用路由器设备作为星型子网的集线器,其中每个集线器可以连接到终端设备。拓扑的选择必须考虑哪些节点是线路供电的或电池供电的,预期的电池寿命,所需的网络流量,延迟要求,解决方案的成本以及其他因素。有关详细信息,请参阅基础知识:设计选择
ZigBee规范在单个网络中最多支持一个协调器,多个路由器和多个终端设备。以下各节介绍了这些节点类型。
协调员
ZigBee协调器(ZC)负责组建网络。协调器是具有一些附加功能的路由器。ZigBee协调器功能包括在扫描可用信道后选择适当的信道,以及选择扩展的PAN ID(有关扩展PAN ID 的更多信息,请参见5.4扩展 PAN ID)。在形成网络之后,协调器充当路由器。
对于某些应用程序,协调员可能已添加了职责,例如作为信任中心或网络管理员。信任中心管理网络的安全设置和授权。网络管理器监视和纠正网络问题,例如PAN ID冲突或由于干扰导致的信道变化。这些选择取决于应用程序开发人员,在某些情况下由适当的ZigBee堆栈配置文件完成。例如,在家庭自动化应用程序配置文件下,协调器始终是网络的信任中心。
注意:启动网络时,只能将网络协调员指定为安全信任中心。
路由器
ZigBee路由器设备(ZR)为网络设备提供路由服务。路由器也可以作为终端设备。与终端设备不同,路由器不是为休眠而设计的,只要网络建立就应该保持开启状态。
终端设备
终端设备(ZED)是叶节点。它们只通过其父节点进行通信,与路由器设备不同,它不能传递用于其他节点的消息。
根据网络堆栈,终端设备可以有以下几种类型:
困倦的终端设备(EmberNodeType EMBER_SLEEPY_END_DEVICE)在空闲时关闭其无线电,从而节省资源。但是,他们必须轮询其父节点以接收传入的消息和确认; 在终端设备请求数据之前,不会向睡眠终端设备发送数据。困倦的终端设备有时也被称为rx-off-idle-idle设备。这是标准的ZigBee设备类型。
非困倦的终端设备(EmberNodeType EMBER_END_DEVICE)不会为其他设备路由消息,但它们在操作期间仍然保持通电状态。这些设备称为Rx-on-idle-idle设备。这是标准的ZigBee设备类型。
移动终端设备(EmberNodeType EMBER_MOBILE_END_DEVICE)是一种具有增强功能的昏昏欲睡的终端设备,可以改变其物理位置并快速切换到新的父路由器。此设备类型是对基本ZigBee困终端设备的Silicon Labs修改,以提供移动设备的附加功能和管理。
EmberZNet PRO堆栈支持困和非困的终端设备。还必须仔细考虑节点类型的选择。例如,在非常密集的网络中,由于当子节点试图找到与之通信的父节点时可能发生的干扰问题,所有线路供电的节点都不是总是有利的。尝试创建一个所有节点都具有冗余路径的平衡网络非常重要,但是在没有太多路由器靠近的地方会产生干扰。
ZigBee有几种路由机制,可以根据网络和预期的流量模式使用。在ZigBee规范中,文档05-3474,第3.4节描述了命令帧的帧格式,第3.6.3节描述了路由行为。
应用程序设计人员应选择将哪种机制用作系统体系结构和设计的一部分。在实际实践中,一个应用可以使用这些路由机制中的若干个,因为一些设备可以执行一对一通信,而其他设备可以与中央监控设备通信。下面讨论的路由类型是:
表路由
广播路由
组播路由
多对一/源路由
ZigBee和ZigBee PRO堆栈具有不同的路由机制。
ZigBee PRO堆栈从不使用树路由进行消息传递,因为使用了备用寻址方案,并且网络中不存在树。当一个节点发送路由请求以发现到另一个节点的路径时,形成路由。在两个节点之间发现路由后,源节点将其消息发送到路由中的第一个节点,如源节点的路由表中所指定。每个中间节点使用其自己的路由表将消息转发到沿着路由的下一个节点(即跳跃),直到消息到达其目的地。如果路由失败,则将路由错误发送回消息的发起者,然后消息可以重新发现该路由。
广播路由
广播路由是一种向网络中的所有设备发送消息的机制。存在网络级广播选项,仅发送给路由器或发送到睡眠终端设备。网络中所有支持路由器的设备重复广播消息三次,以确保传送到所有设备。虽然广播是发送消息的可靠方法,但应该谨慎使用它,因为它会影响网络性能。重复广播可以限制网络中可能发生的任何其他流量。广播也不是传递给睡眠设备的可靠方式,因为父设备负责缓冲睡眠儿童的消息,但可能在终端设备唤醒接收消息之前丢弃消息。
组播路由
组播路由提供一对多路由选项。当一个设备想要向一组设备发送消息时使用多播,例如灯开关向一组10个灯发送开启命令。在此机制下,所有设备都加入了组播组。只有属于该组成员的设备才会收到消息,但其他设备将路由这些组播消息。多播是过滤的有限广播。它应仅在应用程序中必要时使用,因为广播机制的过度使用会降低网络性能。永远不会确认多播消息。
多对一/源路由
多对一路由是一种简单的机制,允许整个网络具有到中央控制或监视设备的路径。在正常的表路由下,中央设备和紧邻它的设备将需要路由表空间来存储网络中每个设备的下一跳,以及中央设备本身的入口。鉴于ZigBee网络中经常使用的存储器受限设备,这些大型表是不合需要的。在多对一路由下,称为“集中器”的中央设备发送单个路由发现,该发现在所有路由器中建立单个路由表条目以向中央设备提供下一跳。这产生类似于表路由的结果,但是具有单个多对一路由请求而不是从每个路由器向集中器的许多单独的一对一路由请求。然后,网络中的所有设备都具有到集中器的下一跳路径,并且仅使用单个表条目。但是,中央设备通常还需要将消息发送回网络。这将导致路由表大小的更显着增加,特别是对于最靠近集中器的那些节点,因为它们是集中器的许多到达网络其余部分的出站路由中的中继点。相反,到集中器的传入消息首先使用路由记录消息来存储沿路由使用的跳跃序列。然后,集中器以相反的顺序将这些下一跳路由存储为本地保持的表中的“源路由”,称为“源路由表”。传出消息在消息的网络头中包括此源路由。然后使用网络标头中的下一跳而不是路由表来路由消息。这提供了大型可扩展网络,而不会增加所有设备的内存要求。应该注意的是,如果集中器存储这些源路由,则确实需要一些额外的存储器。
有关消息传递的详细信息,请参阅www.zigbee.org上提供的ZigBee规范。
本节中的信息是为那些希望了解网络层操作细节的人提供的,这可以在故障排除过程中证明是有用的。否则,链接状态消息由堆栈自动处理,应用程序编写者无需关心它。由于本地噪声基底,接收器灵敏度和发射功率的变化,无线网络中的链路通常具有不对称的链路质量。路由层必须使用双向链路质量的知识,以便建立工作路由并优化这些路由的可靠性和效率。它还可以利用这些知识通过单一发现建立可靠的双向路线。ZigBee路由器(ZR)通常通过对物理层进行的LQI(链路质量指示器)测量进行平均来跟踪邻居表中的入站链路质量。为了处理链路不对称,ZigBee PRO堆栈配置文件指定路由器获取并存储由其邻居测量的外向链路的成本。这是通过周期性一跳广播交换链路状态信息来实现的,称为“链路状态”消息。下面解释链路状态算法,如EmberZNet PRO中所实现的。
ZigBee路由器在邻居表中存储有关相邻ZigBee设备的信息。对于每个路由器邻居,该条目包括以下字段:
平均传入LQI
外出费用
年龄
传入的LQI字段是来自邻居的所有传入分组的LQI的指数加权移动平均值。使用查找表从该值计算邻居的收入成本。
传出开销是邻居在其邻居交换消息中报告的传入开销。输出成本为0意味着成本未知。如果条目具有非零传出成本,则称为“双向”,否则称为“单向”。
age字段测量自收到上一个邻居交换消息以来的时间量。新条目从0岁开始。每个EM_NEIGHBOR_AGING_PERIOD增加年龄,目前为16秒。只要年龄已经至少为EM_MIN_NEIGHBOR_AGE(当前定义为3),接收邻居交换数据包会将年龄重置为EM_MIN_NEIGHBOR_AGE。这使得可以识别最近添加到表中的节点并避免驱逐它们,这减少了密集网络中的颠簸。如果年龄大于EM_STALE_NEIGHBOR(当前为6),则该条目将被视为过时,并且传出成本将重置为0。
链接状态消息
路由器每16秒发送链路状态消息加上或减去2秒的抖动。如果路由器没有双向链路,则发送速度提高八倍。数据包作为单跳广播发送,不重试。在EmberZNet PRO堆栈中,它们作为ZigBee网络命令帧发送。
有效负载包含所有非陈旧邻居的短ID列表,以及它们的传入和传出成本。传入成本始终为1到7之间的值。传出成本是介于0和7之间的值,值0表示未知的传出成本。有关帧格式的详细信息,请参阅ZigBee规范。链路状态消息也由Simplicity Stu- er Network Analyzer自动解码,以便于参考。
在接收到链路状态消息时,该邻居已经存在邻居条目,或者如果存在空间或者邻居选择策略决定用它替换旧条目,则添加一个邻居条目。如果条目没有进入表中,则只丢弃数据包。如果它确实进入,则输出成本字段将根据发送方的邻居交换消息中列出的接收节点的传入成本进行更新。如果消息中未列出接收方,则将传出成本字段设置为0.年龄字段设置为EM_MIN_NEIGHBOR
_AGE 。
网络层如何使用双向成本
如上所述,路由算法利用双向成本信息来避免创建损坏的路由,并优化已建立路由的效率和稳健性。对于熟悉ZigBee路由发现过程的读者,该子部分详细说明了如何使用传出成本。该机制非常简单,但提供了上述所有优点。
在接收到路由请求命令帧时,在邻居表中搜索对应于发送设备的条目。如果没有找到这样的条目,或者条目的输出成本字段具有值0,则丢弃该帧并终止路由请求处理。