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

zigbee 请求帮助!!!

使用的协议栈版本是:ZStack-CC2530-2.5.1a

使用的无线芯片是:CC2530F256RHAT

开发环境是:IAR 8.10.3

项目描述:

20个终端,1个协调器。每一个终端都布局在协调器的20米范围内。20个终端都能与协调器通信上。20个终端会每天断电重新上电一次,协调器也可能会断电重新上电。我现在使用项目工程是从D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp修改过来的,并且不管是协调器还是终端,我都在Option中的C/C++Compoler的Preprocessor的Defined symbols中加入了NV_INIT、NV_RESTORE,希望系统保留原先的网络。另外,如果终端找不到原来的网络存在,在检测到设备状态为(devState == DEV_NWK_DISC)时,1分钟后将恢复这个终端的自由之身,重新寻找新的网络,重新加入,这个处理方法如下:

if(devState == DEV_NWK_DISC)
    {
        JoiningNWKTimer ++;
        if(JoiningNWKTimer >= 6000)
        {
            JoiningNWKTimer = 0;
            
            // 网络复位
            zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
            SystemReset();
        }
    }
    else
    {
        JoiningNWKTimer = 0;
    }

以上这个代码只在终端程序上实现,协调器没有使用。

现在遇到的问题是:刚开始上电终端都能与协调器通信上,接下来给协调器断电,断电时间超过设置的1分钟,然后协调器重新上电,这样反复几次之后,发现协调器与终端通信不上了,采用SmartRF Packet Sniffer工具抓包(为了方便起见,我停掉了19个终端,只保持一个终端在线),发现终端会发出beacon resqust请求,协调器也会发出回应,但是接下来终端没有理会协调器,还是发beacon resqust请求。抓包工具展示如下:

请TI的大牛们帮忙分析一下状况,显现,在线等着你们精彩的解答!!!!

xiaohui bu:

你不是写了一段“终端节点搜索1min,让其恢复自由身”。这样是不是就断线1min后,终端节点就以新节点的方式入网呢?那你的协调器又没有打开”允许“加入。

miffy:

回复 xiaohui bu:

在论坛上看到过VV回答类似问题,别人是使用key连接,开始可以入网,等会断开就入不了,不知道你是touchlink还是link key方式入网的

user1003689:

回复 xiaohui bu:

是的,我是在协调器断电之后,时间超过1分钟,让它重新恢复网络连接状态,重新寻找新的网络,如果有的话就可以加入新的网络。另外,你说的协调器没有打开允许加入?问一下这个能说的具体一点吗?这个还没理解?

miffy:

回复 user1003689:

参考这个链接:http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/p/81476/356076.aspx#356076

xiaohui bu:

回复 user1003689:

是的。你的节点1min后,擦除了网络参数重启后就是以一个新节点的形式入网,那协调器的允许加入功能肯定要打开(调用这个接口NLME_PermitJoiningRequest)。这样节点就和之前的地址可能就不一样了。因为网络地址会重新分配的。

赞(0)
未经允许不得转载:TI中文支持网 » zigbee 请求帮助!!!
分享到: 更多 (0)