工具/软件:
你(们)好
我们的一位客户抱怨节点地址突然更改、因此我们遇到了问题。
该问题仅在系统正确配置并运行后的某个时间出现、我们看到寄存器0x0012从原始节点地址更改为0。
我们希望确保没有不必要的 PRU 复位。 是否有办法进行检查? 这种情景听起来可能吗?
我们使用 ICSSG0来运行 ECAT 协议栈
谢谢您、
Sahar Schwartz
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.
工具/软件:
你(们)好
我们的一位客户抱怨节点地址突然更改、因此我们遇到了问题。
该问题仅在系统正确配置并运行后的某个时间出现、我们看到寄存器0x0012从原始节点地址更改为0。
我们希望确保没有不必要的 PRU 复位。 是否有办法进行检查? 这种情景听起来可能吗?
我们使用 ICSSG0来运行 ECAT 协议栈
谢谢您、
Sahar Schwartz
尊敬的 Sahar:
Unknown 说:我们要确保没有不必要的 PRU 复位。 是否有办法进行检查? 这种情景听起来可能?
如果在0x012发生更改后正在处理非 FPxx 数据包(WKC 递增)、则意味着 PRU 仍在运行并处理传入的数据包。 此外、您能否共享此场景的 Wireshark 日志?0x010寄存器正在被0覆盖? 观察到这种情况的频率有多高?
此外、您可以参考 ICSSG_PRU_STATUS 寄存器(地址偏移0x30022004和0x30024004)以获取程序计数器值、然后查看 PRU 是否仍在运行:
此致、
Aaron
嗨、Aaron。
感谢您的答复。
确保0x0103.bit0设置为激活0x012:0x013。
我真的尝试过。 在将状态更改为 OP 之前、我向该位写入1、并且控制器将节点设置为 OP 后、该位再次被覆盖为0。
我可以尝试在 OP 期间将其设置为1。 会有同样的影响吗?
此外、您能否分享此场景的 Wireshark 日志?是否也是0x010寄存器被0覆盖? 观察到这种情况的频率有多高?
这个问题不是很频繁和难以"抓住"。 这就是为什么我们还没有 Wireshark 日志。 我们希望找到这个问题的复制步骤,然后我们就能得到它们。
关于0x010寄存器、它不显示0、但更改为一些垃圾值。 寄存器0x012有时显示为0、有时显示为垃圾(不同于0x010)
您能否分享一个链接、指向您从中获取状态寄存器描述的文档?
尊敬的 Sahar:
我可以尝试在 OP 中将其设置为1。 它会有同样的影响吗?
这个问题不是很频繁、很难"捕捉"。 这就是为什么我们还没有 Wireshark 日志。 我们希望找到这个问题的复制步骤,然后我们就能得到它们。 [/报价]
- 我知道误差频率非常低。
- 我们必须查看谁覆盖了这些值、是 EtherCAT 主设备、EtherCAT 子设备协议栈还是 EtherCAT 子设备固件。
- 如果 Wireshark 日志可用、则可以排除 EtherCAT 主设备干预。
- 可通过在地址0x30090103处添加硬件观察点来检查 EtherCAT 子设备栈干预(假设您正在使用 ICSSG1实例)。 您可以使用以下步骤添加观察点:
- 右键点击"Breakpoints"窗口、然后选择 Breakpoint -> Hardware Watchpoint。
- 在 Hardware Watchpoint 框中、输入地址 0x30090103 在"位置"字段中、然后选择 写入 进行存储器编程。
- 您可以对覆盖以排除堆栈干预的所有地址空间执行此操作。
- 通过上述检查的状态、我们可以看到固件是否干扰。
另外、当您能够重现此问题时、请提供 ESC 寄存器空间的完整内存转储。 此外、您使用哪个 EtherCAT 主设备进行测试? 这是同一个在 这个线程中提到的 吗?
此致、
Aaron