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.

[参考译文] CC2530:消息未发送到组

Guru**** 2609955 points
Other Parts Discussed in Thread: Z-STACK, CC2530

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/767125/cc2530-message-to-group-is-not-delivered

器件型号:CC2530
Thread 中讨论的其他器件:Z-stack

您好!

我们拥有一个协调器(ZNP)和许多路由器的网络连接。 路由器被分配给组。
在某些情况下、写入属性命令不会传递到组、而我们获得 MT_AF_DATA_CONFIRM 成功。

什么可能导致此行为?

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

    命令是无线发送的吗? 有时您说的是指在其他时候成功发送命令? 平均故障率是多少? 我记得您正在使用 Z-Stack 3.0.1、请提供监听器日志和代码片段、用于分配组并发送命令。

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

    您好、Ryan、

    我们可以由谁来确认它是通过无线方式发送的?

    如前所述、我们只知道 MT_AF_DATA_CONFIRM 成功。

    故障率很高、只在15-20次尝试中提供一次(第一次尝试)。

    对于此应用、ZStack 版本为2.6.1。

    我们现在无法访问监听器日志、我们将尝试获取该日志。 SmartRF Packect 监听器日志是否正常?

    代码摘录:

    1 -添加组

    zcl_header.frame_control = cluster_specific;
    zcl_header.commandID = Add_Group;
    zcl_header.transId = TransID++;
    DataRequest.DstAddr = grp_record->NWK_addr_list[i]。NWK_addr;
    DataRequest.DstEndpoint = 0x0B;
    DataRequest.SrcEndpoint =(char) server_config.Coordinator 端点;
    DataRequest.clusterid = 0x0004;
    DataRequest.TransID = zcl_header.transId;
    DataRequest.Options = 0;
    DataRequest.Radius = 0xEE;
    DataRequest.Data[0]= zcl_header.frame_control;
    DataRequest.Data[1]= zcl_header.transId;
    DataRequest.Data[2]= zcl_header.commandID;
    
    memcpy (DataRequest.Data+3、&grp_record->group_id、2);
    memcpy (DataRequest.Data+3+2、grp_record->group_name、strlen (grp_record->group_name));
    DataRequest.Len = 3+2 + strlen (grp_record->group_name);
    
    RC = afDataRequest (&DataRequest); 

    2 -发送写入属性命令

    zcl_header.frame_control = cluster_specific & 0x00;
    zcl_header.commandID = write_attribute;
    
    memset (&DataRequest、0、sizeof (DataRequest));
    zcl_header.transId = TransID++;
    
    DataRequest.DstAddrMode = 0x01; /*组地址*/
    GroupAddress =(uint16_t) group_detail->grp_id;
    memcpy (DataRequest.dstAddr、&GroupAddress、2);
    GroupAddress = DataRequest.DstAddr[0]|(DataRequest.DstAddr[1]<<8);
    DataRequest.DstEndpoint = 0x0B;
    
    DataRequest.DstPanID = 0x0000;
    DataRequest.SrcEndpoint = server_config.Coordinator 端点;
    DataRequest.ClusterId = 0x0018;
    DataRequest.TransId = zcl_header.transId;
    DataRequest.Options = 0;
    DataRequest.Radius = 0xEE;
    /* ZCL 接头*/
    DataRequest.Data[0]= zcl_header.frame_control;
    DataRequest.Data[1]= zcl_header.transId;
    DataRequest.Data[2]= zcl_header.commandID;
    DataRequest.Data[3]= 0x04;
    DataRequest.Data[4]= 0x00;
    DataRequest.Data[5]= 0x20;
    DataRequest.Data[6]=(unsigned char)(100 -(int) Intensity _at_OCC);
    DataRequest.Len = 3+1*4;
    RC = afDataRequestExt (&DataRequest);
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    多铸件的速度有多快? 发现问题时是否有监听器日志?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们很少进行多播、只有在用户触发时才会进行。 在测试过程中、我们最多可能在2-3分钟内完成一次
    我们没有监听器日志记录不工作的情况。

    组播对同一网络中的其他组正常工作。是否有任何关于可能出错的线索?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    多播不能保证传输,因此如果没有监听器日志或更多详细信息,就很难判断。 该组是否在信号较弱的设备上丢失?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否,对于组的节点,LQI 值为“良好”(>70)。

    如何向组提供多播?
    它是否传递给所有节点,然后只有具有组 ID 的节点才会实际处理这些消息?

    只有在网络中注册了组 ID 的节点才会发送此消息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它将传送到对讲机覆盖范围下的所有节点、然后只有具有组 ID 的节点才会实际处理这些消息
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此组和工作组之间是否存在明显的代码差异? 它是否始终是网络中最后形成的组? 这可能是 CC2530 ZC 上允许的最大组绑定(NWK_MAX_Binding_entries、MAX_Binding_cluster_IDS)或存档的 Z-Stack 2.6.1中组的处理方式的问题、很难用旧堆栈版本来判断。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有节点中都运行相同的代码。 组构建仅在安装时完成。 这是几个月前完成的,当时一切都很好,只是最近我们才面临这一问题。
    正如 KY 提到的,消息将被传送到所有节点,节点将检查它是否具有组 ID,然后处理它。
    然后、在这种情况下、组绑定(NWK_MAX_BINARTing_entries、MAX_BITing_cluster_IDS)是如何发挥作用的。

    您能否解释一下小组播客的实际工作方式、或指出相同的参考?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试参阅 people.cs.nctu.edu.tw/.../zigbee-multicast.ppt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供背景历史记录、在这种情况下、您可能需要根据 YK's 引用增加 APS_DEFAULT_NONUARD_RADIUS、MAX_BCast_retries 和 passive_ACK_TIMEOUT。  您是否知道网络路由最近是否发生了变化、或者其他可能影响您的组行为的变化?

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan、
    我是 AViral 团队的一员。 您能解释一下什么可能会导致网络路由改变?
    此外、我们的系统中还有一项功能、我们将在该功能中向属于组的节点发出单个配置。 我们这样做的方法是向这些节点发出删除组命令,然后发出单播配置。 这样做的原因是、当向节点发出单个命令时、除非清除了此单个配置、否则我们不希望节点接收任何多播命令。 用户定期使用此功能。 这会改变网络路由吗? 如果是、我们将如何恢复?

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

    如果路由器位置发生更改或遇到新形式的干扰、则链路成本可能会变得很低、以至于无法开始新的路由发现过程、我只想知道网络上的节点是否以某种方式超出 APS_DEFAULT_NONmember_RADIUS 或 MAX_BCast_retries 的范围。

    由于组表以 nV 为单位进行维护、因此不断删除然后重新添加节点可能会导致内存问题、从而损坏表。 考虑到已弃用的 Z-Stack 版本和缺少监听器日志、再次难以辨别。 您应该能够通过更改配置的地址模式而不从组中删除节点来发送单播消息。

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

    您好、Ryan、

    感谢您的更新。 我将查找 APS_DEFAULT_NONmember_RADIUS 和 MAX_BCast_retries、并尝试更好地了解这些概念。 我将在接下来的几天内通过数据包监听器日志(TI 射频数据包监听器)与您联系。 但为了澄清我之前的信息、我将提供一个示例。

    假设有3个节点(1、2、3)属于 ID 为1的组。 如果用户要向节点1发送某些命令,我们首先向节点1发出删除组命令,然后将该命令单播到节点1。 现在、如果用户想要向组1发出命令、协调器会将该命令多播到组1。 这样、只有节点2和3才会接收此命令。 我们不希望节点1接收组1的多播信号、直到清除节点1的单个命令(这是我们将添加组命令发送到节点1的时间)。

    希望这澄清了我们系统的工作原理。

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

    您是否需要任何进一步的支持、或者是否可以关闭此主题?

    此致、
    Ryan