2. Zigbee技术基础与协议栈架构

Zigbee 并不是单一协议,而是一套建立在 IEEE 802.15.4 之上的分层通信规范。理解它的关键,是把“底层无线怎么发”和“上层设备怎么组网、怎么互操作”分开看:IEEE 802.15.4 负责物理层(PHY)与媒体访问控制层(MAC),Zigbee 联盟则在其上定义网络层(NWK)与应用层(APL),并进一步用 Zigbee PRO 与 Zigbee 3.0 规定网络行为与设备互操作规则。下面按协议栈自下而上展开。

IEEE 802.15.4:物理层与MAC层

物理层决定频段、调制、速率与信道。Zigbee 常用 2.4 GHz 频段,共 16 个信道(信道 11~26),信道间隔 5 MHz,采用 O-QPSK 调制,空中速率 250 kbps;此外还有 868 MHz(欧洲,1 个信道,20 kbps)和 915 MHz(北美,10 个信道,40 kbps)等子频段。物理层还负责能量检测、链路质量指示(LQI)和空闲信道评估(CCA),这些是 MAC 层判断“信道是否可发”的基础。

MAC 层管理帧的收发与介质访问。它支持两种基本帧:数据帧与命令帧,并采用 CSMA/CA 机制——发送前先做 CCA,若信道忙则随机退避后重试,从而降低碰撞。MAC 帧包含帧控制字段、序列号、地址字段(短地址 16 位或扩展地址 64 位)和 FCS 校验。需要特别区分两个地址概念:64 位扩展地址是全球唯一、出厂固化的 IEEE 地址;16 位短地址由网络协调器在入网时分配,仅在本网络内有效。MAC 层还提供确认(ACK)与重传,保证单跳链路的可靠性。

记忆要点:PHY 管“能不能发、发多快”,MAC 管“什么时候发、发给谁、发成功没有”。Zigbee 的组网、路由、应用语义都不在 802.15.4 里。

Zigbee网络层:组网、地址与路由

网络层在 MAC 之上完成三件事:建立/加入网络、分配地址、转发数据。网络由协调器(Coordinator)发起,它选择一个信道和 PAN ID 建立网络;路由器(Router)可加入并转发报文,扩展覆盖;终端设备(End Device)通常为低功耗节点,可周期性休眠,其报文由父节点缓存转发。

地址分配常用分布式方案:协调器设定网络深度 Lm、每个路由器最大子节点数 Cm、最大路由器子节点数 Rm,据此计算每个深度可分配的地址块大小 Cskip。例如取 Lm=3, Cm=4, Rm=2,则 Cskip(0)=1+4+4×2+4×2²=21,协调器可给第一个路由器分配地址 1,其子网地址块为 1+21=22 起。这类参数决定了网络能容纳多少节点,是实际组网时必须先算清的。

路由方式主要有两种:Mesh 路由(AODV 按需发现路径,适合多跳自愈)和树路由(按地址层级沿父子链路转发,简单但路径不最优)。网络层还负责路由维护、邻居表与路由表管理。当某条链路中断,Mesh 网络可重新发现路径,这是 Zigbee 自愈能力的来源。

应用层:从端点、簇到应用轮廓

应用层由 APS、ZDO 和应用对象组成。APS(应用支持子层)提供端点(Endpoint,1~240)寻址、绑定表与组播;ZDO(Zigbee 设备对象)负责设备发现、服务发现、绑定管理与网络管理;应用对象则实现具体功能。应用层用“簇(Cluster)”描述功能单元,例如 On/Off 簇(0x0006)、Level Control 簇(0x0008)、Temperature Measurement 簇(0x0402)。每个簇有簇 ID、属性(Attribute)和命令(Command),属性带数据类型与读写权限。

设备间通信通过“端点 + 簇 ID + 属性/命令”定位。例如一个开关的端点 1 向灯的端点 1 发送 On/Off 簇的 Toggle 命令,灯收到后改变属性 OnOff 并回报。绑定(Binding)把“源端点/簇”与“目标端点/簇”预先关联,之后无需每次指定目标地址即可发送,这是场景与自动化控制的基础。

Zigbee PRO 与 Zigbee 3.0 的区别与联系

Zigbee PRO 是 2007 年推出的网络层特性集,强调大规模 Mesh、多跳路由、随机地址分配、组播与源路由、以及网络管理。它解决了早期 Zigbee 网络规模小、路由弱的问题,但不同厂商的应用轮廓(Profile)仍可能互不兼容。

Zigbee 3.0 则是在 Zigbee PRO 网络层之上统一了应用层:它采用统一的 Base Device Behavior(BDB)入网流程、统一的设备类型与簇定义,并支持“绿色电源(Green Power)”等特性。简单说,Zigbee 3.0 = Zigbee PRO 网络能力 + 统一应用层规范。因此 Zigbee 3.0 设备可以跨厂商互操作,而仅符合旧版 Profile 的设备可能无法直接加入。实际开发中,若芯片支持 Zigbee 3.0,应优先按 BDB 流程实现入网与绑定,以获得更好的兼容性。

Zigbee 协议栈分层与 Zigbee PRO / Zigbee 3.0 关系 应用层 APL APS 端点/绑定/组播 · ZDO · 应用对象(簇/属性/命令) 网络层 NWK 建网/入网 · 16位短地址 · Mesh/树路由 · 路由维护 MAC 层 CSMA/CA · ACK/重传 · 短/扩展地址 · FCS 物理层 PHY 2.4GHz 16信道 · O-QPSK 250kbps · CCA/LQI IEEE 802.15.4 提供 PHY + MAC;Zigbee 联盟定义 NWK + APL Zigbee PRO(网络能力集) • 大规模 Mesh、多跳路由 • 随机地址分配、组播、源路由 • 网络管理、自愈能力 Zigbee 3.0(统一应用层) • 统一 BDB 入网流程 • 统一设备类型与簇定义 • 跨厂商互操作、Green Power 构建于其上 Zigbee 3.0 = Zigbee PRO 网络能力 + 统一应用层 旧版 Profile 设备可能无法直接加入 3.0 网络

实际组网中的参数与判断

以一个教学示例说明:协调器设置 PAN ID=0x1A2B、信道 15、网络深度 Lm=3、Cm=4、Rm=2。第一个路由器入网后获得短地址 0x0001,其子网地址块从 0x0016(即 22)开始;第二个路由器获得 0x002B(即 43)。终端设备加入后由父节点分配地址,若父节点是协调器,则地址落在协调器地址块内。判断入网是否成功,可观察:设备是否收到 MAC 层 ACK、是否获得 16 位短地址、ZDO 是否返回 Device_annce 通知。若长时间停留在“正在加入”,应检查信道是否被占用、PAN ID 是否冲突、父节点是否允许入网(Permit Join 是否打开)。

常见误区:把 64 位扩展地址当作通信地址使用。实际数据发送通常用 16 位短地址 + 端点 + 簇 ID,扩展地址主要用于设备识别与绑定建立。

综上,IEEE 802.15.4 提供可靠的底层无线链路,Zigbee 网络层解决多跳组网与地址路由,应用层用端点、簇、属性、命令描述功能,Zigbee PRO 强化网络能力,Zigbee 3.0 在此基础上统一应用层以实现跨厂商互操作。开发时先确认芯片支持的协议版本与入网流程,再按“物理信道→网络参数→端点与簇→绑定与命令”的顺序逐层配置,才能让设备真正稳定地协同工作。