This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652R7:ZED 随机离开网络

Guru**** 2458170 points
Other Parts Discussed in Thread: Z-STACK, CC2652R7

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1292893/cc2652r7-zed-randomly-leaves-network

器件型号:CC2652R7
主题中讨论的其他器件:Z-stack

您好!

我的基于 Z-Stack 的 ZED 遇到了一个非常麻烦的问题: 几天后、它会随机离开 Zigbee 网络。

在寻找类似的主题后、我找到了几个、但都没有明确的问题答案。 最可靠的一个 是 CC2530:ZED 随机离开网络- Zigbee 和 Thread 论坛- Zigbee 和 Thread - TI E2E 支持论坛

基本产品信息

  • ZED 是一款基于  SimpleLink  cc13xx_cc26xx SDK 6.40.00.13  及其 ZED Doorlock 示例(对于 LP_CC2652R7)
  • ZC 也是一个 CC2652R7、直接从  SimpleLink  cc13xx_cc26xx SDK 5.40.00.40  及其 ZNP 示例(以及用作控制器的 Z2M)
  • ZED 轮询周期为 6000毫秒

初始状态

  • 几个相同的 ZED (4或5) 被成功地与 ZC 配对。
  • 所有 ZED 都能与 ZC 正确交互。
  • 没有 ZR、则所有 ZED 都直接连接到 ZC。
  • 覆盖范围不是问题。
  • 没有其他器件可与 ZC 配对。

这种情况将持续2或3天,其中:

  • ZED 将正确报告一些属性。
  • ZC 可以按需与 ZED 交互。

问题症状

几天后 部分 ZED、而不是所有 ,将停止与 ZC 通信:  

  • ZC 将这些 ZED 视为无响应、仍处于网络中。
  • ZC 日志不显示任何离开网络消息。
  • ZC 与这些 ZED 的交互不会成功。 与其他 ZED 的互动确实成功。
  • 这些 ZED 将停止报告其属性。 其他人仍然正确报告。
  • 这些 ZED 仍然活跃且活跃、并且对手动交互做出反应。

通过一些代码检测,我可以为这些 ZED 提取一些 Z-Stack 状态 :  

  • ZStack_DevState ->  ZStack_DevState_Hold
  • bdbCommissingMode ->  bdb_调试_NWK_转向
  • bdbCommissioningStatus ->  bdb_调试_否_网络

我认为这是一个 网络外 状态。

下面是我的问题:什么可能产生这样的行为?

 我发现的大多数解决方案或提示都可能意味着 ZR、即 ZED 超时、大量的上一代器件或芯片、但此处不适用。

更多信息:

  • 如何嗅探射频? 可悲的是,这是一个相当复杂的程序,在我的环境中实施,特别是如果它必须持续几天。
  • 为什么一次尝试几个 ZED ? 由于问题的随机性,我 必须使用几个来确保它的重现。
  • ZED Z-Stack 配置:  

zstack.deviceType = "zed";
zstack.pm.pollPeriod = 6000;
zstack.rf.txPower = "5";
zstack.rf.primaryChannels = [11,25];
zstack.network.endDeviceTimeout = 14;
zstack.advanced.routing.routeExpiryTime = 255;

其他参数可能是默认参数。

  • ZED 符号/宏:  

ZCL_REPORT_CONFIGURING_DEVICE
ZCL_REPORT_DESTINATION_DEVICE
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_DOORLOCK
ZCL_SCENES
ZCL_GROUPS
BDB_REPORTING
TIMAC_ROM_PATCH
CUI_DISABLE
MAX_STATUS_LINES=10
ZSTACK_SECURITY
FREQ_2_4G
OSAL_PORT2TIRTOS
OSAL_PORT2TIRTOS_OSALMAP
ZDO_API_BASIC
TC_LINKKEY_JOIN
NV_RESTORE
NV_INIT
FEATURE_NON_BEACON_MODE
ZCL_STANDALONE
MAX_DEVICE_TABLE_ENTRIES=50
DEVICE_FAMILY=cc26x0
DeviceFamily_CC26X2X7
TIMAC_ROM_IMAGE_BUILD
NVOCMP_NVPAGES=2
TIRTOS7_SUPPORT
HEAPMGR_CONFIG=0x80
HEAPMGR_SIZE=0x00

感谢您的观看。 非常感谢任何线索或建议!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Elarif:

    bdb_isDeviceNonFactoryNew 是否返回 bdbAttributes.bdbNodeIsOnANetwork 为真?  如果不是这样、那么 NV 存储器已被重置为出厂新设置。

    • ZStack_DevState ->  ZStack_DevState_Hold
    • bdbCommissingMode ->  bdb_调试_NWK_转向
    • bdbCommissioningStatus ->  bdb_调试_否_网络
    [/报价]

    根据这些值、 bdb_nwkDiscoveryAttempt -> bdb_reportCommissioningState BDB_interving_State_Joining 案例可能已失败。  以下代码来自 SimpleLink v7.10 SDK,可能会因您的版本而有所不同(与 v6.40相比,变化很小,因此我怀疑它是否会有所不同):

          case BDB_COMMISSIONING_STATE_JOINING:
            if(ZG_DEVICE_JOINING_TYPE)
            {
              //Prepare for the next state or commissioning mode to be excecuted
              OsalPortTimers_startTimer(bdb_TaskID,BDB_CHANGE_COMMISSIONING_STATE,50);
    
              if(didSuccess)
              {
                //Next state is TC link key exchange
                bdbCommissioningProcedureState.bdbCommissioningState = BDB_COMMISSIONING_STATE_TC_LINK_KEY_EXCHANGE;
                //Free the list of nwk discovered
                while(pBDBListNwk)
                {
                  bdb_nwkDescFree(pBDBListNwk);
                }
    
                //No notification in this step
                return;
              }
              else
              {
                uint8_t temp = FALSE;
    
                bdbAttributes.bdbCommissioningStatus = BDB_COMMISSIONING_NO_NETWORK;
                bdbCommissioningModeMsg.bdbCommissioningMode = BDB_COMMISSIONING_NWK_STEERING;
                bdbCommissioningProcedureState.bdbCommissioningState = BDB_COMMISSIONING_STATE_START_RESUME;
                bdbAttributes.bdbCommissioningMode &= ~BDB_COMMISSIONING_MODE_NWK_STEERING;
    
                //Turn off the radio
                ZMacSetReq(ZMacRxOnIdle, &temp);
                //Set the device to FN, to start as new for subsequent attempts
                bdb_setFN();
                NLME_ResetRequest();
                ZDApp_ChangeState( DEV_HOLD );
    
                //Free the list of nwk discovered
                while(pBDBListNwk)
                {
                  bdb_nwkDescFree(pBDBListNwk);
                }
              }
            }
          break;

    您还可以直接进一步调试器件、以确定 bdbcommitingStatus 何时设置为 BDB_interving_no_network 以及此时的调用堆栈和网络状态。  您是否能够通过默认工程复制此行为?  如果不是、请进一步阐明您的应用变更。   ZED Doorlock 示例至少不报告属性、 实施的更改可能导致存储器泄漏、最终损坏 NV 存储器或导致意外恢复出厂设置。  如果您知道器件已重置为新出厂设置、则应进一步调试以尝试在 bdb_setFN 处中断、以确定发生这种情况的原因。  下面是一些您可能考虑使用的其他线程:

    https://e2e.ti.com/f/1/t/1274985 
    https://e2e.ti.com/f/1/t/1288546 

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    感谢 您快速回答 并提出这些建议。

    您提供的 v7.10代码实际上 相同 v6.40的兼容性。

    我的下一个行动将是 实现 更多仪表 来确定发生问题时器件的完整状态。

    此外,在阅读您提到的线程后:

    • 添加了一些与此相关的堆栈修改 DEV_END_DEVICE_UNAUTH 行为
    • 升级我的 ZC 固件

    根据结果、我可能会开始寻找 NV 损坏  并且/或者尝试对我的 用一个干净的示例进行了 ZED 然后执行。

      

    我会提供测试结果给您(预计需要几天...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另外、如果 ZED 由电池供电、请确保电压电平不会降至2V 以下、因为这可能会导致对 NV 存储器写入操作。    有关更多详细信息、请参阅非易失性存储器低电压检测。  否则、如果 ZED 由市电供电并且功耗不是问题、请考虑改用 ZR 项目、至少作为一项测试、确定其行为是否相似。

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Elarif:

    供参考   

    (+) SIMPLELINK-CC13X2-26X2-SDK:自 SDK 6.20.00.29以来固件不稳定- Zigbee 和 Thread 论坛- Zigbee 和 Thread - TI E2E 支持论坛

    此致、

    大卫