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.

[参考译文] CC1314R10:传感器数据丢失

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1460378/cc1314r10-data-loss-from-sensors

器件型号:CC1314R10

工具与软件:

尊敬的 TI:

问题说明:

当传感器数量增加时、我们遇到了传感器数据丢失的问题。 数据大概在 RX 堆栈队列中丢失。 同时、传感器不会进入孤立模式。 可以检查哪些设置?

使用的设置:
模式:非信标
最大连接的传感器设置为64个。

使用的硬件和软件:
HW Collector -具有 CC1314R10 RGZ 的定制电路板
硬件传感器-带有 CC1310F128的定制板
软件收集器-自定义、基于 simplelink_cc13xx_sdk 中的收集器示例
SW 传感器-自定义、基于 simplelink_cc13x0_sdk 中的传感器示例

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

    尊敬的 Veselin:

    这听起来 RX 队列会被填满、但传输窗口即将短路、无法传输所有数据。
    只有在断开与收集器的连接时、传感器才会进入孤立状态。 因此、连接似乎已建立。

    您能帮助我吗?
    1.您正在使用哪些 phy 设置?
    2.您发送数据的频率如何、消息的时间长度如何?
    3.连接到一个收集器的传感器数量。 是否连接64个传感器?

    此致、
    等等

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

    尊敬的 Theo:

    您可以找到附加的 collector.syscfg 文件。
    消息为1字节、每1分钟发送一次
    3.是64.

    e2e.ti.com/.../collector-_2D00_-syscfg-file.zip

    此致、

    维塞林

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

    尊敬的 Veselin:

    感谢您分享您的配置。

    将设置与我们的测试数据 https://www.ti.com/lit/swra782进行比较: 我希望数据包错误率较低、但这应该不是问题、因为堆栈会在检测到错误时实现自动重新发送。 此外、对于这个配置、应该没有消息开销。

    您能解释一下您是如何注意到消息丢失的、以及网络中的通信是如何设置的、重点是:
    -您何时以及如何观察信息丢失?
    -是否每分钟都在同一时间发送一条消息?

    此致、
    等等

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

    尊敬的 Theo:

    我们不会看到每个新消息都调用 dataIndCB、但传感器会收到数据确认消息、因为我们看不到孤立的传感器。

    所有传感器都随机上传不同时刻的数据。

    此致、

    维塞林

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

    尊敬的 Veselin:

    您如何观察 dataIndCB?

    传感器将根据报告间隔报告数据。  如果数据未得到确认、您是否使用重新发送功能?

    此致、
    等等

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

    尊敬的 Theo:

    通过每次调用函数时向 UART 添加消息来进行观察、我们可以看到错过的消息。 什么是"重新发送功能"、我们如何使用它?

    此致、

    维塞林

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

    尊敬的 Veselin:

    您能告诉我如何将数据打印到 UART 吗? 此操作不能在回调中完成、因为它会干扰消息发送。 相反、您可以将其作为单独的 线程或从其他 进程运行。

    当栈未收到确认时、重新发送由其自动完成。 您可以自动将其用于所有可确认的消息。

    此致、
    等等  

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

    您好、特奥

    Cui_retVal_t CI_writeString (void *_Buffer、size_t _size)

      SemaphoreP_PEND (gUartSem、SemaphoreP_WAIT_FOREVER);
      //检查预处理条件
      if ((gUartHandle == NULL)||(_BUFFER == NULL)||(_SIZE > sizeof (gTxBuff))
      {
        返回 CI_UART_FAILURE;
      }


      gTxSent = 0;
      if (_size!=0){
       gTxLen =_size;
       memcpy (gTxBuff、_Buffer、_size);
      }
      否则{
        sprintf ((char*) gTxBuff、"%s\n"、(char*)_buffer);
        gTxLen=strlen ((char*) gTxBuff);
      }



      UART2_WRITE (gUartHandle、(const void*) gTxBuff、gTxLen、NULL);

      返回 CI_SUCCESS;
    }

    此致、

    维塞林

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

    尊敬的 Veselin:

    请将您在代码中调用的代码片段发送给我、以便我检查它是否会干扰堆栈。

    在检查先决条件之前、你为什么调用信标有特定的原因吗?

    此致、
    等等

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

    您好、特奥

    您可以在下面找到代码。

    此致、

    维塞林

    e2e.ti.com/.../extraction.zip

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

    尊敬的 Theo:
    我们 进行了不同的 测试、即使连接了一个传感器、问题似乎也存在。
    我们创建了一个网络、其中1个集电极和1个传感器在固定频率863.1MHz 上工作、集电极超时为2秒。 并使传感器保持活动状态- 1秒。
    通过 UART 在 TeraTerm 中观察数据、同时在 SmartRFStudio7中观察数据。
    未检测到 SmartRFStudio7中的错误、但在 TeraTerm 中有5个错误。
    附件是2个文件日志、其中比较了30条消息。

    此致、
    维塞林

    e2e.ti.com/.../comparison-of-messages--between-UART-and-SmartRF.zip

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

    尊敬的 Veselin:

    查看日志:究竟什么是" CF 传感器"。 请解释一下我应该具体看什么。

    通常、如果使用1s 的快速跟踪间隔、则 至少应使用500ms 的轮询间隔、以避免数据进入队列。

    如果您想要确切地查看发送的数据包、可以使用数据包监听器捕获它们: https://dr-download.ti.com/secure/design-tools-simulation/calculation-tool/MD-r3ewsc0OIX/1.10.0/SmartRF_Packet_Sniffer2_1.10.0.zip 
    可在以下位置找到指南: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ti154stack/html/ti154stack/packet-sniffer.html?highlight=wireshark#

    我期待您的解释帮助您解决这个问题。

    此致、
    等等

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

    尊敬的 Theo:

    我发送的 UART 数据来自收集器、显示了接收时从中接收数据的传感器的地址。
    传感器周期性地发送数据、并且在向收集器发送轮询请求后立即向收集器发送下行链路数据(NBCN 模式)。
    CF addr 显示了 导致通信故障的传感器地址。

    此致、
    维塞林

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

    尊敬的 Veselin:

    不幸的是、我仍然不了解这样的误差。
    在您共享的日志中、看起来所有数据包都已接收。

    您是否收到错误封装的数据包、是 CRC 错误还是确切的错误?

    您是否通过数据包监听器检查了实际发送的内容?

    此致、
    等等

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

    尊敬的 Veselin:

    不幸的是、我仍然不了解这样的误差。
    在您共享的日志中、看起来所有数据包都已接收。

    您是否收到错误封装的数据包、是 CRC 错误还是确切的错误?

    您是否通过数据包监听器检查了实际发送的内容?

    此致、
    等等

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

    尊敬的 Theo:

    感谢您的响应、哪种方法可以在堆栈和应用程序之间查找丢失的数据包? 谢谢。

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

    尊敬的 Veselin:

    每次 Mac 层接收到数据时、都会 调用 dataIndcb ()(sensor.c)。 根据命令 ID、执行消息中携带应用程序代码。

    例如、您可以为每个传入数据包递增计数器、并为每个发送的数据包在收集器上执行相同的操作。 然后、您可以在收集器和传感器过程(sensor.c、collector.c)中添加一个事件、该事件将该计数器写入 UART。

    但要更深入地了解通过无线发送的内容、我强烈建议您按照之前的建议设置数据包监听器。 这样、您可以看到实际发送的每个数据包、并检查您是否观察到任何怪异的数据包。

    此致、
    等等

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

    尊敬的 Theo:

    我们成功设置了可使用 Wireshark 的数据包监听器。

    我们设置具有1个收集器和9个传感器的组( 收集器上的超时间隔设置为19秒、传感器上的保持活动时间设置为10秒)。

    您可以从 Wireshark 和 UART 终端中找到解压缩文件。

    我们在终端中看到的" CF addr:"显示了传感器的地址、收集器未在所需时间内从该地址接收数据消息。

    在 Wireshark 中、我们看到收集器没有从传感器接收到数据消息(只有请求他没有响应)、然后几秒钟后终端显示"MAC addr:"(CF addr:)

    在采集到这个数据后、我们需要如何继续?

    此致、
    维塞林

    e2e.ti.com/.../comparison-between-uart-and-wireshark.zip

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

    尊敬的 Veselin:

    非常感谢您观看这些截图。  
    很高兴我们现在知道消息已发送。
    您可以将数据消息作为确认消息发送、以便传感器将重新发送它、直到它收到收集器的确认或超时。
    这将确保它被接收。

    此致、
    等等


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

    尊敬的 Theo:

    您建议将传感器的消息重新发送到收集器、这大大改善了事情。 我们仍然不时有与收集器相关的错误-它不会向传感器发送确认、表明它已接收数据。 在大多数情况下、传感器发送数据超过10次、但没有收到 收集器的确认。  是不是可以指导我们找出原因。

    附加的您可以 在 Wireshark 中找到日志文件。

    此致、
    维塞林

    e2e.ti.com/.../Wireshark-log-files.zip

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

    尊敬的 Veselin:

    很高兴听到事情有所改善。

    当您将消息从传感器发送到收集器时、是否将消息设置为 conferenceable = true 当调用发送消息函数时?

    此致、
    等等

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

    您好

    .txOptions.ack = true;

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

    HI SV、

    完全正确。 这将在收到消息时触发发送确认。

    您能否与调试器核实消息发送后是否正确解释了该消息?

    此致、
    等等

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

    尊敬的 Theo:

    我们如何才能做到这一点? ACK 是堆栈的函数、我们不能使用。

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

    HI SV、

    当我查看您的 Wireshark 记录时、我可以看到收集器通常会按预期发送确认。 但您捕获了一些传输超时的情况。

    我要确认该消息是由收集器接收的、以便我们知道它未正确处理该消息。 您可以通过检查 dataIndcB()以获取传感器正在发送的消息类型来实现此目的。 如果您通过此回调完全接收到数据消息、则我们知道消息已正确接收、问题是收集器未发送确认。

    否则、问题在于  收集器未正确接收消息。

    此致、
    等等

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

    尊敬的 Theo:

    我想在 Ack 发送到传感器后会调用 dataIndCB? 如果我们没有看到 Ack、这意味着堆栈没有接收到帧或处理不正确?

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

    HI SV、

    当消息被 Mac 层接收时、它会被转发到此回调、如果它检测到消息是可确认的 、则 MAC 层会触发发送确认。  
    这意味着、当您在回调中看到数据时、我们就知道消息已正确接收。

    此致、
    等等

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

    尊敬的 Theo:

    我们在  dataIndCB 中看不到消息。

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

    HI SV、

    这意味着在消息未发送确认后收集器从未收到该消息。

    当收集器没有接收到传感器的消息(传感器多次重新发送且超时)时、是否再次接收到传感器发送给收集器的下一条消息?

    我想了解问题是仅发生在特定传输中还是传感器失去连接/同步。

    此致、
    等等

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

    尊敬的 Theo:

    我们也不了解问题的本地化位置。 传感器尝试多次发送数据、但没有 Ack、而是另一个在接收到 Ack 后立即发送数据的传感器。

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

    HI SV、

    问题在于收集器未接收到传感器发送的消息。 这可能是由于传感器在收集器本身发送消息时发送消息。 或传感器丢失时序信息并发送到错误的插槽。

    接下来、我需要知道  传感器未收到确认后会发生什么情况。 收集器再次确认之后的下一条消息、或者传感器是否变为孤立状态并重新加入网络?

    此致、
    等等