我用的IC是CC2530 协议栈是zstack cc2530 2.5.1a。测试发现coordinator与两个router组网后,然后coordinator掉电,再上电,则coordinator的PANID就会+1,与原来的router不连接。
个人理解:
1.coordinator本身也是router,是带有建网功能的router,在建网的时候,扫描周围zigbee网络,发现存在一个panid与自己一样的zigbee网络时候,为了防止网络冲突,PANID自动+1,然后建立新zigbee网络。
2.router 在coordinator建网后,coordinator再掉网,每隔15s与网络地址是0x0000的coordinator沟通,沟通不了AssociatedDevList.age+1,若有其他设备上电,如router或end device,则其他设备与该router连接。
以上两点是导致coordinator掉电后重新上电,与原来网络不连接的原因。
我们大家都知道coordinator掉电无可避免,同时又不能让客户将所有的router与end device重启,这样的话,会导致该产品无法使用。
注意网上大神提供的方法:增加NV_RESTORE选项可以解决这个问题.这个是不能解决问题的。原因是个人理解的第一点。请不要再给这个建议了!
希望大家各抒己见,一起把这个问题解决。TI的zigbee 就完美了~
我之前也存在这样的问题,但是增加NV_RESTORE选项确实好用了呀
没有用 重点是对于coordinator来说,不管是建立网络或者恢复网络 它都要扫描网络 然后判定是否有网络冲突
不要在程序里面去指定PANID,指定PANID是愚蠢的做法,默认PANID必须是0xFFFF
不是很理解楼主要实现什么效果,如果你不想加NV_RESTORE,那你可以考虑做一个清除网络信息的功能,有相应的API,你可以直接调用,其实你加了NV_RESTORE就可以让你的协调器掉电后保持掉电前的网络配置,PANID不会加1.如果你不想这样的话,你可以再网络中设置一个协议,如果网络中没有了协调器,那所有网络节点都自动清除网络配置信息,重新等待入网。
淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
感谢回复~我们现在入网机制是coordinator生成一个PANID,然后将这个PANID通过串口烧给End Device 和Router,然后End Device 和Router上电重启就可以入网了。就相当于zigbee固定PANID 入网,这样就出现coordinator掉电重启出现panid+1,与原来网络不能沟通的BUG。如果不用固定PANID,则要重新考虑zigbee入网管控问题,希望大家给点建议。同时请教您清楚网络信息功能是否能说再详细点~感谢~
这个帖子估计要沉下去了~难道大家做产品的时候,没碰到这样的问题?难道这里的人都是做毕业设计,只要有功能就可以了
协调器加NV_RESTORE就可以解决的问题,你非要固执地不采用,还搞的那么麻烦。
协调器在启动过程中,会调用信道扫描,想办法让扫描结果还回是无信号占用,panid就不会加1启动。
电子工程师技术交流QQ群:12425841,专注于自动控制、数字电源等
由于我用的ZNP code 做coordiantor,它需要一个ZAP,ZAP 要设置一些参数和保存数据,但是我没有,所以就有问题。你们不用ZNP,所以不用担心~
DEFAULT PANID设置为0xFFFF,配合NV_RESTORE一起用。
每个ZR和ZE都要烧PANID?很不方便的。
直接在ZC上输入ZR和ZE的MAC地址,实现接入,你们试过这种方法没?
看得我好迷糊啊,但是我现在想做的也是保证掉电或重启后能够恢复原始网络,怎么恢复啊?网络地址是不是变化了?我还想问几个问题,(1)如何构建自己想要的网络啊?怎么配置?(2)每一个主节点实际上最多可管理多少个子节点?真的非常佩服你们这样ZigBee精通者,太想也太需要得到你们的指点啦,谢谢啦
能具体说一下什么API能实现清除设备中网络信息,再重新入网的吗?