TI中文支持网
TI专业的中文技术问题搜集分享网站

zigbee终端节点有必要打开NV_RESTORE么?

我做了下测试,打开不打开结果完全一样,测试过程如下:

VV:

如果你不打开NV功能,那么你的第一种情况不会成立,当你的C1关闭后,E失去父节点加入到R中,这时候有R来维护整个网络的运行,PANID并没有发生改变。此时如果你的C1重新上电而且没有启用的NV功能的,C1会新建一个网络,在新建网络的时候首先启动网络扫描,发现该信道有其他网络存在,所以会改信道,或者会更改一个不会冲突的PANID重新建立一个新的网络,那么此时就会有两个网络存在了,不会出现你画的那种情况。

yiucing din:

回复 VV:

C和R都开了NV_RESTORE,只有E没开啊

不过我用另一组(PANID=0x2202,CHN=0x15)测的时候,有发现变化过一次,实际应用中是不是C、R、E都得开NV_RESTORE?

yiucing din:

回复 yiucing din:

现在又有一个问题,还是上述设备,

1个协调器,1个路由器,1个终端节点,

然后,关掉协调器,又下载了一个终端节点,发现这个节点无法加入路由器维持的网络,

sniffer观察,一直发送beacon request(另一个节点一直发送data request正常),

打开协调器之后,这个节点才加入网络,

再关掉协调器,这个节点有断网了,

这是什么情况,

难道是所谓的路由器关联表满了么,

为嘛不会自动更新关联表,

该怎么处理?

 

PS: 终端节点在上述测试中只换过三四次短地址的,期间还开了一台路由器

 

VV:

回复 yiucing din:

当节点发送beacon request的时候,你有看到路由器发送beacon出来吗?

路由器是不是关闭了permit join?

打开协调器以后,节点直接加入到协调器,以协调器作为父节点,协调器断网以后,照道理节点成为孤立节点以后吗,应该自动加到路由上去,这个你有看到么?

yiucing din:

回复 VV:

默认permit join应该是开的吧,我程序里没操作,

协调器断网以后,这个这个节点有成为孤立节点,

然后不停的发送beacon request,路由器什么也没发,

但是我把另一个节点的父节点转移到协调器上,

然后断开协调器,这个节点成为孤立节点后发送beacon request,

路由器就有回应发送beacon,然后节点发送rejoin request重新入网没问题。

 

PS:我看父节点的方法是,

在sniffer里,当节点发data request时,目的地址是哪个,哪个就是父节点,应该没错吧。

yiucing din:

回复 VV:

今天特地把节点刷了协调器的程序,再刷回节点的程序,

还是不行,一直发beacon request,连不上网,

然后把天线装上(之前一直没装天线),就好了,哈哈。。

协调器开的时候能连上,可能是协调器离的比较近吧,

以前没装天线本来都没问题的。

 

另外,还发现一个现象,

当协调器关掉时候,只留路由器维持网络,

新下载一个节点,此时节点的父节点为路由器,

这时再打开协调器,重启此节点,节点的父节点变成协调器,

而且若此节点没开NV_RESTORE,短地址会发生改变,

但是若开了NV_RESTORE,短地址不会发生改变。

yiucing din:

回复 yiucing din:

又发现一个很奇怪的现象:

实验中有两个zigbee网络

一个PANID=0x1101,CHN=0x0B,

设备为:1个协调器C1.1,1个路由器R1.1,1个开NV_RESTORE的节点E1.1,1个没开NV_RESTORE的节点E1.2;

另一个PANID=0x2202,CHN=0x15,

设备为:1个协调器C2.1,1个路由器R2.1,2个没开NV_RESTORE的节点E2.1和E2.2;

 

在E1.1和E1.2的父节点都是C1.1的情况下,关掉C1.1,

此时,E1.2居然加入了PANID=0x2202的网络里,父节点是C2.1,

在这个网络里,通信完全正常,

当然不是每次都会这样加入到另一个网络里,

只是偶尔发生了一次,

很奇怪。

VV:

回复 yiucing din:

E1.2没有开启NV_RESTORE功能,没有保存网络信息,加入到PANID=0x2202的网络很正常啊,对于E1.2来说发出去beacon request然后收到beacon,肯定会有好几个beacon,每一个beacon里面包含了网络的信息,节点地址等等。所以E1.2就选择了一个网络加入。

另外每次需要重新调试NV功能前,最好用Smart Flash Programer软件,把flash erase下,这样可以把之前保存的NV信息,擦除掉。

yiucing din:

回复 VV:

谢谢!

不过Smart Flash Programer没看到单独erase的选项啊,

只看到erase and program和erase , program and verify,

是用这个么?

 

另外,

E1.2虽然没有开启NV_RESTORE功能,

但是已经指定PANID=0x1101,CHN=0x0B,

按手册上说,应该只能加入这个PANID才对。

 

手册内容如下:

9.2  Configuring the PAN ID and network to join This is an optional configuration item to control which network a ZigBee Router or End Device will join. The ZDO_CONFIG_PAN_ID parameter in f8wConfig.cfg can be set to a value (between 0 and 0xFFFE). A coordinator will use this value as the PANId of the network that it starts. A router or end-device will only join a network that has a PANId configured in this parameter. To turn this feature off, set the parameter to a value of 0xFFFF.

yiucing din:

回复 VV:

的确有可能加入到其他网络中,

E1.2发beacon的时候,dest pan和dest addr都是0xFFFF,且在两个网络里都有观察到,

不过这回有点乱,

协调器C1.1关掉之后,两个网络都加不进去,

如下图,E1.2一直向panid=0x2202, addr=0x132A发送rejoin request,

可是0x132A在panid=0x1101的网络里,即为R1.1,

 

出现这种情况一段时间后打开C1.1,此时E1.2发送rejoin request的目的地址变成0x0000了,

但PANID还是0x2202,最终还是加入了0x2202的网络里。

 

其中,

R1.1 : 0x132A

E1.1 : 0xC824

E1.2 : 0x8B5B

R2.1 : 0xD59C

E2.1 : 0xBF2F

E2.2 : 0xAACE

赞(0)
未经允许不得转载:TI中文支持网 » zigbee终端节点有必要打开NV_RESTORE么?
分享到: 更多 (0)