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.

[参考译文] RTOS/CC2530:1如何修改终端设备重新传输逻辑2网关以60ms 的间隔连续向设备发送命令、导致网关不发出命令或链接状态。

Guru**** 2586555 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/696211/rtos-cc2530-1-how-to-modify-terminal-device-retransmission-logic-2the-gateway-sends-commands-to-the-device-continuously-at-60ms-intervals-causing-the-gateway-to-issue-no-commands-or-linkstatus

器件型号:CC2530

工具/软件:TI-RTOS

最近、有一个项目使用终端设备。 有两个问题。

1、正常工作的终端设备、偶尔遇到信号较差或信号干扰、导致设备发送数据请求、在数据请求传输过程中、设备将重新传输、以便重新加入。

同时、当发送重新加入时、将出现重新传输现象、导致睡眠设备缺少电源、导致设备重新启动。 如果可以修改重传编号或重传逻辑、

2、在测试过程中、coordfo (CC2530)以200ms 的周期向终端设备发送数据(tend device datarequest 周期为1秒)、并一次发送30条控制指令。

网关可能无法生成数据或链路状态。

网关上的器件将以 dataRequest 和 ACK 开始、并将脱机以重新加入。 在3-4分钟内、网关将无法发送任何数据。 之后、它将恢复正常工作状态、并且器件将能够重新启动。

有必要将发送周期更改为60ms 间隔以发送数据。 协议栈内还有一个宏定义、ACK_DONE_ISR_权 变措施

测试尚未解决

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否有监听器日志来详细说明您的问题? 您是要操作网络重试机制吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../2018_2D00_6_2D00_2_2D00_16184250_2D00_184560.7ze2e.ti.com/.../20180528_5F00_4000_5F00_error.7z

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

     这是用于发送失败数据以及如何修改重传逻辑的日志。要在我的项目中重发太多数据

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    macPib_t 数据结构中的 NWK_MAX_DATA_RETRY 和 maxFrameRetries 定义了 netowrk 重试次数的总数。 您可以尝试操作 NWK_MAX_DATA_retries 和 maxFrameRetries 以更改网络重传。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我已经更改了这些参数、但没有效果。

    此外、如果我减少重新传输的次数、可能会导致频繁重新加入。

    每次重复四次、两次。 我能否修改这两个间隔、例如一秒

    谢谢你

      并且 Coordinfo 发送间隔很短(60ms)、无法确定如何解算数据。

    /*传输失败后允许的最大重试次数*/
    -DAPSC_MAX_FRAME_RETESS=3

    /*查找消息的下一跳地址时重试的最大次数*/
    -DNWK_MAX_DATA_TRIESS=2.

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

    打扰一下、如何关闭孤立的 request.send 信标以重新加入,

    其他

    ZDUApp_ChangeState ( DEV_NWK_孤立);
    //设置扫描和重新加入的计时器
    // osal_start_timerEx (ZDAppTaskID、ZDO_REFONIT_Backoff、zgDefaultRedjoinScan);
    RET = NLME_OrphanJoinquest (runtimeChannel、
    zgDefaultStartingScanDuration);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以调用 NLME_NetworkDiscoveryRequest 而不是 NLME_OrphanJoinRequest。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经尝试过。这不是 used.now
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Lainck、

    是否要尝试直接重新加入而不是孤立的过程?

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

    您好、Lanick、

    尝试仅更改 ZDApp_ProcessOSALMsg()中 ZDO_NWK_JOIN_REQ 下的代码,使用下面的代码,当再次可用时,我能够重新加入旧网络,并且孤立通知不会触发。 请查看随附的捕获。

    e2e.ti.com/.../Orphan-message-removal.zip

      案例 ZDO_NWK_JOIN_REQ:

       if (ZG_build_Join_type && ZG_DEVICE_Joining _type)

       {

        retryCnt = 0;

        devStartMode = mode_sin_ele重返;

        _tmpRejoinState = true;

        OSAL_cpyExtAddr (ZDO_UseExtendedPANID、_NIB.extendedPANID);

        zgDefaultStartingScanDuration = bear_order_60_msec;

        _nib.nwkState = nwk_reJoining;

        ZDApp_NetworkInit(0);

       }