1.1 协议层次结构
本节课会讲解多个ZigBee网络概念,如果读者感到晦涩难度,没有关系!随着后续学习,相信读者会逐渐理解ZigBee协议!
协议层次结构
ZigBee协议的层次结构如图所示。
IEEE 802.14.4 PHY layer:物理层,其工作内容由IEEE 802.15.4定义,主要作用是将一个设备的数据转换为电磁波信号之后发送到另一个设备,再由另一个设备解读电磁波信号获取数据。
IEEE 802.14.4 MAC layer:MAC层,其工作内容由IEEE 802.15.4定义,其主要作用是控制多个网络设备有序地利用物理通信资源电磁波来通信。
Network (NWK)layer:网络层,负责多个设备之间的组网、数据传输以及网络安全管理等。
Application layer:应用层,可以划分为以下两个层次:
(1)Application Support(APS)Sub-Layer:应用支持子层,是网络层到应用框架层的过渡,提供数据的收发、安全加密,以及设备地址管理等功能。
(2)Application Framework:应用框架层,由一个或者多个应用端点(EndPoint)组成。应用端点是不同设备间通信的出入口,同时也是描述设备具备哪些功能的基础。
例如,ZigBee智能灯中有一个端点1,用来描述灯的开关和亮度,如图所示。
例如,ZigBee智能插座中有一个端点1,用来描述插座的开关功能,如图所示。
ZigBee设备进行网络通信时,最终是应用端点间的通信。例如,ZigBee协调器的端点1向智能插座的端点1发送了打开插座命令。
如果读者了解过远程服务器的端口号,那么会发现这里所说的端点和远程服务器的端口号的含义其实是类似的。例如网址http://baidu.com:80中的80就是端口号,表示HTTP服务。在浏览器中输入http://baidu.com:80,表示浏览器将会和baidu.com网址中的HTTP服务通信。
端点采用无符号8位整型类型进行表示,取值范围是0255,每个ZigBee设备最多支持240个应用端点(1240),其中的端点0为特殊端点,端点255用于向其他端点的广播,端点241~254是保留端点。
ZigBee Cluster Library(ZCL):ZigBee集群库,由ZigBee联盟定义,是ZigBee 3.0的基础,也是不同厂商设备能够互联互通的基础。
ZigBee Device Objects(ZDO):ZigBee设备对象,也就是应用端点0,它是应用层其他端点与应用子层管理实体交互的中间件,主要提供的功能如下:
(1)管理ZigBee设备。
(2)创建、扫描及加入网络。
(3)应用端点绑定、解绑。
(4)安全管理。
Base Device Behavior(BDB):ZigBee基础设备行为,定义设备的行为规范,以确保不同厂商设备间的互操作性,基础设备行为规范的范围定义如下:
(1)基础设备所需的环境。
(2)基础设备的初始化(initialization)过程。
(3)基础设备的 Commissioning 过程。
(4)基础设备的重置(reset)过程。
(5)基础设备的安全(security)过程。
1.2 IEEE 802.15.4协议
要讨论 ZigBee 技术,自然绕不开 IEEE 802.15.4协议,因为ZigBee的物理层和MAC层就是 IEEE 802.15.4 协议
IEEE 是一个组织,叫作“电气和电子工程师协会”, 802.15 是这个协会里面的一个部门,部门里的第 4 工作组开发了一个协议,就叫 IEEE 802.15.4协议。这个协议是专门为低速无线个人区域网络(Low-rate wireless personal area network,WPAN)而设计的,具有超低复杂度、超低功耗、低数据传输率的特点。
物理层
IEEE 802.15.4的物理层作为Zigbee协议结构的最低层,提供了最基础的服务。通常地,作为ZigBee技术的应用开发者,只需通俗地理解物理层的主要作用是将一个设备的数据转换为电磁波信号之后发送到另一个设备,再由另一个设备解读电磁波信号获取数据。
IEEE 802.15.4提供了基于2.4GHz、868MHz以及915MHz电磁波频带的3两种物理层协议。这3者之间存在一些差异:
地域差异
在世界各地均能使用2.4GHz,但是868MHz和915MHz只能分别在欧洲和美国中使用。因此,在中国,ZigBee协议是基于2.4GHz的。通信速率差异
2.4GHz物理层支持240kb/s的数据率,而868MHz和915MHz物理层的数据率分别是20kb/s和40kb/s。信道数量的差异
868MHz频段定义了一个信道,915MHz频段定义了10个信道,2.4GHz频段定义了16个信道。
2.4GHz频段的信道定义在ZStack 3.0的工程文件Tools/f8wConfig.cfg中,该工程文件所在位置如图所示。
配置文件f8wConfig.cfg中默认开启的是2.4G频段的11信道,关于信道的定义如下:
/* Default channel is Channel 11 - 0x0B */
// Channels are defined in the following:
// 0 : 868 MHz 0x00000001
// 1 - 10 : 915 MHz 0x000007FE
// 11 - 26 : 2.4 GHz 0x07FFF800
//
//-DMAX_CHANNELS_868MHZ 0x00000001
//-DMAX_CHANNELS_915MHZ 0x000007FE
//-DMAX_CHANNELS_24GHZ 0x07FFF800
//-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A
//-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
//-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
//-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17
//-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
//-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
//-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
//-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
//-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
//-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
//-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
//-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
//-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
//-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
//-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B
在不同的信道中创建的ZigBee网络互不干扰,但在相同的信道下,也可以组建多个独立的ZigBee网络,那么如何区分在相同的信道下构建间的多个ZigBee网络?
答案是每个ZigBee网络都会被分配一个唯一的ID号,称为“PanID”,可以利用PanID来区分相同信道中的不同ZigBee网络。
MAC层
如果有多个网络设备都要发送数据,那么需要怎么控制它们有序地来发送数据呢?
为了解决这个问题,媒体接入控制层(MAC,Media Access Control)应运而生。
媒体接入控制层,是建立在物理层之上,它不关心数据是怎么转换成电磁波信号、电磁波的频率是多少等,它只关心自己负责那部分,也就是:
- 第1,将设备划分为协调器和普通设备;
- 第2,协调器产生并发送信标帧,普通设备根据协调器的信标帧与协调器同步;
- 第3,个域网的关联和取消关联;
- 第4,确保无线信道的通信安全;
- 第5,支持带有冲突避免的载波侦听多路访问(CSMA/CA);
- 第6,提供时槽保障(GTS,Guaranteed Time Slot)服务;
- 第7,提供不同设备之间的MAC层的可靠传输服务。
同样地,我们暂时只需通俗地理解MAC层的主要作用是控制多个网络设备有序地进行可靠通信。
MAC地址
ZigBee 网络的中的每一个设备都会有一个固定的MAC地址,也称为物理地址或者IEEE地址,用于标识MAC层设备的地址。MAC这是一个64位的二进制地址,通常由芯片厂商在芯片生产过程固化到芯片中的。
1.3 网络层
ZigBee网络层基于IEEE 802.15.4协议之上,是ZigBee协议的核心部分,所以人们也通俗地称为“核心协议”,它主要负责以下3方面的工作:
- 多设备组网
- 数据传输
- 网络安全管理
多设备组网详解
网络拓扑结构
第1方面,负责多个设备之间的组网,即星状网络、树状网络和网状网络的构建与维护。
ZigBee设备角色
处于网络中的设备我们们可以通俗地称为“网络节点”。ZigBee 网络节点有以下3种类型:
- 协调器(Coordinator):充当ZigBee网络的网关(中心节点)角色,通常负责ZigBee协议与NB-IoT、WiFi等其他协议的转换、在特定的信道组建网络等,同时具备路由器的功能。
- 路由器(Router):又称为中继器,负责数据路由。所有的终端设备都需要通过协调器或者路由器加入到网络中。
- 终端设备(End Device):又称为叶子节点,必须通过协调器或者路由器才能加入到ZigBee网络中。例如在智能家居场景中,终端设备通常就是是温湿度传感器、无线开关按钮或者各种生活电器等等。
组网特性
ZigBee组网有3个主要特性。第1,支持构建和维护超过10,000个网络节点的网状网络,远远超过蓝牙的8个和WiFi的32个。它的好处在于:
- 一方面可以让更多设备加入到自动化控制和远程控制中,设备数量上的局限不复存在;
- 另一方面,在网状网络中,两个网络节点之间有1条或以上的通信链路,可以提供多通道通信服务。在复杂的工业场景下,往往不能保证每条无线网络通信链路始终畅通,多通道通信能够使得当某条链路堵塞后使用其他链路来通信,确保了通信的稳定性。
第2,支持动态路由,即根据各个网络节点的实时状态来动态计算网络中任意两个节点之间的最优通信路径。举个例子,例如在网状网络的场景下,任意两个节点之间可能有多条通信路径,通过计算各个路径的实时质量从而动态选择最优的通信路径。
第3,支持自组网,即在网络节点被拆散开,因为超出通信范围而无法通信之后,当他们再次回到通信范围内相聚的时候,彼此之间能够自动重新构建网络来实现数据通信。
数据传输详解
数据传输是指设备之间的控制指令和设备的状态信息等数据的传输。举个例子,以空调为例,这里所说的控制指令是指空调的开关、制冷温度设定、工作模式设定等指令;状态信息是指空调在某个时刻的状态,例如设定的温度是多少、室内温度是多少、工作模式是什么等。
安全管理
网络地址
处于网络中的ZigBee设备都会被分配一个用于标识的网络地址,通过这个网络地址可以找到对应的设备。ZigBee网络地址是一个16位的地址(0x0000 - 0xFFFF)。在ZStack 3.0中,有几个特殊网络地址需要了解一下:
(1)协调器的网络地址为固定的0x0000。
(2)0xFFFF - 这是一个对整个ZigBee进行广播的广播地址。
(3)0xFFFD - 只对打开接收的设备进行广播的地址。
(4)0xFFFC - 只对协调器和路由设备广播的地址。
(5)0xFFFE - 用作无效地址。
(6)0xFFF8 ~0xFFFB - 保留地址。
(7)0x0001~0xFFF7被分配到ZigBee网络中的设备,作为网络地址使用。