【XBEE手册】ZigBee网络
【XBEE手册】ZigBee网络
@(ZigBee)[ZigBee, XBEE手册]
[转载
请注明出处,谢谢!]
定义
本节提供Zigbee节点类型和协议的定义。
Zigbee节点类型
-
协调器 (Coordinator)
具有启动网络独特功能的节点。协调器负责整个网络的工作信道和PAN ID。一旦建立,协调器就可以通过允许路由器和终端设备的加入来构建网络。一旦启动网络,协调器就像路由器一样运行。它可以参与路由数据包,并成为数据包的源或目标。- 每个PAN一个协调器
- 建立/组织PAN
- 可以路由数据包到其他节点/路由来自其他节点的数据包
- 可以是数据包源和目标
- 电源供电
-
路由器
创建/维护网络信息并使用此信息确定数据包的最佳路由的节点。路由器必须先加入网络才能允许其他路由器和终端设备加入。路由器可以参与路由数据包,是电源供电的节点。- 多个路由器可以在一个PAN中运行
- 可以路由数据包到其他节点/路由来自其他节点的数据包
- 可以是数据包源和目标
- 电源供电
-
终端设备
终端设备必须始终与其父设备进行交互以接收或传输数据。它们定期休眠,因此没有路由能力。终端设备可以是数据包的源或目标,但不能路由数据包。终端设备可以由电池供电,并提供低功耗操作。- 多个终端设备可以在一个PAN中运行
- 可以是数据包源和目标
- 所有消息都通过协调器或路由器中继
- 降低功耗模式
ZigBee协议
协议 | 描述 |
---|---|
PAN(Personal Area Network) | 个人局域网 - 包括协调器和一个或多个路由器/终端设备的数据通信网络。 |
连接(Joining) | 节点成为Zigbee PAN的一部分的过程。节点通过加入协调器或路由器(之前已加入网络)而成为网络的一部分。在加入过程中,允许子节点加入的父节点为子节点分配一个16位地址。 |
网络地址(Network address) | 在节点加入另一个节点后分配给该节点的16位地址。协调器的网络地址始终为0。 |
工作信道(Operating channel) | 为节点之间的数据通信选择的频率。工作信道由协调器在加电时选择。 |
能量扫描(Energy scan) | 扫描RF信道,检测所选信道上存在的能量。协调器使用能量扫描来确定工作信道。 |
路由请求(Route request) | 由协调器或路由器在整个网络中发送的广播传输,以尝试建立到目的节点的路由。 |
路由回复(Route reply) | 单播传输传回路由请求的发起者。它由节点在接收到路由请求数据包并且其地址与路由请求数据包中的目标地址匹配时启动。当路由表中不存在路由时,将建立到目标节点的路由。它基于Ad-hoc按需距离矢量路由(AODV)协议。 |
Zigbee堆栈(ZigBee stack) | Zigbee是一套已发布的高层通信协议规范,适用于小型低功耗模块。Zigbee堆栈在802.15.4规范之上提供了一层网络功能。例如,802.15.4协议中不存在Zigbee解决方案可用的网状和路由功能。 |
Zigbee堆栈层(ZigBee STACk layers)
大多数网络协议使用层的概念将不同的组件和功能分离成可以以不同方式组装的独立模块。
Zigbee建立在IEEE 802.15.4标准中定义的物理(Pysical, PHY)层和媒体访问控制(Medium Access Control, MAC)子层上。这些层处理低层网络操作,例如寻址和消息发送/接收。
Zigbee规范定义了网络(Network,NWK)层和应用程序(Application,APL)层的框架。网络层负责网络结构,路由和安全性。应用程序层框架由应用程序支持子层(Application Support sub-layer,APS),Zigbee设备对象(Zigbee device objects,ZDO)和用户定义的应用程序组成,这些应用程序为设备提供了特定的功能。
该表描述了Zigbee层。
Zigbee层 | 说明 |
---|---|
PHY | 定义Zigbee器件的物理操作,包括接收灵敏度,信道抑制,输出功率,信道数,芯片调制和传输速率规范。大多数Zigbee应用程序在2.4 GHz ISM频段上以250 kb /s的数据速率运行。有关详细信息,请参阅IEEE 802.15.4规范。 |
MAC | 管理相邻设备之间的RF数据交互(点对点)。MAC包括诸如传输重试和确认管理以及冲突避免技术(CSMA-CA)之类的服务。 |
NWK | 添加路由功能,允许RF数据包穿越多个设备(多跳),以便将数据从源路由到目标(peer to peer,对等)。 |
APS(AF) | 定义各种寻址对象的应用层,包括配置文件(profile),群集(ccluster)和端点(endpoint)。 |
ZDO | 应用程序层,提供设备和服务发现功能以及高级网络管理功能。 |
Zigbee网络概念
设备类型
设备类型
Zigbee定义了三种不同的设备类型:协调器,路由器和终端设备。
协调器
Zigbee网络只能有一个协调器设备。这个设备:
- 启动网络,选择信道和PAN ID(64位和16位)。
- 为休眠的终端设备子节点缓冲无线数据包。
- 管理定义网络、保护网络并保持健康的其他功能。
- 不能休眠; 协调器必须始终开机。
路由器
路由器是一个功能齐全的Zigbee节点。这个设备:
- 可以加入现有网络并发送,接收和路由信息。当设备相距太远而无法自行传达信息时,路由充当设备之间通信的信使。
- 为休眠的终端设备子节点缓冲无线数据包。可以允许其他路由器和终端设备加入网络。
- 不能休眠; 路由器必须始终通电。
- 网络中可能有多个路由器设备。
终端设备
终端设备本质上是路由器的简化版本。这个设备:
- 可以加入现有网络并发送和接收信息,但不能充当任何其他设备之间的信使。
- 不能允许其他设备加入网络。
- 使用较便宜的硬件并且可以间歇性地断电,通过暂时进入无响应的睡眠模式来节省能量。
- 始终需要路由器或协调器作为其父设备。父设备帮助终端设备加入网络,并在他们休眠时为他们存储消息。
Zigbee网络可以具有任意数量的终端设备。实际上,网络可以由一个协调器,多个终端设备和路由器组成。
下图显示了一个通用的Zigbee网络。
注意
每个Zigbee网络必须由一个且仅一个协调器和至少一个其他设备(路由器或终端设备)组成。
在Zigbee网络中,协调器必须选择PAN ID(64位和16位)和信道来启动网络。之后,它的行为基本上像路由器。协调器和路由器可以允许其他设备加入网络并可以路由数据。
在终端设备加入路由器或协调器之后,它必须能够通过该路由器或协调器发送或接收RF数据。允许终端设备加入的路由器或协调器成为终端设备的“父”。由于终端设备可以休眠,因此父母必须能够缓冲或保留目标给终端设备的输入数据包,直到终端设备能够唤醒和接收数据。
设备只能作为三种设备类型之一运行。设备类型通过选择配置来确定(早期版本通过选择固件来确定)。
默认情况下,设备作为路由器运行。要选择协调器操作,请将CE设置为1. 要选择终端设备操作,请将SM设置为非零值。要选择路由器操作,CE和SM都必须为0。
如果设备是协调器并且需要将其更改为终端设备,则必须先将CE设置为0。否则,SM配置将与CE配置冲突。同样,要将终端设备更改为协调器,用户必须先将其更改为路由器。
另一个复杂因素是默认参数并不总是适用于协调器。
例如:
- DH / DL默认为0,允许路由器和终端设备在首次启动时向协调器发送透传数据。如果在将设备更改为协调器时,其DH / DL未从默认值更改,则设备会将数据发送给自身,从而导致字符在键入时回显到屏幕。由于这可能不是所需的操作,因此当设备更改为协调器时,将DH / DL设置为广播地址或某个特定的单播地址。
- 另一个例子是智能能源建设的EO。对于路由器和终端设备,将此值设置为08;对于协调器,将其指定为02以将其指定为信任中心。因此,如果使用身份验证(SmartEnergy构建的正常情况),则在CE设置为1 时将EO从02 更改为08 。
- 另一个例子是Zigbee构建的EO。默认情况下,该值为0x00。但是,如果在网络中的所有设备上将EO和EE设置为0x01,则网络**将在连接时以明文(未加密)发送。这在开发环境中可能是一个有用的设置,但出于产品部署的安全原因不鼓励。
通常,在更改设备类型时,用户有责任确保将参数设置为与新设备类型兼容。
PAN ID
Zigbee网络称为个人局域网(PAN)。每个网络都定义有唯一的PAN标识符(PAN ID),这在同一网络的所有设备中是通用的。Zigbee设备预先配置了要加入的PAN ID,或者他们可以发现附近的网络并选择要加入的PAN ID。
Zigbee支持64位和16位PAN ID。两个PAN ID都用于唯一标识网络。同一Zigbee网络上的设备必须共享相同的64位和16位PAN ID。如果多个Zigbee网络在彼此的范围内运行,则每个Zigbee网络应具有唯一的PAN ID。
16位PAN ID
16位PAN ID用作网络中设备之间的所有RF数据传输中的MAC层寻址字段。但是,由于16位PAN ID(65,535种可能性)的寻址空间有限,因此多个Zigbee网络(在彼此的范围内)可能会使用相同的16位PAN ID。为解决潜在的16位PAN ID冲突,Zigbee Alliance创建了一个64位PAN ID。
64位PAN ID
64位PAN ID(也称为扩展PAN ID)旨在成为唯一的非重复值。当协调器启动网络时,它可以在预配置的64位PAN ID上启动网络,也可以选择随机的64位PAN ID。设备在加入时使用64位PAN ID; 如果设备具有预配置的64位PAN ID,则它将仅加入具有相同64位PAN ID的网络。否则,设备可以加入任何检测到的PAN,并在加入时从网络继承PAN ID。所有Zigbee信标都包含64位PAN ID,用于解决16位PAN ID冲突。
路由器和终端设备
Zigbee路由器和终端设备应配置为他们想要加入的网络的64位PAN ID,并且通常在加入网络时获取16位PAN ID。
由于16位PAN ID仅允许最多65,535个唯一值,而设备是随机选择16位PAN ID的,因此Zigbee中存在规定以检测两个网络(具有不同的64位PAN ID)是否在网络上运行同一个16位PAN ID。如果设备检测到冲突,则Zigbee堆栈可以执行PAN ID冲突解决,以更改网络的16位PAN ID以解决冲突。有关详细信息,请参阅Zigbee规范。
仅在一台设备上启用CE可以避免PAN ID冲突和网络问题。
工作信道
Zigbee使用直接序列扩频调制,并在固定信道上运行。802.15.4 PHY定义了2.4 GHz频段中的16个工作信道(信道11至26)。XBee模块支持所有16个信道。
Zigbee应用层:深入
以下主题更深入地介绍了Zigbee应用程序堆栈层(APS,ZDO),包括对Zigbee端点,群集和配置文件的讨论。这些主题中的大部分内容都讨论了许多情况下不需要的Zigbee堆栈的细节。
阅读这些主题,如果:
- XBee /XBee-PRO Zigbee RF模块可能要跟非Digi Zigbee的设备通话。
- XBee /XBee-PRO Zigbee RF模块需要网络管理和ZDO层的发现功能。
- XBee /XBee-PRO Zigbee RF模块需要在一个公共应用规范里操作(例如,智能能源,家庭自动化,等等)。
在以下情况下跳过这些主题
- XBee /XBee-PRO Zigbee RF模块不需要与非的Digi Zigbee设备互操作。
- XBee /XBee-PRO Zigbee RF模块仅需要在设备之间发送数据。
应用支持子层(APS)
Zigbee中的APS层添加了对应用程序配置文件,群集ID和端点的支持。
应用程序配置文件(Application profiles)
应用程序配置文件指定各种设备描述,包括各种设备的功能。应用程序配置文件分为公共或私有配置文件。 私人配置文件由制造商定义,而公共配置文件由Zigbee联盟定义,开发和维护。每个应用程序配置文件都有一个由Zigbee Alliance分配的唯一配置文件标识符。
公共配置文件的示例包括:
- 家庭自动化(Home automation)
- 智能能源(SmartEnergy)
- 商业楼宇自动化(Commercial building automation)
例如,SmartEnergy配置文件定义了各种设备类型,包括能源服务门户,负载控制器,恒温器,家用显示器等。SmartEnergy配置文件定义了每种设备类型所需的功能。例如,负载控制器必须响应已定义的命令以打开或关闭负载。通过定义标准通信协议和设备功能,公共配置文件允许独立制造商开发可互操作的Zigbee解决方案。
Digi XBee Zigbee固件在称为Digi DrOP-In Networking配置文件的私有配置文件上运行。但是,在许多情况下,XBee / XBee-PRO Zigbee RF模块可以使用API模式与公共配置文件或非Digi私有配置文件中的设备进行通信。有关更多信息,请参阅API操作。
群集(Clusters)
群集是配置文件中定义的应用程序消息类型。用户可以使用群集指定唯一的功能,服务或操作。以下示例是家庭自动化配置文件中定义的一些群集:
- 开/关 - 用于打开或关闭设备(灯,恒温器等)
- 电平控制 - 用于控制可设置为开启和关闭之间电平的设备
- 颜色控制 - 控制具有颜色功能的设备的颜色
每个群集都有一个关联的2字节群集标识符(群集ID)。所有应用程序传输都包括群集ID。群集通常具有关联的请求和响应消息。例如,智能能源网关(服务门户)可以向负载控制器发送负载控制事件,以便安排打开或关闭设备。在执行事件时,负载控制器将负载控制报告消息发送回网关。
在应用程序配置文件(私有或公共)中运行的设备必须正确响应所有必需的群集。例如,在家庭自动化公共配置文件中运行的灯开关必须正确实现开/关和其他所需的群集,以便与其他家庭自动化设备进行互操作。Zigbee联盟定义了一个Zigbee群集库(ZCL),其中包含可以在任何配置文件中实现的定义或各种通用群集。
XBee模块在Digi私有配置文件中实现各种群集。用户还可以使用API在任何群集ID(以及配置文件ID或端点)上发送或接收消息。有关更多信息,请参阅显式Rx指示符帧 - 0x91。
端点(Endpoint)
APS层包括对端点的支持。端点可以被认为是正在运行的应用程序,类似于TCP / IP端口。单个设备可以支持一个或多个端点。1字节值标识每个应用程序端点,范围从1到240.设备上的每个定义的端点都与应用程序配置文件相关联。例如,设备可以实现一个支持SmartEnergy负载控制器的端点,以及支持私有配置文件上的其他功能的另一个端点。
对于同时具有0xE6作为目标端点且0xC105作为配置文件ID的API帧,不会生成TX状态帧,因为此组合保留用于XBee / XBee-PRO Zigbee RF模块内部操作。
Zigbee设备配置文件(ZigBee device profile)
配置文件ID 0x0000保留给Zigbee设备配置文件。此配置文件在所有Zigbee设备上实现。设备配置文件定义了许多设备和服务发现功能以及网络管理功能 端点0是支持Zigbee设备配置文件的保留端点。此端点称为Zigbee设备对象(ZDO)端点。
Zigbee设备对象(ZigBee device object)
ZDO(端点0)支持Zigbee设备配置文件的发现和管理功能。有关所有ZDP服务的完整列表,请参阅Zigbee规范。每个服务都有一个关联的群集ID。
XBee Zigbee固件允许应用程序使用API轻松地将ZDO消息发送到网络中的设备。有关更多信息,请参阅ZDO传输。
Zigbee协调器操作
启动网络
协调器负责选择网络的信道,PAN ID,安全策略和堆栈配置文件。由于协调器是唯一可以启动网络的设备类型,因此每个Zigbee网络必须具有一个协调器。协调器启动网络后,它可以允许新设备加入网络。它还可以路由数据包并与网络上的其他设备通信。
为了确保协调器在良好的信道和未使用的PAN ID上启动,协调器执行一系列扫描以发现不同信道上的任何RF活动(能量扫描)并发现任何附近的操作PAN(PAN扫描)。以下主题描述了选择频道和PAN ID的过程。
安全政策
安全策略确定允许哪些设备加入网络,以及哪些设备可以验证加入设备。有关各种安全策略的详细讨论,请参阅Zigbee安全性。
信道选择
启动网络时,协调器必须为网络选择“良好”的信道进行操作。为此,它在多个信道(即频率)上执行能量扫描,以检测每个信道上的能量水平。协调器从其潜在频道列表中删除具有过多能量水平的信道。
PAN ID选择
在完成能量扫描之后,协调器扫描其潜在信道列表(能量扫描之后的剩余信道)以获得相邻PAN的列表。为此,协调器在每个潜在信道上发送信标请求(广播)传输。已经加入Zigbee网络的所有附近协调器和路由器通过将信标发送回协调器来响应信标请求。信标包含有关设备所在PAN的信息,包括PAN标识符(16位和64位)。该扫描(在潜在信道上收集信标)通常称为主动扫描或PAN扫描。
协调器完成信道和PAN扫描后,它会选择一个随机信道和未使用的16位PAN ID来启动。
持久数据
协调器启动网络后,它会保留以下信息(直到重启电源或重置):
- PAN ID
- 工作信道
- 安全策略和帧计数器值
- 子表(加入协调器的终端设备子节点)
- 绑定表(Binding table)
- 组表(Group table)
协调器将一直保留此信息,直到它离开网络。当协调器离开网络并启动新网络时,先前的PAN ID,操作信道,链接**表和子表数据将丢失。
协调器启动
下表提供了协调器用于启动网络的网络构造命令。
命令 | 描述 |
---|---|
ID | 用于确定64位PAN ID。如果设置为0(默认值),将选择随机的64位PAN ID。 |
SC | 确定协调器在启动网络时使用的扫描信道位掩码(最多16个信道)。协调器将对所有已启用的SC信道执行能量扫描。然后它将执行PAN ID扫描。 |
SD | 设置扫描持续时间,也即路由器将在每个信道上侦听信标的时间。 |
ZS | 设置网络的Zigbee堆栈配置文件。 |
EE | 是否启用网络中的安全性。 |
NK | 设置网络的网络安全**。如果设置为0(默认值),协调器将使用随机网络安全**。 |
KY | 设置网络的信任中心链接**。如果设置为0(默认值),则协调器使用随机链接**。 |
EO | 设置网络的安全策略。 |
配置最后一次更改后延迟五秒钟开始启动网络。
协调器启动网络后,网络配置设置和子表数据将一直不变直到重启电源。
当协调器成功启动网络时,它:
- 在一段时间(NJ,节点加入时间)内允许其他设备加入网络;
- 置AI = 0
- 开始闪烁Associate LED
- 使用API模式时,从串行端口发送API调制解调器状态帧(“协调器启动”)
可以使用以下命令配置这些行为:
命令 | 描述 |
---|---|
NJ | 设置协调器上的允许节点加入的时间,以秒为单位。 |
D5 | 启用Associate LED功能。 |
LT | 设置加入时的Associate LED闪烁时间。如果LT = 0,则默认值为每500毫秒闪烁1次(协调器)250毫秒(路由器/终端设备)。 |
如果网络构成命令表中的任何命令值发生更改,则协调器将离开其当前网络并启动新网络(可能在不同的信道上)。
注意
必须先应用命令更改(AC或CN命令)才能生效。
允许连接(Permit joining)
用户可以使用NJ(节点加入时间)在协调器上配置允许连接属性。
如果 NJ < 0xFF,则仅NJ秒内允许连接。一旦XBee / XBee-PRO Zigbee RF模块加入网络,定时器就会启动。协调器重启电源或重置不会重新启用允许连接。以下操作将重新启动允许连接计时器:
- 将NJ更改为其他值(并使用AC或CN命令应用更改)。
- 按两次调试按钮。
- 使用参数2发出CB命令。
如果NJ = 0x00,则上述最后两种操作将启用允许连接一分钟。否则,调试按钮和CB**2命令启用加入**NJ秒。
如果NJ = 0xFF,则永久启用允许连接。 注意
请谨慎使用此模式。部署网络后,我们强烈建议应用程序考虑禁用加入以防止发生不需要的连接。始终开放的网络在Zigbee 3.0规范之外运行。
重置协调器
当用户重置或重启电源协调器时,它会根据网络配置设置(ID,CH,ZS)检查其PAN ID,工作信道和堆栈配置文件。它还根据安全配置设置(EE,NK,KY)验证已保存的安全策略。如果协调器的PAN ID,工作信道,堆栈配置文件或安全策略无效,则协调器离开网络并尝试基于其网络启动命令值形成新网络。
要防止协调器离开现有网络,请在配置所有网络启动命令后发出WR命令,并保留这些设置直到重启电源或重置。
离开网络
以下机制使协调器离开当前PAN网络并基于其网络启动参数值启动新网络。
- 更改ID命令,使当前的64位PAN ID无效。
- 更改SC命令,使当前信道(CH)不包含在信道掩码中。
- 更改ZS或任何安全命令值。
- 发送**NR**0命令以使协调器离开。
- 发送**NR**1命令以发送广播传输,导致网络中的所有设备离开并迁移到其他信道。
- 按下调试按钮四次或发送参数为4的CB命令。这会将设备恢复为默认配置状态。
- 发送网络离开命令。
注意
对ID,CH,ZS和安全命令值的更改仅在应用更改(AC或CN命令)后生效。
替换协调器(仅限禁用安全性)
在极少数情况下,可能有必要用新的物理设备替换网络中的现有协调器。如果网络中未启用安全性,则可以使用正在运行的网络的PAN ID(16位和64位),信道和堆栈配置文件设置来配置替换XBee协调器,以替换现有协调器。
注意
避免在同一信道,堆栈配置文件和PAN ID(16位和64位)上有两个协调器,因为它可能会导致网络出现问题。更换协调器时,请在启动新协调器之前关闭旧协调器。
要替换协调器,请从网络上的设备中读取以下命令:
命令 | 描述 |
---|---|
OP | 读取运行的64位PAN ID。 |
OI | 读取运行的16位PAN ID。 |
CH | 读取工作信道。 |
ZS | 读堆栈配置文件。 |
可以从网络上的任何设备读取上面列出的每个命令。这些参数在网络中的所有设备上都是相同的。从网络上的设备读取命令后,使用以下命令将参数值编程到新的协调器中。
命令 | 描述 |
---|---|
ID | 设置64位PAN ID以匹配读取的OP值。 |
II | 设置初始16位PAN ID以匹配读取的OI值。 |
SC | 设置扫描信道位掩码以启用读取操作信道(CH命令)。例如,如果操作信道为0x0B,则将SC设置为0x00**01。如果操作信道为**0x17,则将SC设置为**0x10**00。 |
ZS | 设置堆栈配置文件以匹配读取的ZS值。 |
II是最初的16位PAN ID。在某些情况下,Zigbee堆栈可以更改网络的16位PAN ID。因此,用户无法使用WR命令保存II命令。一旦设置了II,协调器就离开网络并从II指定的16位PAN ID开始。
示例:启动协调器
- 将CE(Coordinator Enable)设置为1或在设备上加载协调器固件,并使用WR 命令保存更改。
- 将SC和ID设置为所需的扫描信道和PAN ID值。默认值就足够了。
- 如果从默认值更改SC或ID,请发出WR命令以保存更改。
- 如果从默认值更改SC或ID,也可通过发送AC命令或退出AT命令模式应用更改(使SC和ID更改生效)。
- 如果已连接Associate LED,则一旦协调器选择了信道和PAN ID,它就会开始闪烁。
- 使用API模式时,API调制解调器状态帧(Coordinator Started)将从串行端口发送出去。
- 读取AI命令(关联状态)返回值0,表示启动成功。
- 读取MY命令(16位地址)将返回值0,即Zigbee定义的协调器的16位地址。
启动后,协调器基于其NJ 值允许进行连接。
示例:替换协调器(禁用安全性)
- 在正在运行的协调器上读取OP,OI,CH和ZS命令。
- 在新协调器上设置CE,ID,SC和ZS参数以匹配现有协调器,然后使用WR命令保存这些参数值。
- 关闭正在运行的协调器。
- 在新协调器上设置II命令参数以匹配旧协调器上读取的OI值。
- 等待新协调器启动(AI = 0)。
Zigbee路由器操作
路由器必须先发现有效的并允许连接的Zigbee网络才能加入Zigbee网络。路由器加入网络后,可以允许新设备加入网络。它还可以路由数据包并与网络上的其他设备通信。
发现Zigbee网络
为了发现附近的Zigbee网络,路由器执行PAN(主动)扫描,就像协调器启动网络时一样。在PAN扫描期间,路由器在其扫描信道列表中的第一信道上发送信标请求(广播)传输。在该信道上运行的所有附近协调器和路由器(已经属于Zigbee网络的一部分)通过将信标发送回路由器来响应信标请求。
信标包含关于附近设备所在的PAN的信息,包括PAN标识符(PAN ID),以及是否允许连接。路由器评估在信道上接收的每个信标,以确定它是否找到有效的PAN。如果满足以下条件,则PAN有效:
- 具有有效的64位PAN ID(如果ID > 0,则PAN ID与ID匹配)
- 具有正确的堆栈配置文件(ZS命令)
- 允许连接网络
如果路由器找不到有效的PAN,它将在其扫描信道列表中的下一个信道上执行PAN扫描,并继续扫描,直到找到有效的网络,或者直到扫描完所有信道。如果路由器扫描完所有信道并且没有发现有效的PAN,它将再次扫描所有信道。
Zigbee联盟要求经过认证的解决方案不要过于频繁地发送信标请求消息。为了满足认证要求,XBee固件在前五分钟内每分钟扫描9次,之后每分钟扫描三次。如果有效PAN在加入路由器的范围内,它通常会在几秒钟内发现PAN。
加入网络
一旦路由器发现有效网络,它就会向发送有效信标的设备发送一个信标请求,请求在Zigbee网络上加入。允许连接的设备然后发送允许或拒绝连接的关联响应帧。
当路由器加入网络时,它从允许连接的设备接收16位地址。允许连接的设备随机选择16位地址。
认证
在启用了安全性的网络中,路由器必须遵循身份验证过程。有关安全性和身份验证的讨论,请参阅Zigbee安全性。
路由器加入(并在安全网络中进行身份验证)后,它可以允许新设备加入网络。
持久数据
路由器加入网络后,它会保留以下信息(直到重启电源或重置):
- PAN ID
- 工作信道
- 安全策略和帧计数器值
- 子表(加入路由器的终端设备子节点)
- 绑定表(Binding table)
- 组表(Group table)
路由器将一直保留此信息,直到它离开网络。当路由器离开网络时,先前的PAN ID,操作信道,链接**表和子表数据将丢失
Zigbee路由器加入
当路由器启动时,如果它尚未加入有效的Zigbee网络,它会立即尝试查找并加入有效的Zigbee网络。
将DJ(禁用加入)设置为1可禁用加入。用户无法使用WR命令编写DJ参数,因此需通过重启电源清除DJ设置。
以下控制路由器加入过程的命令。
命令 | 描述 |
---|---|
ID | 设置要加入的64位PAN ID。设置ID = 0允许路由器加入任何64位PAN ID。 |
SC | 设置扫描信道位掩码,确定路由器扫描哪些信道以查找有效网络。在路由器上设置SC以匹配协调器上的SC。例如,将SC设置为0x28**1可以按顺序扫描信道**0x0B,0x12和0x14。 |
SD | 设置扫描持续时间,也即路由器将在每个信道上侦听信标的时间。 |
ZS | 设置网络的Zigbee堆栈配置文件。 |
EE | 是否启用网络中的安全性。必须将其设置为与协调器的EE值(安全策略)匹配。 |
KY | 设置网络的信任中心链接**。如果设置为0(默认值),则在加入网络期间获取(未加密的)链接**。。 |
配置最后一次更改后延迟五秒钟开始连接网络。
一旦路由器加入网络,网络配置设置和子表数据将一直不变直到重启电源。如果连接失败,请在AI命令寄存器中读取上次连接尝试的状态。
如果上述任何命令值发生更改,则在应用命令寄存器更改(AC或CN 命令)时,路由器将离开其当前网络并尝试发现并加入新的有效网络。
当Zigbee路由器成功加入网络时,它:
- 在一段时间(NJ,节点加入时间)内允许其他设备加入网络;
- 置AI = 0
- 开始闪烁Associate LED
- 使用API模式时,从串行端口发送API调制解调器状态帧(associated)
可以使用以下命令配置这些行为:
命令 | 描述 |
---|---|
NJ | 设置路由器上的允许节点加入的时间,以秒为单位。 |
D5 | 启用Associate LED功能。 |
LT | 设置加入时的Associate LED闪烁时间。如果LT = 0,则默认值为每500毫秒闪烁1次(协调器)250毫秒(路由器/终端设备)。 |
允许连接
用户可以使用NJ(节点加入时间)在路由器上配置允许连接属性。用户可以将NJ配置为始终允许连接,或允许短时间加入。
如果 NJ < 0xFF,则仅NJ秒钟启用允许连接。一旦XBee / XBee-PRO Zigbee RF模块加入网络,定时器就会启动。如果设备重启电源或重置,路由器不会重新启用允许连接。以下操作将重新启动允许连接计时器:
- 将NJ更改为其他值(并使用AC或CN命令应用更改)。
- 按两次调试按钮。
- 使用参数2发出CB命令。
如果NJ = 0x0,则上述最后两种操作将启用允许连接一分钟。否则,调试按钮和CB**2命令启用加入**NJ秒。
如果NJ = 0xFF,则永久启用允许连接。 注意
请谨慎使用此模式。部署网络后,我们强烈建议应用程序考虑禁用加入以防止发生不需要的连接。始终开放的网络在Zigbee 3.0规范之外运行。
路由器网络连接
一旦路由器加入Zigbee网络,它将一直连接到同一信道上的网络并保持PAN ID,除非它被强制离开。如果在重启后扫描信道(SC),PAN ID(ID)和安全设置(EE,KY)没有改变,则在重新通电后路由器将继续连接到网络。
如果路由器在物理层面离开了其最初加入的网络的范围,请确保该应用程序包含检测路由器是否仍可与原始网络通信的规定。如果与原始网络的通信丢失,则应用程序可以选择强制路由器离开网络。XBee固件包括两个自动检测网络存在的规定,如果检查失败则离开。
开机连接验证(Power-on join verification)
JV命令启用开机连接验证(Power-on join verification)。如果启用,XBee / XBee-PRO Zigbee RF模块会在首次加入网络时尝试发现协调器的64位地址。一旦加入,它还会在重启电源后尝试发现协调器的64位地址。如果3次发现尝试失败,则路由器离开网络并尝试加入新网络。开机加入验证的默认设置为禁用(JV 默认为0)。
网络看门狗(Network watchdog)
路由器使用NW(网络监视器超时,Network WatCHdog Timeout)定期检查是否存在协调器以验证网络连接。NW命令规定一个超时(以分钟为单位),路由器需在规定的时间内从协调器或数据收集器接收通信。以下事件重新启动网络监视程序计时器:
- 从协调器收到RF数据
- RF数据发送到协调器的确认已收到
- 收到多对一路由请求(来自任何设备)
- 更改NW的值
如果监视程序计时器到期(NW时间内没有收到有效数据),路由器将尝试发现协调器的64位地址。如果路由器无法发现该地址,则会记录一个看门狗超时。在连续三次网络看门狗超时(3 * NW)并且协调器未响应地址发现尝试之后,路由器离开网络并尝试加入新网络。
只要路由器从协调器或数据收集器接收到有效数据,它就会清除看门狗超时计数器并重新启动看门狗定时器。用户可以将网络监视程序计时器(NW命令)设置为几天。网络看门狗功能的默认设置为禁用(NW默认为0)。
以下流程图说明了网络监视器行为:
离开网络
以下机制使协调器保留其当前PAN并基于其网络构造参数值启动新网络。
- 更改ID命令,使当前的64位PAN ID无效。
- 更改SC命令,使当前信道(CH)不包含在信道掩码中。
- 更改ZS或任何安全命令值。
- 发送**NR**0命令以使协调器离开。
- 发送**NR**1命令发送广播传输,导致网络中的所有设备离开并迁移到其他信道。
- 按下调试按钮四次或发送参数为4的CB命令。这会将设备恢复为默认配置状态。
- 发送网络离开命令。
注意
对ID,CH,ZS和安全命令值的更改仅在应用更改(AC或CN命令)时生效。
网络定位器选项
网络定位器选项支持在正在运行的网络中交换或替换协调器。如果启用了网络定位器选项(DO = 80),则会修改JV和NW选项的行为。如果没有与协调器通信,则设备开始在搜索信道掩码(SC)的信道上搜索网络,而不是离开网络。
如果设备在具有相同OI(操作ID)的旧信道上找到网络,则搜索模式结束并且如果启用则重新安排NW。如果设备找到具有新OI但满足设备搜索匹配ID和ZS的网络,则设备离开旧网络并使用新OI加入新网络。
重置路由器
重置或重新启动路由器时,它会根据网络配置设置(ID,CH,ZS)检查其PAN ID,工作信道和堆栈配置文件。它还根据安全配置命令(EE,KY)验证保存的安全策略是否有效。如果路由器的PAN ID,工作信道,堆栈配置文件或安全策略无效,则路由器将离开网络并尝试根据其网络加入命令值加入新网络。
要防止路由器离开现有网络,请在配置完所有网络加入命令后发出WR命令; 保留这些设置直到重启电源或重置。
示例:加入网络
启动允许连接的协调器后,以下步骤会导致路由器加入网络:
- 将ID设置为所需的64位PAN ID,或设置为0以加入任何PAN。
- 将SC设置为要扫描的信道列表以查找有效的网络。
- 设置安全设置以匹配协调器。
- 如果用户使用默认的SC或ID,则通过发出AC或CN命令来应用更改(即,使SC和ID更改生效)。
- 路由器加入PAN后,Associate LED开始闪烁。
- 如果Associate LED未闪烁,请阅读AI命令以确定连接失败的原因。
- 路由器加入后,OP和CH命令指示操作的64位PAN ID和路由器加入的信道。
- 在我的命令反映,当它加入接收到的路由器的16位地址。
- 使用API模式时,API调制解调器状态帧(“associated”)将从串行端口发送出去。
- 加入的路由器允许其他设备根据其NJ设置加入一段时间。
终端设备操作
与路由器类似,终端设备必须先发现并加入有效的Zigbee网络,然后才能加入网络。终端设备加入网络后,可以与网络中的其他设备通信。由于终端设备采用电池供电并支持低功耗(休眠)模式,因此无法允许其他设备加入或路由数据包。
发现Zigbee网络
终端设备通过与路由器相同的过程通过发出PAN扫描来发现网络。在发送广播信标请求传输之后,终端设备监听一小段时间以便接收由相邻信道上的附近路由器和协调器发送的信标。终端设备评估在信道上接收的每个信标以确定它是否找到有效的PAN。如果满足以下条件,则PAN有效:
- 具有有效的64位PAN ID(如果ID > 0,则PAN ID与ID匹配)
- 具有正确的堆栈配置文件(ZS命令)
- 允许连接网络
- 具有额外终端设备的容量
如果终端设备找不到有效的PAN,它将在其扫描信道列表中的下一个信道上执行PAN扫描并继续此过程,直到找到有效的网络,或者直到扫描完所有信道。如果终端设备扫描所有信道并且未发现有效的PAN,则它可能进入低功率睡眠状态并稍后再次扫描。
如果扫描所有SC信道无法发现有效的PAN,则XBee Zigbee设备会尝试进入低功耗状态,并在设备从休眠状态唤醒后重试扫描所有SC信道。如果设备无法进入低功耗状态,则会重试扫描所有信道,类似于路由器。为了满足Zigbee Alliance的要求,终端设备在前五分钟内每分钟最多尝试9次扫描,之后每分钟尝试三次扫描。
注意 XBee Zigbee终端设备在完成扫描 有效网络的所有SC信道之前不会进入休眠状态。
加入网络
一旦终端设备发现有效网络,它就会通过发送关联请求(给发送有效信标的设备),类似于路由器,以请求加入Zigbee网络。允许连接的设备然后发送允许或拒绝连接的关联响应帧。
当终端设备加入网络时,它从允许连接的设备接收16位地址。允许连接的设备随机选择16位地址。
父子关系
由于终端设备可能进入低功耗睡眠模式而不是立即响应,因此终端设备依赖于允许联接的设备代表它接收和缓冲传入消息,直到它能够唤醒并接收这些消息。允许终端设备加入的设备成为终端设备的父设备,终端设备成为允许连接的设备的子设备。
终端设备容量
每个路由器或协调器维护一个已加入的所有子设备的表,称为子表。此表是有限大小,用于确定可以加入的终端设备数量。如果路由器或协调器的子表中至少有一个未使用的条目,则该设备具有终端设备容量。换句话说,它可以允许一个或多个另外的终端设备加入。Zigbee网络有足够的路由器来确保足够的终端设备容量。
当配置为协调器或路由器时,此平台上的软件初始版本最多支持20个终端设备。
在Zigbee固件中,使用NC命令(剩余终端设备子节点数)确定可以加入路由器或协调器的其他终端设备的数量。如果NC返回0,则路由器或协调器设备不再具有终端设备容量。
注意
由于路由器无法休眠,因此路由器或协调器无需跟踪加入的路由器。可以加入给定路由器或协调器设备的路由器数量没有限制,也没有“路由器容量”度量标准。
认证
在启用安全性的网络中,终端设备必须经过身份验证过程。有关更多信息,请参阅Zigbee安全性。
持久数据
终端设备可以保留其PAN ID,操作信道和安全策略信息直到重启电源。但是,由于终端设备严重依赖父节点,终端设备会进行孤儿扫描以尝试联系其父节点。如果终端设备未收到孤儿扫描响应(协调器重新对齐命令),它将离开网络并尝试发现并加入新网络。当终端设备离开网络时,它会丢失先前的PAN ID和操作信道设置。
孤儿扫描
当终端设备重启电源后,它会执行孤儿扫描以验证它是否仍然具有有效的父级。设备将孤儿扫描作为广播传输发送,并包含终端设备的64位地址。接收广播的附近路由器和协调器设备检查其子表是否包含包含终端设备的64位地址的条目。如果设备找到具有匹配的64位地址的条目,则它们向终端设备发送协调器重新对齐命令,该命令包括终端设备的16位地址,16位PAN ID,操作信道和父级64-位和16位地址。
如果孤立终端设备收到协调器重新排列命令,它将加入网络。否则,它会尝试发现并加入有效的网络。
终端设备加入
当用户启动终端设备时,如果它未加入有效的Zigbee网络,或者孤儿扫描无法找到父设备,则设备会尝试查找并加入有效的Zigbee网络。
注意将DJ命令设置为1可禁用加入。用户无法使用WR编写DJ参数 ,因此需通过重启电源来清除DJ设置。
以下是控制终端设备加入过程的命令。
命令 | 描述 |
---|---|
ID | 设置要加入的64位PAN ID。设置ID = 0则允许路由器加入任何64位PAN ID。 |
SC | 设置扫描信道位掩码,确定终端设备将扫描哪些信道以查找有效网络。应将终端设备上的SC设置为与所需网络中的协调器上的SC和路由器匹配。例如,将SC设置为0x28**1可以按顺序扫描信道**0x0B,0x12和0x14。 |
SD | 设置扫描持续时间或终端设备将在每个信道上监听信标的时间。 |
ZS | 设备上设置堆栈配置文件。 |
EE | 启用或禁用网络中的安全性。必须将其设置为与协调器的EE值(安全策略)匹配。 |
KY | 设置信任中心链接**。如果设置为0(默认值),则在加入网络期间获取(未加密)链接**。 |
一旦终端设备加入网络,网络配置设置将保持持久数据直到重启电源。如果连接失败,请在AI命令寄存器中读取上次连接尝试的状态。
如果在应用命令寄存器更改时这些命令值中的任何一个发生更改,则终端设备将离开其当前网络并尝试发现并加入新的有效网络。
当Zigbee终端设备成功启动网络时,它:
- 将AI设置为0
- 如果一个已连接到设备的ASSC引脚(TH引脚15 / SMT引脚28),则开始闪烁Associate LED
- 使用API模式时,从串行端口发送API调制解调器状态帧(“associated”)
- 尝试进入SM 参数定义的睡眠模式
用户可以使用以下命令配置这些行为:
命令 | 描述 |
---|---|
D5 | 启用Associate LED功能。 |
LT | 设置加入时的Associate LED闪烁时间。默认值为每秒2次闪烁(终端设备)。 |
SM,SP,ST,SN,SO | 配置睡眠模式特征的参数。请参阅终端设备配置。 |
家长连接
当终端设备已经苏醒,它将定期发送轮询传输到它的父节点。这些轮询向父节点查询任何新接收的数据包。父节点总是将MAC层确认发送回终端设备。确认指示父节点是否具有终端设备的数据。
如果终端设备未收到三个连续轮询请求的确认,则认为自己与其父设备断开连接并尝试发现并加入有效的Zigbee网络。有关更多信息,请参阅管理终端设备。
重置终端设备
当终端设备重置或重新上电时,如果孤儿扫描成功找到父设备,则终端设备会根据网络配置设置(ID,CH,ZS)检查其PAN ID,工作信道和堆栈配置文件。它还根据安全配置命令(EE,EO,KY)验证保存的安全策略是否有效。如果终端设备的PAN ID,工作信道,堆栈配置文件或安全策略无效,则终端设备将离开网络并尝试基于其网络加入命令值加入新网络。
为防止终端设备离开现有网络,应在配置所有网络加入命令后发出WR命令,以保留这些设置直到重启电源或重置。
离开网络
以下机制使协调器保留其当前PAN并基于其网络构造参数值启动新网络。
- 更改ID命令,使当前的64位PAN ID无效。
- 更改SC命令,使当前信道(CH)不包含在信道掩码中。
- 更改ZS或任何安全命令值(不包括NK)。
- 发送**NR**0命令以使协调器离开。
- 发送**NR**1命令发送广播传输,导致网络中的所有设备离开并迁移到其他信道。
- 按下调试按钮四次或发出参数为4 的CB命令。
- 终端设备父节点的父节点关闭或终端设备移出父节点的范围,使得终端设备无法接收轮询确认消息。
注意
对命令值的更改仅在应用更改(AC或CN命令)时生效。
示例:加入网络
启动允许连接的协调器后,以下步骤会导致路由器加入网络:
* 将ID设置为所需的64位PAN ID,或设置为0以加入任何PAN。
* 将SC设置为要扫描的信道列表以查找有效的网络。
* 如果用户使用默认的SC或ID,则通过发出AC或CN命令来应用更改(即,使SC和ID更改生效)。
* 路由器加入PAN后,Associate LED开始闪烁。
* 如果Associate LED未闪烁,请阅读AI命令以确定连接失败的原因。
* 路由器加入后,OP和CH命令指示操作的64位PAN ID和终端设备加入的信道。
* 当它加入网络,MY命令反映接收到的路由器的16位地址。
* 使用API模式时,API调制解调器状态帧(“Associated”)将从串行端口发送出去。
* 加入的终端设备基于其睡眠配置命令(SM,SP,SN,ST,SO)尝试进入低功率睡眠模式。
Zigbee信道扫描
路由器和终端设备必须扫描一个或多个信道才能发现要加入的有效网络。当连接尝试开始时,设备在SC(扫描信道)位掩码中指定的最低信道上发送信标请求传输。如果设备在信道上找到有效的PAN,它会尝试在该信道上加入PAN。否则,如果设备在信道上找不到有效的PAN,它会尝试扫描SC位掩码中的下一个更高信道。
设备继续扫描SC位掩码中的每个信道(从最低到最高),直到找到有效的PAN或扫描了所有信道。一旦设备扫描所有信道,下一次连接尝试将开始扫描SC位掩码中指定的最低信道。
例如,如果SC命令设置为0x400F,则设备开始在信道11(0x0B)上扫描并扫描,直到找到有效信标,或直到扫描扫描信道11,12,13,14和25(以该顺序)。
一旦XBee路由器或终端设备加入给定信道上的网络,如果XBee设备收到网络离开命令(请参阅离开网络),它将离开其加入的信道并继续扫描SC位掩码中的下一个更高信道。
例如,如果SC命令设置为0x400F并且设备加入信道12(0x0C)上的PAN ,如果XBee / XBee-PRO Zigbee RF模块离开信道,它将在信道13上开始扫描,然后是信道14和25如果找不到有效的网络。扫描完所有信道后,下一次连接尝试将开始扫描SC位掩码中指定的最低信道。
管理多个Zigbee网络
在一些应用中,多个Zigbee网络可能离得很近。应用程序可能需要配置以确保设备加入所需的网络。Zigbee有许多功能可以管理多个网络之间的连接。其中包括:
- PAN ID过滤
- 预配置的安全**
- 允许连接
- 应用消息
过滤PAN ID
将ID(扩展PAN ID)设置为非零值,以使用固定PAN ID 配置XBee / XBee-PRO Zigbee RF模块。
如果将PAN ID设置为非零值,则设备将仅加入具有相同PAN ID的网络。
配置安全**
与PAN ID过滤类似,此方法要求用户在路由器上安装已知的安全**,以确保它使用相同的安全**加入Zigbee网络。
- 使用EE(加密启用)启用安全性。
- 使用KY(链接**)将预配置的链接**设置为非零值。
现在,XBee路由器或终端设备只会加入具有相同安全**的网络。
防止不需要的设备加入
用户可以在网络中禁用permit-joining参数,以防止不需要的设备加入。当用户需要将新设备添加到网络时,请在所需网络上启用许可加入一小段时间。
在XBee固件中:
- 设置所有路由器和协调设备上的NJ(节点加入时间)为小于0xFF的值,以限制连接(推荐)。
- 使用调试按钮或CB命令允许短时间加入; 有关详细信息,请参阅网络调试和诊断。
应用程序消息框架
如果以前的机制都不可行,用户可以在应用程序中构建协调器和连接到其网络的设备之间的消息传递框架。例如,加入设备中的应用程序代码可以在加入网络之后向协调器发送传输,并等待接收定义的回复消息。如果应用程序在加入后没有收到预期的响应消息,则可能会强制设备离开并继续扫描; 请参阅NR(网络重置)。