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

Zigbee路由产品不走路由中继

我现在是打开了加密,

协调器限定了zgApsUseExtendedPANID[Z_EXTADDR_LEN]

路由指定ExtendedPANID

并在预编译里面添加了 NV_RESTORE、 HOLD_AUTO_START

以上这些会影响走路由中继吗?

中继功能还需要打开哪些预编译选项?

需要设置什么东西吗

VV:

这些东西跟了路由中继没什么关系,不需要做什么设置。ZigBee协议栈,网络做路由的功能是默认就有的

biao zhang5:

回复 VV:

首先谢谢你的回答:

       我测试的ti官方给的协议栈,然后做测试    路由设备发送数据到网络地址0x0000     协调器接收    发现距离远了以后,走路由也是这个问题   很不稳定,

      会出现通讯一会(几分钟或十几分钟具体时间不定)就会丢包,然后过上十几二十秒就又恢复,基本上就是这样循环掉线上线,我该怎么解决这个问题呢?

VV:

回复 biao zhang5:

你说的距离远了以后,会有这个问题,是不是单跳的距离并无法达到这么远,硬件的射频性能,两点之间中建的阻挡,等等。

是不是说在近距离的情况下,这个路由的转发就不会有问题的,这样至少说明算法软件的处理是没有问题的。

距离远了有问题,主要是发送出去没ACK,还是数据都发不出了?

biao zhang5:

回复 VV:

距离近的时候通过抓包工具看,数据是走路由的,还算稳定,

距离远是 我把一个路由节点放到单跳不能通讯的地方,然后再协调器和这个路由节点之间   在放上两个路由节点,想让数据通过路由过来,但是数据是偶尔能够通过路由过来到协调器,数据发送一会   就又发送不过来了,就这样断断续续,造成通讯不正常,

我在ZStack-CC2530-2.5.1a   协议栈里面的 SampleApp 里面改的,

我测试让路由节点2S发送两个字节,路由节点发送函数    uint8 ledBuf[2] = {0};  SampleAppPeriodicCounter ^= 1;//  if(SampleAppPeriodicCounter)//     P1 |= 0x01;//  else//     P1 &= ~0x01;//  ledBuf[0] = SampleAppPeriodicCounter;//  ledBuf[1] = 0xff;    if(SampleAppPeriodicCounter)     P1 |= 0x02;  else     P1 &= ~0x02;  ledBuf[1] = SampleAppPeriodicCounter;  ledBuf[0] = 0xff;    SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;  SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;  SampleApp_Periodic_DstAddr.addr.shortAddr = 0x0000;

  if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,                       SAMPLEAPP_PERIODIC_CLUSTERID,                       2,                       (uint8*)ledBuf,                       &SampleApp_TransID,                       AF_DISCV_ROUTE,                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )  {  }  else  {    // Error occurred in request to send.  }

协调器接收后就指示灯闪烁

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ){  uint16 flashTime;

  switch ( pkt->clusterId )  {    case SAMPLEAPP_PERIODIC_CLUSTERID:        if(pkt->cmd.Data[0] == 1)            P1 |= 0x01;        else if(pkt->cmd.Data[0] == 0)            P1 &= ~0x01;                if(pkt->cmd.Data[1] == 1)            P1 |= 0x02;        else if(pkt->cmd.Data[1] == 0)            P1 &= ~0x02;      break;

    case SAMPLEAPP_FLASH_CLUSTERID:      flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );      HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );      break;  }}

现在的现象就是,距离远一点,迫使它走路由中继 ,   协调器端的指示灯,正常闪烁一会然后常亮或长灭一会,就这样断断续续的 ,也没有规律

赞(0)
未经允许不得转载:TI中文支持网 » Zigbee路由产品不走路由中继
分享到: 更多 (0)