ZigBee简介

一、 ZigBee 概述

1.1 ZigBee 网络节点

  • Co-ordinator:它是第一个开始的节点,负责创建网络,其他节点要加入该网络需要通过它的允许。一旦网络建立,Co-ordinator 担任路由角色(可以将消息从一个节点转播到另一个节点)并且能发送和接收数据。每个网络中必须有且仅有一个 Co-ordinator。
  • Router:这是一个具有路由功能的节点,也可以发送和接收数据。它允许其他节点通过它加入网络,所以扮演一个延伸网络的角色。一个网络中可以有很多 Router。
  • End Device:这是一个只具有发送和接收数据能力的节点(没有路由功能)。一个网络中可以有很多 End Device。

1.2 ZigBee 网络拓扑结构

ZigBee 协议主要设计于 Mash 网络。Mash网络没有隐式结构,它是由一个协调器和许多 Router 和 End Device 集合在一起的。

  • 除了 Co-ordinator 以外的每个节点都要与 Router 或 Co-ordinator 联系——这个节点是已加入网络并知道其父节点。每个父节点可以有很多子节点。
  • End Device 只能与其自己的父节点直接通信。
  • Router 和 Co-ordinator 可以和无线范围内的任一Router 或 Co-ordinator 直接通信。

ZigBee简介_第1张图片

1.3 ZigBee 的典型应用
ZigBee 适用于许多不同的应用,覆盖商用和家用,其中包括:

  • 点对点电缆替代(无线鼠标,遥控,玩具)
  • 安全系统
  • 环境控制
  • 医院病人监护
  • 照明控制
  • 家庭自动化
  • 自动抄表
  • 工业自动化

1.4无线射频操作
ZigBee 构建时内部使用的是 IEEE 802.15.4 协议,提供同网络连接操作有 3 种可能的 RF(射频),868,915和2400Mhz, 这些射频波段的特征如下表所示。
ZigBee简介_第2张图片
868 和 915MHz 频段提供一定的优势,如用户较少,更少的吸收和反射,但2400Mhz 频带更广泛采用的原因是:

  • 全球可用性为未经授权的使用
  • 更高的数据率(250 kbps)和更多的信道
  • 低功率(传输/接收在短时间由于更高的数据速率)
  • 波段更普遍的理解和被市场接受

1.5 电池组件
ZigBee 和 IEEE 802.15.4 协议对电池供电的应用有特别的设计,从用户的角度看,电池供电有一定的优势:

  • 简单和低成本的安装节点:不需要连接节点到分离的电源供应器
  • 灵活的节点位置:节点可以安置在没有电源供电的任一地方,甚至可以作为移动设备使用
  • 很容易修改网络:在一个临时和永久的基础上,节点可以被很容易的添加和移除

由于这些设备通常比较小,它们使用小容量电池,因此电池使用必须优化,这是通过限制能量所需设备的时间来实现的。

  • 由于系统中主要的耗用功率是无线操作,数据可以很少发送(也许每小时一次,甚至每周一次),结果在低工作周期。
  • 数据没有被发送时,设备可以恢复到低功耗“睡眠”模式来将功耗降到最低。

1.6 简单的安装和配置
ZigBee 网络的优点之一是可以安装和配置。
网络的配置取决于安装系统如何发展,有三个系统可能性:预配置,自配置和自定义。

  • 预配置系统:一个系统中的所有参数都是制造商配置的,预配置系统作为交付和不容易被修改或扩展的设备使用。如自动售货机,病人检测单元。
  • 自配置系统:系统的安装和配置是由终端用户来完成的,网路最初配置是设备之间通过发送“发现”的消息实现的。一些初始设置需要用户干预设备——例如,通过按节点上的按钮。一旦安装,用户没有任何重新配置系统可以很容易地修改或扩展——系统检测到当一个节点被添加,删除或简单移动,会自动调整系统设置。
  • 自定义系统:系统是适用于特定的应用程序/位置,它设计和安装使用自定义网络设备系统集成商,配置系统通常是使用软件工具。

二、 ZigBee 协议栈架构

2.1 架构概述
本节介绍了一个运行在 ZigBee 协议栈的网络节点的基本软件构架,软件架构是建立在 IEEE 802.15.4(已认证的无线通信标准)上。

从更高的一个角度来说,任何 ZigBee 网络的软件架构包含四个基本的协议栈层:应用层、网络层、数据连接层和物理层。应用层最高,物理层最低,如下图:

ZigBee简介_第3张图片

  • 应用层:应用层包含在网络节点上运行的应用程序,这些应用程序给设备其自身的功能——本质上是应用程序将输入转换成数字数据,再将数字数据转换成输出。一个节点可能运行多个应用程序——例如,一个环境传感器可能包含独立的应用程序去测量温度、湿度和大气压。
  • 网络层:网络层提供了 ZigBee 协议栈功能和 IEEE 802.15.4 层的应用接口,该层涉及网络结构和多级路由。
  • 数据连接层:数据连接层由 IEEE 802.15.4 提供,负责寻址——对于传出数据,它确定往哪里传;对于输入数据,它确定数据从哪里来的。它也负责组装传输的数据包或帧,拆解收到的帧。在 IEEE 802.15.4 标准中,数据连接层被称为 IEEE 802.15.4 MAC(媒体访问控制),帧使用 MAC 帧。
  • 物理层:物理层由 IEEE 802.15.4 标准提供,涉及物理传输介质的接口(广播,在这种情况下),在这种介质中交换数据位,也可以在上一层交换数据位(数据连接层)。在 IEEE 802.15.4 标准中,物理层被称为 IEEE 802.15.4 PHY。

2.2 网络层概念

2.2.1 ZigBee 节点
在 ZigBee 网络中有三种一般类型的节点:

  • Co-ordinator
  • Router
  • End Device

Co-ordinator
所有的 ZigBee 网络中必须有且仅有一个 Co-ordinator。
在网络层,Co-ordinator 主要是在系统初始化时被使用——它是第一个启动的节点,执行下面的初始化任务:

  • 选择网络要使用的频率信道(通常选择检测活动最少的一个)
  • 启动网络
  • 允许子节点通过它加入网络

Co-ordinator 可以另外提供其他服务,比如消息路由和安全管理。它也可以在应用层提供服务。如果这些附加服务任意一个被使用,Co-ordinator 必须随时随地提供它们。然而,如果没有附加功能被使用,网络将正常运作即使 Co-ordinator 衰退或关闭。

Router
ZigBee 协议栈网络通常至少有一个 Router。
Router 的主要任务有:

  • 从一个节点转发消息到另一个节点
  • 允许子节点通过它加入网络

注意:路由器不能睡眠,因为它必须由于有效的路由。

End Device
End Device 在网络层主要的任务是发送和接受消息,End Device 只能和它的父节点直接通信,所以 End Device 所接收或发送的消息必须经过它的父节点。

End Device 可以用电池驱动,不发送或接收数据时可以睡眠。消息发往一个睡眠的 End Device ,在其睡醒之前由其父节点代为缓冲。

注意:End Device 不能传递消息,也不允许其他节点通过它加入网络,所以End Device 没有子节点。

2.2.2 网络拓扑结构
ZigBee 协议栈标准是为了具有网状拓扑的无线网络而设计的。
Mash 网络包含一个 Co-ordinator 、一些 Router和一些 End Device。Co-ordinator 将一组 Router 和 End Device(Co-ordinator 的子节点)联系在一起。Router 将更多的 Router 和 End Device(Router 的子节点)联系在一起。这样可以继续很多层。节点之间的关系必须遵循下面的规则:

  • Co-ordinator 和 Router 可以有子节点,因此可作为父节点
  • Router 既能做子节点,又能做父节点
  • End Device 没有子节点,因此不能作为父节点

Mash 网络的通信规则如下:

  • End Device 只能与其父节点直接通信
  • Router可以和它的子节点,父节点以及无线范围内的任一Router 或 Co-ordinator 直接通信。
  • Co-ordinator 可以和他的子节点以及无线范围内的任一Router直接通信。

在 ZigBee 协议栈中,一个网络的最大深度(Co-ordinator 下面的层数)是15。消息从源节点到目标节点可跳传的节点的最大数量是30(最大深度的两倍)。

2.2.3 邻居表
路由节点(Co-ordinator 或 Router)持有周边节点的信息,这些信息存储在包含节点的子节点,父节点和在 Mash 网络中所有的直接无线电通信的 Router节点的邻居表中。

可以定义一个有最大数量条目的邻居表。如果这个参数设置为一个较低的值,将导致“细长网络”。

2.2.4 网络地址
在 ZigBee 网络中,每个节点必须有一个唯一标识,这是通过两个地址实现的:

IEEE(MAC)地址:这是一个由 IEEE 分配的64 位地址,是设备的唯一标识——世界上没有任何两个设备的 IEEE 地址是相同的,它通常被称为 MAC 地址,在 ZigBee 网络中,有时被称为“扩展”地址。
网络地址:这是个 16位地址,是本地网络中节点的网络标识(因此在不同的网络中两个节点可能有相同点网络地址)。它有时被称作“短地址”。
在 ZigBee 协议栈中,节点的网络地址是动态分配的,当节点第一次加入网络时由其父节点随机分配 16 位地址。由于地址是随机分配的,因此被称为随机寻址。虽然是随机分配的,它的父节点也可以确保选择的地址没有分配给其它子节点。地址已经存在于网络之外的最接近的邻居是不可能的,因为存在一种机制来自动检测和解决冲突。加入网络的节点可以保留分配的网络地址,即使它离开父节点获得一个新的父节点。
Co-ordinator 的网络地址总是 0x0000。

2.2.5 网络 ID
一个 ZigBee 网络必须是唯一可辨认的,这允许一个以上的 ZigBee 网络很靠近的运行——节点运行在同一个空间必须能识别它们所属的网络。
为此,ZigBee 使用了如下两个 ID :

PAN ID:16 位的值被称为 PAN ID(个人区域网络 ID),是用于节点之间的通信(在 IEEE 802.15.4 层的堆栈中执行)来识别相关的网络。PAN ID 的值是在网络开始时由 Co-ordinator 随机选择的。当其他节点加入网络,他们会获取到网络的 PAN ID并且在该网络随后的通信中使用它。有可能一个新的安装网络生成的 PAN ID 会与附近相同信道中已经运行的其他网络的 PAN ID 冲突。在这种情况下,ZigBee 协议栈会自动的解决这样的冲突,通过给新网络生成其他随机 PAN ID,直到不会与可检测到的任何一个网络的 PAN ID 发生冲突。
扩展 PAN ID:64 位的值被称为扩展 PAN ID(EPID),用于形成网络和随后改造网络。这个标识符可预设一个随机值在运行的 Co-ordinator 的用户应用程序上。另外,当网络开始时 Co-ordinator 将采用自己的 64 位 IEEE/MAC 地址作为扩展 PAN ID,标识符可以预设为 0——这是一个肯定的方式获得全球独一无二的值。
当一个 Router 或 End Device 第一次尝试发现网络去加入时,将通过下面两种方法之一去使用扩展 PAN ID。
※ 如果扩展 PAN ID 已经在 Router 或 End Device 的用户应用程序中进行了预设,节点将会加入拥有这个扩展 PAN ID 的网络(提供的这个网络被检测到)。
※ 如果 Router 或End Device 没有预设扩展 PAN ID,节点将会加入第一个检测到的网络,不考虑扩展 PAN ID。加入网络的节点将会获取该网络的扩展 PAN ID,如果因为某些原因节点离开网络,可以使用获取的扩展 PAN ID 重新加入该网络。

2.3 创建网络

2.3.1 启动一个网络(Co-ordinator)
Co-ordinator 负责启动一个网络。它必须是第一个启动的节点,一旦上电,将执行下面的网络初始化步骤:

  1. 设置扩展 PAN ID 和 Co-ordinator 地址
    Co-ordinator 第一次设置网络的扩展 PAN ID 和设备自己的网络地址:
    ※ 在协调器应用程序中设置指定的 64 位扩展 PAN ID(如果这个值为 0,扩展 PAN ID 将被设置为 Co-ordinator 的 64 位 IEEE/MAC 地址)
    ※ 设置 Co-ordinator 的 16 位网络地址为 0x0000

  2. 选择信道
    接下来 Co-ordinator 会在射频波段内选择网络中将要运行的信道,Co-ordinator 执行能量检测扫描,在射频波段内扫描去寻找一个安静的信道(扫描可以被规划去“听”特殊信道)。检测活动最少的信道会被选择。

  3. 设置网络的 PAN ID
    信道一旦被选择好,Co-ordinator 将会给网络选择一个 16 位的 PAN ID。为了做到这一点,它监听其他网络信道并且识别那些网络的 PAN ID(如果有的话)。为了避免冲突,Co-ordinator 分配自己的网络一个其他网络没有使用的随机 PAN ID。

  4. 接收其他设备的加入请求
    Co-ordinator 现在准备接收其他设备(Router 和 End Device)的请求,通过它无线连接到网络。

2.3.2 加入一个网络(Router 和 End Device)
Router 和 End Device 可以通过 Co-ordinator 加入一个已经创建的网络,Co-ordinator 和 Router 都具有允许其他节点通过它们加入网络的功能,加入过程如下:

  1. 搜索网络
    新的节点扫描相关射频波段的信道去发现网络,在相同的信道也许会有许多网络在运行,选择网络是应用程序的责任(例如,这个决定是基于预定义的扩展 PAN ID)。
  2. 选择父节点
    现在节点在选择的网络里通过监听网络的活动来选择父节点,该节点可能会检测到网络中的多个 Router 和 Co-ordinator,该节点会选择网络中最小深度的Router 作为父节点——也就是说,父节点离 Co-ordinator 最近。Co-ordinator 的深度为 0。
  3. 请求加入
    节点向其父节点发送一条消息来请求加入网络。
  4. 接收响应
    现在节点在等待可能的父节点来响应,来确定该节点是否是被允许的设备和父节点目前是否在允许设备加入的状态。父节点通过查询信任中心来确定要加入的节点是不是被允许的设备(如果它本身不是信任中心)。如果这些标准是安全的,父节点将会允许该节点作为自己的子节点来加入网络。父节点会发送一个包含为子节点随机分配的 16 位网络地址的响应给子节点。
    如果可能的父节点不能接受该节点作为其子节点,将会发送一个拒绝的响应给该节点,然后该节点必须尝试寻找其他可能的父节点(或其他的网络)。
  5. 获取网络 ID
    一旦新节点被分配了网络地址,它便会获取该网络的 PAN ID 和 扩展 PAN ID,它需要 PAN ID 与网络通信,需要扩展 PAN ID 是为了以后重新加入该网络(如果它重新加入该网络,那么它将再次使用它的网络地址)。

2.4 应用层概念

2.4.1 多个应用程序和端点(Endpoints)
一个节点可能有多个应用程序在运行——例如,一个节点在环境监测网络中可能要监测温度和湿度,温度和湿度都是一个应用。通向应用实例的入口是 Endpoint 提供的,Endpoint 扮演着应用的通信端口。

在一个节点上为了指导一个消息到适当地应用实例,相关的 Endpoint 必须交流,Endpoint 的编号为 1 ~ 240。因此,在 ZigBee 网络中为了和一个远程应用实例通信,需要提供远程节点的地址以及该节点上 Endpoint 的数量。

Endpoint 255 是广播的 Endpoint 编号——通过发送消息给这个 Endpoint 编号,相同的数据可以发送给节点上所有的应用实例。

2.4.2 描述符
一个应用在运行时可能需要获取网络中节点的消息,为此,它使用保存在节点描述符中消息。

一个节点中保存了三个强制描述符和两个可选描述符,强制描述符包括节点描述符,节点电源描述符和简单描述符,可选描述符是复杂描述符和用户描述符。

对每一个节点来说,只有一个节点描述符和节点电源描述符,但是每一个 Endpoint 都有一个简单描述符,设备也可能有复杂描述符和用户描述符。

节点描述符

节点描述符包含节点功能的信息,包括:

  • 类型(End Device,Router 或 Co-ordinator)
  • 使用的频段(868MHz,915MHz 或 2.4 GHz)
  • IEEE 802.15.4 MAC 能力——也就是说,是否:
    ※ 设备可以是一个 PAN Co-ordinator
    ※ 节点工具是全功能或简化功能的 IEEE802.15.4 设备
    ※ 设备是电源供电
    ※ 设备能够使用 MAC 安全
    ※ 接收方停留在空闲时间
  • 制造商码
  • 最大缓冲区大小(在一个操作中一个应用程序可以发送的最大数据包)

节点电源描述符

节点电源描述符包含节点怎样供电的信息:

  • 电源模式——接收设备是否总是开着,或者由网络决定它定期唤醒,或者由应用程序需要来唤醒(例如按键按下)
  • 可用的电源——指示是否市电电源供电,或者是可充点电的电池或一次性的电池对设备供电
  • 当前的电源——指示哪一种电源(市电电源,或可充点电的电池或一次性的电池)当前对设备供电
  • 当前电源水平——指示当前电源的管理水平

简单描述符

应用程序的简单描述符包括:

  • Endpoint 在哪一个应用程序上通信
  • 工具的应用程序概要文件
  • 应用程序概要文件的设备标识符和版本
  • 是否有相应的复杂描述符和用户描述符

2.4.3 应用协议
应用协议确保不同制造商的 ZigBee 设备的互操作性。这个协议涉及特别的应用领域和市场,包含相关应用领域所需要的设备类型和接口的描述。

应用协议依据设备描述符来定义。ZigBee 联盟定义了公用的协议,例如 HA 协议。私人和公用的协议可由制造商定义,但是所有的共用协议必须使用 ZigBee 联盟分配的唯一标识符。

应用协议不仅定义了支持的设备类型,还指定了数据支持的类型,操作可以在这些数据上执行。Endpoint 的指定的简单描述符是根据 Endpoint 的“Clusters”来定义的。

2.4.4 属性和集群(Clusters)
一个 ZigBee Endpoint 处理的数据实体(如温度测量)被称为属性。应用程序可以通过一组属性来通信——例如,一个恒温器端点可能有温度的属性,最低温度的属性,最高温度的属性和公差属性。

ZigBee 应用程序使用“Cluster”的概念属性值进行沟通,一个 Cluster 包含一组相关的属性与一组命令相互作用的属性——例如,上面的温度测量属性和命令用于读取属性值。

一个 Cluster 有两方面,分别与接收和发送命令有关。一个 ZigBee 应用程序可能用到一方面或者两方面都用到。Cluster 的描述如下,如图5 所示。

  • 输入 Cluster 或服务 Cluster:这类 Cluster 用于保存属性和发送命令去操作存储的属性(Cluster 可能返回的响应)——例如,一个输入的 Cluster 将会保存温度测量的相关属性,在接收到读这些属性的请求命令时做出响应。
  • 输出 Cluster 或客户端 Cluster:这类 Cluster 通过发送命令(接收响应)给相对应的输入 Cluster 来操作属性。正常情况下,通过写命令来设置属性值,通过读命令获取属性值(读到的值在响应中返回)。
    ZigBee简介_第4张图片
    输入和输出 Cluster 通过 Endpoint 通信在 Endpoint 的简单描述符(形成应用协议的一部分)中有列出(见 2.4.3)。

为了一致性和互操作性,ZigBee 联盟针对不同的功能领域定义了许多标准 Cluster 。这些 Cluster 都聚集在 ZigBee Cluster Library(ZCL)中。因此,开发商可以在应用协议的 ZCL 中使用标准 Cluster。ZCL 在 ZigBee 联盟的 ZigBee Cluster Library Specification(075123)中有详细描述。

2.4.5 发现
ZigBee 规范为设备找出网络中其他节点的功能提供便利,比如它们的地址,运行的应用程序类型,供电电源及睡眠模式。这些信息保存在每个节点的描述符中,用于询问节点去适应它在网络中的行为要求。发现是当一个节点被引进一个用户配置网络时代表性使用,如国内安全或照明控制系统。为了整合设备到网络中,可能需要用户通过按下按键或其他类似方法启动一体化进程。第一个任务是找出是否有新节点可以通信的合适设备。

设备发现

设备发现返回一个网络节点地址相关的信息。重新获取的信息可以是给予网络地址的节点的 IEEE/MAC 地址或者给予 IEEE/MAC 地址的节点的网络地址。如果被询问的节点是 Router 或 Co-ordinator,它可以随意的提供与它相关的所有设备的地址和它自己的地址。这样,它通过向 Co-ordinator(网络地址 0x0000)发送这个信息的请求可能发现网络中所有的设备,然后使用与 Co-ordinator 子节点对应的一系列地址发送关于它们子节点的其它询问。

服务发现

服务发现允许节点向一个远程节点请求有关远程节点功能的信息。这些信息存储在远程节点的的一些描述符中,包括:

  • 节点的设备类型和功能
  • 节点的电源特征
  • 每一个运行在节点上的应用程序的信息
  • 如序列号的选择信息
  • 其他的用户定义信息——例如,像“MtgRoomLight”一样容易理解的名称

这些描述符请求是设备在发现过程中发送的设备配置和集成到一个 ZigBee 网络的代表部分。

2.4.6 ZigBee 设备对象
所有 ZigBee 设备共同的特殊应用程序,用来处理各种被描述的进程。这个应用是 ZigBee 设备对象或 ZDO。它存在于节点的应用层,通过 Endpoint0 使用 ZigBee 设备对象和相关的 Cluster 可以与远程节点通信。它具有以下规则:

  • 定义网络设备的类型:Co-ordinator,Router,End Device
  • 初始化节点允许应用程序运行
  • 执行设备发现过程和服务发现过程
  • 允许 Co-ordinator 创建网络和Router,End Device 加入或离开网络进程所需的工具
  • 启动和响应绑定请求
  • 提供安全服务,允许应用程序之间建立安全关系
  • 允许远程节点从节点上重新获取信息,比如路由绑定表,执行节点的远程管理,例如指示节点离开网络

ZDO 在堆栈内使用服务去落实这些规则,并且提供了一种手段来允许用户应用程序访问堆栈服务。

你可能感兴趣的:(ZigBee,ZigBee)