
1.ZigBee简介
ZigBee是一种基于IEEE802.15.4标准的低功耗局域网协议。按照国际标准,ZigBee技术是一种短距离、低功耗的无线通信技术。
ZigBee协议自下而上由物理层(PHY)、媒体访问控制层(MAC)、传输层(TL)、网络层(NWK)和应用层(APL)组成。物理层(PHY)和媒体访问控制层(MAC)符合IEEE802.15.4标准的规定。
2.ZigBee设备类型
ZigBee网络包括:
协调员(ZC)
路由器(ZR)
终端设备
2.1协调员
ZigBee网络中协调器的主要功能是建立和维护网络。存储网络信息。它是整个网络的认证中心。
2.2路由器
ZigBee网络中路由器的主要功能是网络的扩展功能。障碍物周围的动态路由为远程节点和中心节点提供信息通道。
2.3终端设备
ZigBee网络中的终端设备是只具有接收信息和发送信息的简单功能的ZigBee设备。它只能在ZigBee网络的末端,只能与其父节点通信,可以支持低功耗功能,没有路由能力和网络维护能力。
3.ZigBee网络结构
ZigBee网络可以分为星形网络、树形网络和网状网络。
(特别说明:星型和树型网络适用于点多、距离相对较近的应用。)
3.1星形网络
ZigBee星形网络拓扑如下图所示。星型拓扑是最简单的拓扑形式,它包括一个协调器节点和一系列终端设备节点。每个终端设备节点只能与协调器节点通信。如果两个终端设备节点之间需要通信,则必须通过协调器节点转发信息。
这种拓扑的缺点是节点之间只有一条数据路由路径。协调器可能成为整个网络的瓶颈。zigbee的网络层协议不需要实现星型网络拓扑,因为IEEE 802.15.4的协议层已经实现了星型拓扑,但这需要开发者在应用层做更多的工作,包括自己处理信息转发。
ZigBee星形网络拓扑
3.2树形网络
ZigBee树状网络拓扑如下图所示。树形拓扑包括一个协调器和一系列路由器和终端设备节点。协调器连接一系列路由器和终端设备,他的子节点的路由器也可以连接一系列路由器和终端设备。这样可以重复多个层次。
请注意:
协调器和路由器节点可以包含它们自己的子节点。
终端设备不能有自己的子节点。
具有相同父节点的节点称为兄弟节点。
具有相同祖父节点的节点称为堂兄节点。
每个节点只能与其父节点和子节点通信。
如果数据需要从一个节点发送到另一个节点,信息将沿着树路径向上传递到最近的祖先节点,然后向下传递到目标节点。
这种拓扑结构的缺点是只有一条信息路径。另外,信息的路由由协议栈层处理,整个路由过程对应用层完全透明。
ZigBee树形网络拓扑
3.3网状网络
ZigBee网状网络拓扑如下图所示。网状拓扑由一个协调器、一系列路由器和终端设备组成。这个网络拓扑与树拓扑相同;请参考上面提到的树形网络拓扑。而网状网络拓扑具有更灵活的信息路由规则,路由节点在可能的情况下可以直接通信。这种路由机制使得信息的交流更加高效,它意味着一旦一条路由路径出现问题,信息可以自动沿着其他路由路径传输。
通常网络层会提供相应的路由探索功能来支持网状网络的实现,使得网络层能够找到信息传输的最优路径。需要注意的是,上面提到的所有特性都是由网络层实现的,应用层不需要任何参与。
网状网络拓扑的网络功能强大,网络可以“多跳”通信;拓扑也可以形成极其复杂的网络;网络还具有自组织、自愈的功能;
ZigBee网状网络拓扑
4.ZigBee地址分配机制
在ZigBee 2007协议中,网络地址分配机制是一种树形网络分配机制,主要实现如下:
假设子设备的最大数量为nwkMaxChildren(Cm),网络的最大深度为nwkMaxDepth(Lm),父节点作为其子设备使用的路由设备的最大数量为nwkMaxRouters(Rm),自身网络的深度为(d),则可以计算出函数Cskip(d)m,即在给定的网络深度和路由子设备的数量下,祝福设备可以分配的子段地址的数量。
如果一个设备Cskip(d)的值为0,则没有路由能力,该设备为终端设备;
如果设备Cskip(d)的值大于0,则它具有路由功能,并且该设备是路由器设备。
网络中分配的地址是(n是当前分配的节点数)
终端:An=Ak 1 Cskip(d)*(n-1)
路由器:An=Ak Cskip(d)* Rm *(n-1);
下一个路由器设备的分配地址是先前分配的路由器地址加上Cskip偏移量。
CurNodeInfo。NextRouterAddr=CurNodeInfo。Cskip
要分配的下一个终端设备地址是先前已知的分配地址1。
CurNodeInfo。NextEndDevAddr
5.ZigBee树路由机制
假设一个路由器要向目的地址d发送一个数据包,这个路由器的网络地址的网络深度为a和d,它会先判断目的地址设备是否是它的子设备,需要满足以下要求:
Cskip(d-1)
如果目标设备是其子设备,则下一跳地址是
否则,路由器会将数据包发送到其父节点。










