ZigBee协议使用一个14位的个域网标志符(PAN ID)来标识一个网络。ZStack允许用两种方式配置PAN ID,当ZDAPP_CONFIG_PAN_ID值不设置为0xFFFF时,那么设备建立或加入网络的PAN ID由ZDAPP_CONFIG_PAN_ID指定;如果设置ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备就将建立或加入一个“最优”的网络。因此您的PAN ID重启后就会发生改变,不知是不是这样的?
PANID的出现一般是伴随在,确定信道以后的。PANID其全称是Personal Area Network ID,网络的ID(即网络标识符),是针对一个或多个应用的网络,用于区分不同的ZigBee网络,一般是mesh或者cluster tree两种拓扑结构之一。所有节点的panID唯一,一个网络只有一个PANID,它是由pan协调器生成的,PANID是可选配置项,用来控制 ZigBee路由器和终端节点要加入那个网络。文件f8wConfg.cfg中的 ZDO_CONFIG_PAN_ID 参数可以设置为一个 0~0x3FFF 之间的一个值。协调器使用这个值,作为它要启动的网络的 PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。 要更进一步控制加入过程,需要修改 ZDApp.c 文件中的ZDO_NetworkDiscoveryConfirmCB 函数。当然了,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF)。
关于PAN_ID的文章:http://www.feibit.com/thread-3627-1-1.html
目前也在考虑使用特定panid的方式。但总觉得不大好。另外协议栈中的加密功能,网络上有个说法:把两个设备的网络密匙设置为一样,其他设备就不能加入该网络了,是这样的吗?怎么我试验过密匙不同还是会入网,只不过不能通信而已。
在两个不同PAN_ID的网络间通信: