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.

[参考译文] CC2340R5:ZB_NLME_STATUS_INDITION 的原因是什么?

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1623876/cc2340r5-what-is-the-cause-of-zb_nlme_status_indication

器件型号: CC2340R5

 

      case ZB_NLME_STATUS_INDICATION:
      {
        zb_zdo_signal_nlme_status_indication_params_t *nlme_status_ind = ZB_ZDO_SIGNAL_GET_PARAMS(sg_p, zb_zdo_signal_nlme_status_indication_params_t);
        printf("Network operation %02x,nwk_addr = %02x\r\n", nlme_status_ind->nlme_status.status,nlme_status_ind->nlme_status.network_addr);
        break;
      }

在哪里可以找到由 nlme_status_ind->nlme_status.status 和 nlme_status_ind->nlme_status.network_addr?表示的状态位的含义 在什么情况下会出现此信号? 为什么在多次生成此信号后、协调器会重新启动?

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

    尊敬的 Bin:

     zb_zdo_signal_nlme_status_params_t 是 zb_nlme_status_intendation_t 的结构体、其中包含状态  (与故障相关的错误代码)和 network_addr(与状态信息关联的网络设备地址)。  您可以参阅  \source\third_party\zigen\zbos_R23\include\zboss_api_nwk.h 获取可用  ZB_Nwk_command_status_*定义列表。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /**@cond internals_doc */
    /**
     *@名称网络命令状态代码
     *@锚 NWK_COMMAND_STATUS
     */
    /**@{*/
    #define ZB_NWK_COMMAND_STATUS_NO_ROUTE_AVAILABLE      0x00U /**<无可用路由*/
    define ZB_Nwk_command_status_tree_link_failure      0x01U /**<树链路故障*/
    #define ZB_NWK_COMMAND_STATUS_NONE_TREE_LINK_FAILURE    0x02U/**<无树链接故障*/
    define ZB_NWK_COMMAND_STATUS_LOW_BATTERY_LEVEL      0x03U /**<低电池电量*/
    #define ZB_NWK_COMMAND_STATUS_NO_ROUTING_Capacity     0x04U /**<无路由容量*/
    #define ZB_NWK_COMMAND_STATUS_NO_INDIRECT Capacity     0x05U /**<无间接容量*/
    #define ZB_NWK_COMMAND_STATUS_INDIREATE_TRANSACTION_EXPIRATION 0x06U /**<间接事务到期*/
    #define ZB_NWK_COMMAND_STATUS_TARGET_DEVICE_UNAVAILABLE  0x07U /**<目标器件不可用*/
    #define ZB_NWK_COMMAND_STATUS_TARGET_ADDRESS_UNALLOCATED  0x08U/**<未分配目标地址*/
    define ZB_NWK_COMMAND_STATUS_PARENER_LINK_FAILURE     0x09U /**<父级链接失败*/
    #define ZB_NWK_COMMAND_STATUS_VALIDATE_ROUTE        0x0aU /**<验证路由*/
    #define ZB_NWK_COMMAND_STATUS_SOURCE_ROUTE_FAILURE     0x0bU /**<源路由失败*/
    #define ZB_NWK_COMMAND_STATUS_MANTID_COUNT_TO_ONE_ROOUTE_FAILURE  0x0cU /**<多对一路由失败*/
    #define ZB_NWK_COMMAND_STATUS_ADDRESS_CONFLICTION       0x0dU /**<地址冲突*/
    define ZB_NWK_COMMAND_STATUS_VERIFY_ADDRESS        0x0eU /**<验证地址*/
    #define ZB_NWK_COMMAND_STATUS_PAN_IDENTIFIR_UPDATE    0x0fU /**< PAN ID 更新*/
    #define ZB_NWK_COMMAND_STATUS_NETWORK_ADDRESS_UPDATE    0x10U /**<网络地址更新*/
    #define ZB_NWK_COMMAND_STATUS_BAD_FRAME_COUNTER      0x11U /**<帧计数器错误 */
    #define ZB_NWK_COMMAND_STATUS_BAD_KEY_SEQUENCE_NUMBER   0x12U/**<密钥序列号错误*/
    #define ZB_NWK_COMMAND_STATUS_UNKNOWN_COMMAND       0x13U /**<接收的命令未知*//**@}*/
    /**@}*/

    CORTEX_M0P:网络运行 19、NWK_addr = 481

    CORTEX_M0P:网络运行 19、NWK_addr = 481

    CORTEX_M0P:网络运行 19、NWK_addr = 481
    输出为 0x19、但我没有看到相应的错误状态值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找不到任何 0x19 错误代码、根据此信息和您的 其他 E2E 主题、我怀疑 应用信号未得到正确处理。  这也可以解释您的器件复位。 请查看我的评论、并考虑对工作的 F3 SDK v9.14 示例和错误的应用程序文件进行比较、以发现任何缺失的元素来解释这种奇怪的行为。

    此致、
    Ryan

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

    应如何处理此信号? 生成多次后、器件将重新启动。 产生该信号的原因是什么?

    #define ZB_NWK_COMMAND_STATUS_INDIRECT_TRANSACTION_EXPIRY 0x06U /**< Indirect transaction expiry */

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

    对于 MAC_TRANSACTION_OVERFLOW 或 MAC_TRANSACTION_EXPIREED、将返回 ZB_NWK_COMMAND_STATUS_INDIREATION_TRANSACTION_EXPIRED。   这意味着在本地父设备上超时之前、传输缓冲区或休眠终端节点未及时报告接收消息的问题。  无论在哪种情况下、充分管理应用程序缓冲区都至关重要、因为如果不这样做、可能会合理地导致器件软件复位。

    此致、
    Ryan

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

    如何检查应用缓冲区的大小和相关设置、并确定协调器可以接收多少个终端、以及终端发送的数据包可以同时接收多大。

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

    我相信您的大多数问题都可以通过  ZBOSS 用户指南的 Zigbee 栈 RAM 使用配置部分得到解决。  您可以使用包含更大 RAM 的 CC27XX 器件来支持更大的缓冲器大小和更多的加入器件。

    此致、
    Ryan

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

    协调器仅连接到一个器件。 设备离开网络后、仍会显示 ZB_Nwk_command_status_indirectal_transaction_expires 和 ZB_Nwk_command_status_no_route_available。 为什么会这样?

    [10:21:48.527]收←◆long_addr : 05:48:3f:2f:00:4b:12:00
    
    [10:21:48.759]收←◆leave device short addr = 0x1fbb
    
    [10:21:56.429]收←◆Network operation 06,nwk_addr = 1fbb
    Network operation 06,nwk_addr = 1fbb
    
    [10:22:07.137]收←◆Network operation 00,nwk_addr = 1fbb
    
    [10:22:18.285]收←◆Network operation 00,nwk_addr = 1fbb
    
    [10:22:33.478]收←◆Network operation 00,nwk_addr = 1fbb
    

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

    这些是 ZBOSS 的预期响应(如果应用程序正在尝试向已离开网络且不可用的设备发送消息)。

    此致、
    Ryan

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

    该应用程序缓冲区是否可以清除? 我使用协调器来连接 6 终端器件。 6 个终端设备中的每一个都每 10 秒发送 48 个字节的数据。 运行 1 小时后、再次重新连接时、会出现“ZB_Nwk_command_status_indirectact_expired"错误“错误。 我应该如何操作以防止每次重新连接时出现此状态?

    [09:15:02.179]收←◆a55a30026916952501000000691695270100000069169529010000006916952b010000006916952d0100000000f40d0a 0f:48:3f:2f:00:4b:12:00
    
    [09:15:02.815]收←◆a55a300269169525090d000069169527090d000069169529090b00006916952b090b00006916952d090b000000f70d0a 05:48:3f:2f:00:4b:12:00
    
    [09:15:02.866]收←◆a55a30026916952501000000691695270100000069169529010000006916952b010000006916952d0100000000f40d0a 72:47:3f:2f:00:4b:12:00
    a55a30026916952501000000691695270100000069169529010000006916952b010000006916952d0100000000f40d0a 58:45:3f:2f:00:4b:12:00
    
    [09:15:02.941]收←◆a55a30026916952501000000691695270100000069169529010000006916952b010000006916952d0100000000f40d0a 5a:45:3f:2f:00:4b:12:00
    
    [09:15:03.106]收←◆a55a30026916952501000000691695270100000069169529010000006916952b010000006916952d0100000001f50d0a 59:45:3f:2f:00:4b:12:00
    
    [09:15:18.327]收←◆leave device short addr = 0xe009
    
    [09:15:18.571]收←◆leave device short addr = 0xaa9b
    
    [09:15:18.644]收←◆leave device short addr = 0xb57f
    
    [09:15:18.941]收←◆leave device short addr = 0xb023
    
    [09:15:19.052]收←◆leave device short addr = 0x9e1b
    
    [09:15:19.279]收←◆leave device short addr = 0x80b0
    
    [09:16:30.021]收←◆long_addr : 58:45:3f:2f:00:4b:12:00
    
    [09:16:35.914]收←◆long_addr : 72:47:3f:2f:00:4b:12:00
    
    [09:16:37.737]收←◆long_addr : 0f:48:3f:2f:00:4b:12:00
    
    [09:16:55.260]收←◆long_addr : 05:48:3f:2f:00:4b:12:00
    
    [09:18:22.152]收←◆long_addr : 59:45:3f:2f:00:4b:12:00
    leave device short addr = 0x0c7c
    
    [09:18:32.591]收←◆Network operation 00,nwk_addr = c7c
    
    [09:19:00.042]收←◆Network operation 00,nwk_addr = c7c
    
    [09:19:15.424]收←◆Network operation 00,nwk_addr = c7c
    
    [09:19:19.339]收←◆unavailable_short_addr = 0x0c7c
    
    [09:19:25.865]收←◆long_addr : 59:45:3f:2f:00:4b:12:00
    
    [09:19:25.942]收←◆leave device short addr = 0x0c7c
    
    [09:19:33.790]收←◆Network operation 06,nwk_addr = c7c
    Network operation 06,nwk_addr = c7c
    
    [09:19:44.513]收←◆Network operation 00,nwk_addr = c7c
    
    [09:19:58.960]收←◆Network operation 00,nwk_addr = c7c
    
    [09:20:13.194]收←◆Network operation 00,nwk_addr = c7c

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

    请参阅 Zigbee 基础项目开发 SLA 、其中涉及  SEND_APS_PAYLOAD_CB。  此函数将返回应用程序有效载荷的状态、然后释放缓冲区。  间接事务到期可能是由于 ZED 在到期时间之前没有向其父级发送数据请求(请参阅编译时配置参数) 。  如果您认为 ZBOSS 栈中存在错误、请发送详细说明、说明如何使用 F3 SDK 中的 Zigbee 示例进行复制。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是我作为协调器测试 onoff_light 的代码。 我只为信号值添加了打印语句。 我仍然使用 onoff_switch 作为终端

    我复制了您的测试、但无法复制该行为。  我的 UART 日志中没有“Network operation 00“、只有默认情况下预期出现的“Unknown signal“(未知信号)(建议在末尾添加中断以保持一致性)。  我的 ZC 从不重置。  我正在使用 ZR 作为交换机、但我认为这不会有任何影响。

    协调器保持通电状态、终端设备连接后重新编程

    您是否知道、如果没有 额外的步骤 、重新编程的开关将无法重新加入 ZC 照明、前提是 180 秒的允许加入窗口已结束?  与我的测试一样、开关使红色 LED 闪烁、但在重新编程后无法与 ZC 通信、因为其 NV 闪存已被擦除。  ZC 没有 适用于 ZB_Nwk_command_status_indirectal_transaction_expires 和 ZB_Nwk_command_status_no_route_available 的操作。

    此致、
    Ryan