This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

为什么NLME_JoinRequest()的PANID范围是0x0000~0x3FFF?

Genius 3030 points

为什么NLME_JoinRequest()的PANID范围是0x0000~0x3FFF,而 NLME_NetworkFormationRequest()的PANID范围是0x0000~0xFFFF?

  • 协议栈里就是这么约定的,还真没细究过。是使用上有什么问题吗?
  • 使用上不是这个范围也是可以加网的,会给初学者造成误导。
  • 确实是,之前有发现但没有特别重视。这个我记录一下,感谢反馈
  • ZigBee协议使用一个16位的个域网标志符(PAN ID)来标识一个网络。ZStack允许用两种方式配置PAN ID,当ZDAPP_CONFIG_PAN_ID值不设置为0xFFFF时,那么设备建立或加入网络的PAN ID由ZDAPP_CONFIG_PAN_ID指定;如果设置ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备就将建立或加入一个“最优”的网络。
    是针对一个或多个应用的网络,用于区分不同的ZigBee网络,一般是mesh或者cluster tree两种拓扑结构之一。所有节点的PAN ID唯一,一个网络只有一个PAN ID,它是由PAN协调器生成的,PAN ID是可选配置项,用来控制 ZigBee路由器和终端节点要加入那个网络。文件f8wConfg.cfg中的 ZDO_CONFIG_PAN_ID 参数可以设置为一个 0~0x3FFF 之间的一个值。协调器使用这个值,作为它要启动的网络的 PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。 要更进一步控制加入过程,需要修改 ZDApp.c 文件中的ZDO_NetworkDiscoveryConfirmCB 函数。当然了,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PAN ID(0~0x3FFF)。
  • 一般按照协议协调器只有60000个PANID可以设置。因为网络太庞大了就容易出问题了。