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.

[参考译文] EtherCA-AM243X:MCU-PLUS-SDK 错误计数器

Guru**** 2451970 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1476552/mcu-plus-sdk-am243x-ethercat-error-counters

器件型号:AM243X - MCU-PLUS-SDK

工具/软件:

大家好!

目前我们有一些关于 EtherCAT 错误计数器的 challanges/问题。

如果在线路拓扑中连接了多个器件、并且其中一个从器件置于 EtherCAT 的 INIT SYSTEM 状态、则计数器似乎会递增一次。

当其中一个器件仍处于初始化状态时、计数器也会不时随机递增。  

我所说的计数器在这里描述的第15页 https://www.ethercat.org/download/documents/ethercat_diagnosis_for_users.pdf

我们跟踪这些计数器以便在 PRU 固件中实现。  

我还联系了 ETG、该 ETG 确认、更改 EtherCAT 从站的系统状态不应在该计数器上包含任何内容。  

这是否是 PRU 固件当前实现的已知问题?  

TI 是否可以使用评估板上的参考实现重现此问题?

谢谢

Fabian

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

    尊敬的 Fabian:

    请问您使用哪个 SDK 版本进行这一多个子器件测试?

    此致、
    Aaron

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

    您好 Aaron、

    当然、我们目前正在使用 Industrial Coms SDK 版本09.02.00

    此致  

    Fabian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    当其中一个器件仍处于初始化状态时、计数器也会不时随机递增。  [/报价]

    哪些特定的计数器会递增? 是否存在 Wireshark 日志?

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

    RX 错误计数器。 请参阅上面的内容、更详细地了解帧错误(寄存器0x0300和0x0302)计数器。 我可以尝试制作一个 Whireshark 今天,并发送给它。 我们可以切换到电子邮件吗?  

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

    尊敬的 Fabian:

    因此、我尝试了  Industrial Coms SDK 版本09.02.00.15中的 EtherCAT Beckhoff 演示、并将两个子器件在线式拓扑连接到 TwinCAT。 我使用自由运行模式以及直流同步模式进行了测试(在50us 的周期时间)、当我将其中一个子器件初始化时、我看不到错误寄存器(0x0300:0x0303)正在递增、从而使主器件和另一个子器件保持在 OP 状态。

    附加相同的 Wireshark 日志: e2e.ti.com/.../EtherCAT_5F00_09_5F00_02_5F00_00_5F00_15_5F00_MultiDevice_5F00_Test_5F00_50us.zip

    如果我遗漏了问题的复制内容、请告诉我。

    此致。
    Aaron

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

    嗨、Aaron、我们还会在我们这边创建一些 Wireshark 日志并提供它们。  

    感谢您的澄清!

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

    嗨 Aaron、你能用3个子设备做同样的测试、把中间的一个子设备放入 init 吗?

    谢谢!  

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

    当然是 Fabian。 我会尝试一下、并通过 EOD 更新您。

    此致、
    Aaron

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

    您好 Aaron、
    这是 Wireshark 的日志。  

    e2e.ti.com/.../EtherCat_5F00_Wireshark_5F00_RxError_5F00_Counter.zip

    我们配置了3个 IO-Link 主站内联拓扑。 此外、通过观察我们在 ST 代码中使用的行为来读取 RxError。

    etcreadmemory1(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_XG5_538_1B5_Z067.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0310,
         iSize := 2, pDest := ADR(LinkError1), udiTimeout := 500);
    etcreadmemory2(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_XG5_538_1B5_Z067.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0300,
         iSize := 4, pDest := ADR(RxError1), udiTimeout := 500);
    	 
    
    etcreadmemory3(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_XG5_538_1B5_Z067_1.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0310,
         iSize := 2, pDest := ADR(LinkError2), udiTimeout := 500);
    etcreadmemory4(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_XG5_538_1B5_Z067_1.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0300,
         iSize := 4, pDest := ADR(RxError2), udiTimeout := 500);
    
    etcreadmemory5(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_ECT_508_105_Z067.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0310,
         iSize := 2, pDest := ADR(LinkError3), udiTimeout := 500);
    etcreadmemory6(xExecute := xRead, usiCom:=1, wSlaveAddress := .BNI_ECT_508_105_Z067.PhysSlaveAddr,
         xAutoIncAdr := FALSE, xBroadcast := FALSE, uiMemOffset := 16#0300,
         iSize := 4, pDest := ADR(RxError3), udiTimeout := 500);

    结果如下:

    我希望它能帮助您重现问题。  

    此致、

    Shahin

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

    尊敬的 Shahin:

    我想说明一下、您使用哪个示例进行此操作?

    此致、
    Aaron

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

    您好 Aaron、

    我们未使用任何 TI 示例、而是使用我们自己的实现、但使用了 Sitara AM24处理器和 SDK 9.02中的 PRU FW。

    此致

    Fabian

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

    尊敬的 Fabian:

    根据日志、0x302 ESC 寄存器似乎正在递增。 根据寄存器说明、当检测到 RX 错误时、该错误计数器会递增。

    建议检查硬件或 PHY 是否存在任何可能影响 EtherCAT 通信的噪声因素。

    此致、
    Aaron

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

    嗨、Aaron、我们以相应的方式接地了我们的模块。 最后一个模块是较旧版本的 IO-Link 主站(与另一个供应商的处理器)、它位于同一行中、不会显示此行为。 我们只能在基于 Sitara 的 IO-Link 网关中看到它。
    能否用3个器件重现这个问题?

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

    尊敬的 Fabian:

    您能否在测试期间监测 PHY 的 RX_ERR 引脚、或者监测 PHY 的 RX_ERR 计数器寄存器(TI PHY 中的0x15偏移)。

    您可以用3个器件再现它吗?
    • 我来看看如何重现这个问题。

    此致、
    Aaron

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

    尊敬的 Fabian:

    嗨、Aaron、您能用3个子器件执行相同的测试并将中间一个子器件放入 init 吗?
    • 因此、我使用默认的 EtherCAT Beckhoff SSC 演示进行了这方面的尝试、并且在将中间设备置于初始化状态时错误计数器没有递增。
    • 我可以尝试的一件事是在我们这边复制类似的应用程序、并使用数据包播放器播放您看到错误的数据包。
    • 对于上述情况、您能否提供用于 EtherCAT 通信的 FMMU 配置和完整的 Wireshark 日志(从初始化到 OP、直至观察到错误计数器递增)?

    此致、
    Aaron

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

    您好 Aaron、
    在这里、我附加了完整的 Wireshark 日志。

    对于上述内容、您能否提供用于 EtherCAT 通信的 FMMU 配置和完整的 Wireshark 日志(从初始化到 OP、直至观察到错误计数器增量)?

    e2e.ti.com/.../EtherCat_5F00_Wireshark_5F00_RxError_5F00_Counter_5F00_2.zip

    此致

    Shahin

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

    感谢您发送编修。 我将尝试在这里重现问题。

    您是否可以在测试期间监测来自 PHY 的 RX_ERR 引脚、或监测 PHY 的 RX_ERR 计数器寄存器(TI PHY 中的0x15偏移)。
    • 同时,你能看看这一点,并更新我们的行为吗?

    此致、
    Aaron

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

    您好 Aaron、

    谢谢!

    我们将尝试设置一些器件、在这里监控 RX_ERR。  

    您认为我们帮助您解决问题的电话吗?

    此致、

    Fabian

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

    尊敬的 Fabian:

    您认为在我们向您展示问题的地方我们有什么帮助吗?
    • 让我尝试在我的环境中重现问题的环境。 如果我无法在此处重现呼叫、我们可以计划呼叫。

    同时、您是否也可以在 ESC 寄存器中共享该值? 我指的是存储器空间0x30090000到0x30090ECF 中的值。

    此致、
    Aaron

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

    尊敬的 Fabian、Shahin:

    根据您共享的日志中的 FMMU 配置、我们创建了具有以下拓扑的复制环境:

    PC <->ET2000 <->AM243x-LP (SD1) <->AM243x-LP (SD2)<->AM243x-LP (SD3)

    SD1:
    InputSize   - 32字节
    OutputSize - 2个字节

    SD2:
    InputSize   - 32字节
    OutputSize - 2个字节

    SD3:
    InputSize   - 16字节
    OutputSize - 0字节

    在回放数据包(EtherSD2_COUNTER_2)后、我没有看到 RX 错误计数器寄存器在 Cat_Wireshark_Rx 置为初始化时递增。

    附加相同的日志: e2e.ti.com/.../Baluff_5F00_3_5F00_Device_5F00_Issue_5F00_Reproduction_5F00_Playback.pcapng

    我们将尝试设置一些设置、用于监控 RX_ERR。  [/报价]
    • 如果您有任何更新、请告诉我。

    此致、
    Aaron

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

    您好 Aaron、

    您可以在测试期间监测来自 PHY 的 RX_ERR 引脚、或监测 PHY 的 RX_ERR 计数器寄存器(TI PHY 中的0x15偏移)。
    • 我们按照您的建议监测了 RX_ERR 引脚、但测试时示波器上看不到信号。  
    • 我们还使用 位于 MDIO_V0.c 的 MDIO_phyRegRead 方法监控 RX_ERR 计数器寄存器 从位于  ectappl.c 中的主循环调用的方法 当我们停止程序读取计数器值时、计数器值为0。 但是、当在  MDIO_phyRegRead 方法内放置断点时、我们会注意到 RX_ERR 计数器中有一些值。  我们无法理解价值的含义。 该值与在 Codeysys 读取的值不同。  
    与此同时、您是否也可以在 ESC 寄存器中共享该值? 我指的是存储空间0x30090000到0x30090ECF 中的值。

    我在这里附加了存储器值 e2e.ti.com/.../ESC_5F00_registers_5F00_0x30090000_5F00_0x30090ECF.zip

    非常感谢

    此致

    Shahin

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

    尊敬的 Shahin:

    计数器值为0、当我们停止程序时、读取计数器值。 但是、当在  MDIO_phyRegRead 方法内放置断点时、我们会注意到 RX_ERR 计数器中有一些值。
    • 这是否始终是这种情况、即每次命中断点时、 RX_ERR 计数器都会递增? 建议您在终端/控制台中记录计数器值以进行适当监控、使其与 RX_ERR 引脚读数对齐。

    我已在此处附加内存值 ESC_REGISTERS_0x30090000_0x30090ECF.zip.
    • 这不是可读格式。 请提供.dat 文件中的寄存器转储。 可以通过选择来获得该值 TI 数据 AS 文件类型  在"View"->"Memory Browser"->"Save Memory:  
      •   
    • 然后选择 System_View  AS 存储器页 在下一个窗口中:

    此致、
    Aaron

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

    您好 Aaron、

    是否始终如此、即每次达到断点时、 RX_ERR 计数器都会递增? 建议您在终端/控制台中记录计数器值以进行适当的监测、使其与 RX_ERR 引脚读数
    保持一致

    是的、是的。 我会再次尝试您建议的方法、并告诉您结果。  

    不幸的是,本周我不再在办公室。 我将在下周向您提供这些数据

    此致

    Shahin

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

    尊敬的 Shahin:

    不幸的是、本周我在办公室了。 我在下周向您提供这一天

    好的、没问题。

    此致、
    Aaron

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

    您好 Aaron、

    是否始终如此、即每次达到断点时、 RX_ERR 计数器都会递增? 建议您在终端/控制台中记录计数器值以进行适当监控、使其与 RX_ERR 引脚读数保持一致。

    控制台输出显示计数器值0、但在 CODESYS 中有非零值。

    这是保存为 TI 数据的存储器寄存器值 e2e.ti.com/.../1526.ESC_5F00_registers_5F00_0x30090000_5F00_0x30090ECF.zip

    从第2个节点保存存储器寄存器值。  

    此致

    Shahin

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

    尊敬的 Shahin:

    控制台输出显示计数器值0、但在 CODESYS 中有非零值。
    • 谢谢。 已注意。 您也试过了
    此处是保存为 TI 数据的存储器寄存器值、 1526.ESC_REGISTERS_0x30090000_0x30090ECF.zip
    • 这些值看起来不正确。 我在前4个字节中看不到 EtherCAT 固件版本、总体而言、它看起来与预期值不同。 您是否在使用 ICSSG0或 ICSSG1实例实现 EtherCAT?

    您还可以在以下寄存器空间中提供值:

    • PRU_ICSSG RAM:0x30010000 - 0x30010ECF (对于 ICSSG0)         或         0x30090000 - 0x30090ECF (用于 ICSSG1)  
    • PRU_MII_RT_MII_RT: 0x30032000至0x3003206C  (用于 ICSSG0)       或          0x300B2000至 0x300B206C (用于 ICSSG1)
    • PRU_MDIO_MDIO:0x30032400至0x30032484  (适用于 ICSSG0)         或          0x300B2400至0x300B2484 (用于 ICSSG1)

    此致、
    Aaron

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

    您好 Aaron、

    这些值看起来不正确。 我在前4个字节中看不到 EtherCAT 固件版本、总体而言、它看起来与预期值不同。 您是否在使用 ICSSG0或 ICSSG1实例实现 EtherCAT?

    我们正在使用  ICSSG1实例。

    、然后选择 System_View  AS 存储器页 在下一个窗口中

    Code Composer Studio 中缺少 System_View 选项

    0x30090000 - 0x30090ECF (用于 ICSSG1) 


    e2e.ti.com/.../ESC_5F00_registers_5F00_0x30090000_5F00_0x30090ECF.dat

    [报价 userid="550875" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1476552/mcu-plus-sdk-am243x-ethercat-error-counters/5734249 #5734249"]0x300B2000至 0x300B206C (用于 ICSSG1)


    e2e.ti.com/.../ESC_5F00_registers_5F00_0x300B2000_5F00_0x300B206C.dat

    [报价 userid="550875" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1476552/mcu-plus-sdk-am243x-ethercat-error-counters/5734249 #5734249"]0x300B2400至0x300B2484 (用于 ICSSG1)

    e2e.ti.com/.../ESC_5F00_registers_5F00_0x300B2400_5F00_0x300B2484.dat

    此致

    Shahin

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

    感谢您发送编修。

    查看 MII_RT 寄存器、我看到设置了 MII_RT_RX_ERR0的位2:

    如说明中所述、这指向帧总字节计数小于定义的值这一事实。 这看起来主设备没有按预期传输数据?

    此外、是否可以使用其他主设备进行测试? 并且可以使用 TAP 捕获 EtherCAT 通信、例如 ET2000 |工业以太网多通道探头。 由于寄存器0x0302不断递增、因此对应于反向路径(端口1处的 Rx)。 因此、可将抽头保留在中间、查看是否生成了 CRC、如果是、则是哪个器件导致问题。   

    此致、
    Aaron

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

    您好 Aaron、

    感谢您指出可能的问题。  

    此外、是否可以使用其他主设备进行测试?

    当然,我将尝试重现 Backhoff PLC 的问题,我将与您分享结果。  

    如说明中所述、这表明帧总字节计数小于定义的值。 这看起来主设备没有按预期传输?

    同时、您还能告诉我可以在哪里找到这些内存说明、以便我能够了解这些说明并了解背景情况吗?

    并且是否可以使用 TAP 捕获 EtherCAT 通信

    如果他们有、我会在我的团队中进行搜索、然后我会使用并进行检查。 我会向您提供反馈。

    此致

    Shahin

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

    尊敬的 Shahin:

    在此期间、您还能告诉我在哪里可以找到这些内存描述、以便我能够浏览它并了解上下文吗?
    我会在我的团队中搜索它、如果他们有的话、我会使用它并进行检查。 我将向您提供反馈。
    • 没问题。 谢谢你。

    此致、
    Aaron

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

    您好 Aaron、

    、并且可以使用抽头来捕获 EtherCAT 通信-例如 ET2000 |工业以太网多通道探测

    很抱歉回复您晚了。 虽然它花了一点时间,我能够管理包捕获设备 https://www.hilscher.com/de/produkte/netzwerk-und-kommunikationsdiagnose/netzwerkdiagnose/nanl-b500g-re  .

    我已使用以下线路连接来连接三个不同的 EtherCAT 主设备以捕获 EtherCAT 通信。

    作为 EtherCAT 主站、我使用了 CODESYS (软 PLC)、TwinCat3.1 (软 PLC)和 Omron NJ501。  

    捕获数据包位于 e2e.ti.com/.../RX_5F00_Error.zip

    RX_ERROR 计数器仅在使用 CODESYS 时才会增加。  

    在 TwinCAT 和 Omron 中、我看不到这些计数器有任何增量。  

    此外、 当我检查 CODESYS 的捕获数据包时、列表中有一些非 EtherCAT 帧。 这是否是计算 RX_ERROR 计数器计数的原因?  

    此致

    Shahin  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、 当我检查 CODESYS 的捕获数据包时、列表中有一些非 EtherCAT 帧。 这是否是计算 RX_ERROR 计数器计数的原因?  [/报价]

    是的、没错。 根据 DL Control (0x100)寄存器设置、如果设置位0、则非 ECAT 帧将被销毁