zigbee提升最大节点数的一点点研究

  zigbee网络中有一种地址叫做网络短地址,共有16位,最大值是0xFFFF,也就是65536,这个值就规定了理论上一个zigbee网络中最多能有设备65536个。
  当然,实际上很难做到有这么多的节点。主要是因为zigbee节点的运算能力有限,加上CSMA/CA的避让(某节点检测空气中有数据的话就先不“说话”了),所以很难达到好几万个节点的网络。不过,还是有一些方法,可以增加网络中节点的总数。(笔者也没做过大规模的zigbee项目,加之不擅长写理论,以下通过ZSTACK2.5.1的协议栈来说明,观点仅供参考)
1合理利用多信道
  信道是与频率相关的,不同的信道之间不会有避免冲突的载波检测,所以节点数量较多时,可以分到不同的信道,可以减少网络阻塞的可能性。另外,选择信道操作的是一种独热码,也就是说在选择信道的可以通过“与”操作,选择多信道,根据实际情况决定使用哪个信道,也方便用户实现不同信道的代码共用。
2使用功能更强大的协调器
  以TI方案为例,CC2530是51单片机,CC2538是cortex M3内核的单片机,处理速度要快于CC2530,而且协调器的工作速度常常是一个zigbee网络中的性能瓶颈(总是有太多数据需要协调器处理),因此可以考虑使用CC2538或者性能更强的芯片作为协调器。
3使用全路由节点网络
  zigbee的协调器在组建网络之后,其功能与普通的路由器就一样了。而路由节点拥有介绍子节点入网,进行消息的路由等功能,可以组成树状的网络拓扑,子节点的数量当然多于星型网络,所以可以使用全路由节点的网络,另外,普通的终端节点由于定期休眠,唤醒时会产生较多的data request,容易造成网络阻塞。
4合理使用collect节点
  使用ZigBee时,多数的情况还是进行数据的收集,传输以及简单的控制,所以一般会使用一个网关,例如ARM板来处理ZigBee网络的数据。网关是两种协议转换的装置,比如把ZigBee数据通过串口转为TCP/IP 数据,那么就需要ZigBee的采集节点。看似这么做跟增加节点的数量没什么关系,但是这种方法可以减小协调器的负担,也有助于增加可使用的节点的数量,毕竟成功入网也不代表能稳定工作。把一个路由节点作为采集节点collect,收集传感器的数据时,这里可能遇到的一个问题是,协调器的网络短地址总是0x0000,所有的节点都可以一句这个地址来给协调器发送数据,但是却不一定知道collect的地址。可以把collect的地址广播,也可以使用绑定的机制。
5合理进行ZSTACK的设置
  ZSTACK中有一些配置,可以直接设置一些网络特性,如MAX_DEPTH决定了网络的最大深度。协调器(Coordinator)位于深度0,MAX_DEPTH参数限制了网络在物理上的长度,这个值默认是5,最大不能超过15。 MAX_CHILDREN决定了一个路由(Router)或者一个协调器节点可以处理的儿子节点的最大个数,默认20。 MAX_ROUTER 决定了一个路由(Router)或者一个协调器(Coordinator)节点可以处理的具有路由功能的儿子节点的最大个数。这个参数是 MAX_CHILDREN的一个子集,终端节点使用(MAX_CHILDREN – MAX_ROUTER)剩下的地址空间。有很多资料讲这些设置,不再搬运。
  笔者也做了一个简单的最大节点测试,CC2530,ZSTACK2.5.1,全路由的网络,1个协调器+28个路由器,默认配置。每个路由器入网之后会发送一个特定的消息给协调器,用于统计入网节点数。结果28个节点全部成功加入网络。即便是同时上电,也能在20秒之内都加入网络。进行抓包分析,空气中的数据算不上“拥挤”,目测再多几个节点问题也不大,只是我手头没有这么多的节点了。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值