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.

[参考译文] AM6421:1级 EtherNet/IP 连接会被3级连接中断

Guru**** 2463330 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1471366/am6421-ethernet-ip-class-1-connection-gets-interrupted-by-class-3-connection

器件型号:AM6421

工具与软件:

大家好、e2e 团队:

在输出产品中、我们进行了以下设置

  •  工业通信 SDK 9.2中的 EtherNet/IP 栈
  • 通过 EI_API_CIP_addInstanceCustService()注册的自定义 CIP 服务  

我们现在认识到两个3类请求同时确实阻止了循环通信。 在 Wireshark 的附加屏幕截图中、PLC 地址为192.168.1.17、设备地址为192.168.1.40  

在第一次响应服务之前、我们的器件将停止发送循环帧(FRAME 91842)

您能给我们提供更多关于数据流的信息吗? 如果接收到多个非循环请求、是否会在堆栈中排队?

在文档中、我发现支持32个3类连接。 此号码是否也适用于定制服务?

提前感谢、

Kai

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

    尊敬的 Kai:

    感谢您的咨询。

    我们的专家目前不在办公室,因此我们的答复可能会略有延迟。

    此致
    归档开发

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

    好的、期待得到答案

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

    您好 Archit Dev:

    我做了一些更多的研究,并在 R5代码中添加了打印件。

    15752: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (enter):: classId 0x0083, instanceId 1, attrId 1, service 0x4B
    15879: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (exit):: instanceId 1, data length 4, custServiceResult 1
    15887: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (enter):: classId 0x0083, instanceId 2, attrId 1, service 0x4B
    16020: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (exit):: instanceId 2, data length 4, custServiceResult 1
    16028: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (enter):: classId 0x0083, instanceId 1, attrId 1, service 0x4B
    16156: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (exit):: instanceId 1, data length 4, custServiceResult 1
    16980: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (enter):: classId 0x0083, instanceId 1, attrId 1, service 0x4B
    17110: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (exit):: instanceId 1, data length 4, custServiceResult 1
    17117: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (enter):: classId 0x0083, instanceId 2, attrId 1, service 0x4B
    17246: EtherNetIP_CipCallbacks_u8CustomServiceStackCb (exit):: instanceId 2, data length 4, custServiceResult 1

    从这些方面来看、堆栈似乎没有并行处理请求。 因此、该阻止不是由应用程序负责的、而是需要在堆栈中处理的问题。

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

    您好、Kai、

    您的应用中的循环 IO 的任务优先级是什么? 默认情况下、"数据包"任务(主要负责3类消息)和循环/IO 任务具有相同的优先级、您能将循环/IO 任务的优先级更改为更高的优先级并检查它是否解决了问题?

    此致、
    Pourya

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

    你好、Pourya、  

    循环 IO 和数据包任务的任务优先级都在 PRIO 20上。 我还针对循环 IO 任务进行了更高优先级的测试、但这并没有解决阻止问题。

    在我们的器件中、我们从 A53内核请求数据、因此 在自定义服务回调返回之前需要一些时间。 在处理堆栈中的3类连接时是否也考虑到了这一点?

    此致、

    Kai

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

    您好、Kai、

    这里我需要更详细的背景信息、您使用什么过程从 A53内核收集3类连接的数据?
    是否在某些时刻禁用了中断? 从逻辑待点来看、即使"Packet"任务被阻止了一段时间、循环/IO 任务也不应该受到影响、除非调度程序在某段时间内中断。

    是否还需要一些异步层  从另一个内核消耗/生成 I/O 数据? 是否涉及任何阻塞函数?

    此致
    Pourya

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

    你好、Pourya、  

    当然。 以下是一些见解:

    Out 应用程序在 Linux 内核上运行时、我们有两个 rpmsg 通道、一个用于循环数据、一个用于非循环数据。 使用 EI_API_CIP_setAssemblyData 和 EI_API_CIP_getAssemblyData 与汇编交换循环数据 、但不会阻止。

    非循环回调将消息中的数据发送到 Linux 内核并等待相应的响应。 当然、此处我们在回调中进行阻止、但未禁用中断。 至少不是整个时间。 我可以再次进行检查。

    BR

    Kai

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

    我再次检查了添加睡眠和返回没有 rpmsg 通信。 结果是相同的。 循环通信被阻止。 您是否能够在 EIP 样例项目中的 EVM 板`上重现此行为?

      /* Setup response data. */
      ptProduceBuf_p->pDataBuf[0] = 0x80 + serviceCode_p; // Reply service code
      ptProduceBuf_p->pDataBuf[1] = 0u;                   // Reserved (always zero)
      ptProduceBuf_p->pDataBuf[2] = 0u;                   // General status code
      ptProduceBuf_p->pDataBuf[3] = 0u;                   // Size of Additional/Extended Status
      ptProduceBuf_p->actData = CIP_RESPONSE_HEADER_SIZE;
    
      ptProduceBuf_p->actData += 8;
      ptProduceBuf_p->pDataBuf[4] = 'T';
      ptProduceBuf_p->pDataBuf[5] = 'E';
      ptProduceBuf_p->pDataBuf[6] = 'S';
      ptProduceBuf_p->pDataBuf[7] = 'T';
      ptProduceBuf_p->pDataBuf[8] = 'T';
      ptProduceBuf_p->pDataBuf[9] = 'E';
      ptProduceBuf_p->pDataBuf[10] = 'S';
      ptProduceBuf_p->pDataBuf[11] = 'T';
    
      OSAL_SCHED_sleep(100);
    
      return EI_API_CIP_SERVICE_eERR_ERR_RESPONSE;

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

    您好、Kai、

    我可以 通过 在 get_attribute 回调中引入人工延迟来重现此行为、允许我有时进一步调查此问题、我会在找到解决方案时通知您。

    此致、
    Pourya

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

    感谢您的更新

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

    您好、Kai、

    问题已解决、应与您分享解决方案。

    如果您 在使用新的库后遇到任何问题、请告诉我。

    此致、
    Pourya

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

    您好 Pourya:

     该修复程序是否会整合到工业通信 SDK 的版本10.1中?

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

    你好、Pourya、

    我应用了您发送到 ind comms sdk 9.2.0.15的补丁并进行了测试、但在启动过程中出现错误:

    9303: EtherNetIP_Stack_pruLoad (exit)::
    9304: EtherNetIP_CipCallbacks_vSetConnectionList (enter)::
    9310: EtherNetIP_CipCallbacks_vSetConnectionList (exit)::
    9315: EtherNetIP_Connection_setAssemblyList (enter)::
    9320: EtherNetIP_Connection_setAssemblyList (exit)::
    9325: EtherNetIP_Stack_pruStart (enter)::
    9330: EtherNetIP_Stack_pruStart:: Starting PRU
    9334: EtherNetIP_Stack_pruStart (exit)::
    9338: EtherNetIP_CipCallbacks_configure (enter)::
    9343: ERROR: EtherNetIP_CipCallbacks_configure (EtherNetIP_CipCallbacks.c: 556):: EI_API_CIP_setInstanceServiceFunc; Err: 0x38020402
    9355: ERROR: EtherNetIP_Stack_vMainTask (EtherNetIP_StackConfigure.c: 858):: Configure callbacks Error: 0x38020402
    9366: EtherNetIP_Configuration_u32MarkComplete (exit):: result 0x38020402
    9376: EtherNetIP_Configuration_u32Finalize (enter)::
    9378: EtherNetIP_Stack_vMainTask:: finalize interrupt recv
    9384: Boot mode is DHCP
    
    9387: LLDP Data Table Object should support at least 8 instances.
    
    9392: kbEI_LLDP_datatable_init: 0x80000000 EC is fatal=1, SRC:kbEI_LLDP_datatable_init:64
    
    9400: ERROR: EtherNetIP_CipCallbacks_vOsErrorHandlerCb (EtherNetIP_CipCallbacks.c: 1036)::
    ###### OS Error: 0x80000000, fatal: TRUE ######
    
    9413: EtherNetIP_Acyclic_Glue_vStackErrorIndicatedCallback (enter):: errorCode 0x80000000, fatal TRUE
    9422: EtherNetIP_Acyclic_Glue_vStackErrorIndicatedCallback (exit)::
    10378: EtherNetIP_Configuration_u32Finalize (exit):: result 0xFFFFFFFE

    您可以查看日志吗? 该补丁是否可能基于更新的 SDK?

    此致

    Kai

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

    你好、Pourya、  

    您共享的版本解决了我们器件中的问题。

    感谢您的帮助