如何解决使用TwinCAT时EtherCAT网络出现“Sync Manager Watchdog”报错
Hello大家好,今年我们HMS技术服务工程师加入到公司知乎账号内容创作中,今后我们将跟大家分享一些工业通讯技术、OT/IT解决方案以及通讯协议等相关知识,也会记录一些平时在工作中帮助客户解决问题的过程。
今天这篇文章《如何解决使用TwinCAT时EtherCAT网络出现“Sync Manager Watchdog”报错》就是记录解决客户问题的一个全过程。让我们从问题入手到分析最后再到问题的解决。
客户设备上搭载了我们EtherCAT网络通讯板卡,整套设备接入最终用户的倍福控制系统中。该系统已经连接了50多台EtherCAT从站设置,客户的设备接在网络的最后。
刚开始调试时一切正常,但是有天突然发现,在系统正常运行时,如果把连接到客户设备的网线拔掉再重新插上时,设备有时可以进入OP状态,有时无法进入OP状态,且无法进入时设备报sync manager watchdog错误,并且故障的出现是随机的,毫无规律可言。

首先由于设备是可以进入OP状态且正常通讯的,排除了模块自身的硬件故障。
其次我们检查了客户的配置和组态,没有发现问题。
接着由于该通讯模块在很多客户现场中使用,都可以正常工作,从来没有出现过该现象。我们考虑先关闭看门狗看看是否还会报错,做了以下尝试:
1.在TwinCAT中,在设备的Advanced Settings中关闭SM Watchdog,将下图中红色方框中的选项勾选掉。

结果一样,还是会在插拔设备网线时有时能进入OP,有时报SM看门狗错误。
2.将PLC任务周期减小
因为看门狗超时,是指在看门狗时间内主站没有发送数据给从站,从站报看门狗超时。
将PLC任务周期减小,依据没有效果,结果和之前一样。
3.在设备ESI中关闭看门狗功能
将设备ESI中的Outputs Sm2的控制字改为0x24,关闭看门狗功能。

SM ControlByte含义如下:

关闭后,结果还是一样,依据会报SM 看门狗错误。
此时,我们意识到客户的问题应该与看门狗无关,但仅从TwinCAT显示的错误信息中我们无法定位问题,必须要抓取底层数据报文来进行分析。
通过分析抓取到的拔掉网线重连成功和拔掉网线重连不成功的报文,很快就找到了不同:

上面是拔掉网线重连成功进入OP的报文。

这个是拔掉网线重连无法进入OP的报文。
设备的physical address是0x41f,从上面这2个报文中可以看到,设备进入SAFEOP之后和主站发送状态切换进入OP之间 (黑色标记的两条报文间),可以成功进入OP的报文比不能进入OP的报文要多两条(红色方框标记)。
仔细看这2条报文,这是主站发送给从站的带有逻辑读写的报文。

可是为什么在SAFEOP和OP之间必须要有逻辑读写操作呢,我们开始查EtherCAT协议手册,在协议的Specification-Part 5,Application Layer service definition中找到了关于这条报文的解释。

总结一下也就是说在设备从SAFEOP状态进入OP之间,需要主站提供process data服务,否则从站停留在SAFEOP状态,并且错误标志位置为TRUE。
找到了问题在哪,也有了理论支撑。可是如何解决呢,这看起来是主站处理问题,于是我们在倍福的官网以及搜索网站查找类似问题,最终在我们公司的知识库中找到一篇文章正与我们遇到的问题相契合。
原文内容如下:
问题
当 EtherCAT 主站命令从站进入 OPERATIONAL(运行)状态时,可能会出现从站卡在 ERROR SAFEOP 状态的情况。
回答
*为了避免这一问题,可以在从站的 EtherCAT 高级设置中激活 “Wait for WcState is Ok” 选项:

背景介绍
在 TwinCAT 中,标志 WcState(工作计数器状态)协调两个独立运行的状态机。
一方面,主站通过 EtherCAT 状态机控制每个从站的状态(其状态有 INIT、PREOP、SAFEOP、OP)。
另一方面,PLC 的状态机需要在从站进入 OP 状态后立即将输出过程数据设置为初始值。
通过激活 TwinCAT 选项 “Wait for WcState is Ok”,EtherCAT 主站在将从站状态转换为 OP 之前,会先等待输出过程数据被设置。
如果缺少该选项,可能会出现“‘SAFEOP to OP!’ failed!” 错误,从站设备卡在 SAFEOP 状态。 SAFEOP 状态只允许读取输入过程数据。 由于从站设备无法接收输出过程数据,因此会触发同步管理器看门狗超时。
OK,通过文章中的背景介绍,让我们明白了为什么把看门狗都关了设备还会报看门狗超时错误。同时也找到了解决办法,需要在TwinCAT中勾选“Wait for WcState is Ok”选项。
客户测试后也验证了此方法是正确可行的。
关于WcState的含义和使用
The variables under WcState (working counter state) use a working counter to indicate whether the EtherCAT slave takes part in the cyclic process data traffic successfully and error-free.
The variable WcState of an EtherCAT slaves should therefore always be evaluated.
The variables are only displayed, if the EtherCAT slave is added via an EtherCAT master in TwinCAT.

The following table shows which values the WcState variable can assume:
| Value | Description |
|---|---|
| 0 | Valid real-time communication in the last cycle |
| 1 | Invalid real-time communication |
Invalid real-time communication may affect the process data of the other EtherCAT slaves in the same SyncUnit:
The variable InputToggle indicates whether a new valid telegram was received. The value is incremented by one after each successful cycle.

Auto Restore States: If this checkbox is checked, the EtherCAT master tries to restore the state of the EtherCAT slave automatically. If the EtherCAT slave device changes from an error state (ERR SAFE-OP, ERR OP etc.) to a valid state (SAFE-OP, OP etc.), the EtherCAT master tries to set the device to the state which the master has currently memorized for the slave device. This memorized state is the last regularly reached state of the slave device.
Wait for WcState is Ok: If this checkbox is checked, the Auto Restore States is not performed until the WcState is OK again.
至此问题终于解决,整个过程给大家留下了深刻的印象,从尝试解决到报文分析,再找到理论支撑最后寻找解决方法成功解决问题,当然我们的产品还是非常可靠的。
如果您对此通讯板卡感兴趣,请点击下方链接:
https://www.hms-networks.cn/p/1-01-0320-21110-ixxat-inpact-ect-slave-pcie

最后大家如果有关于自动化通讯一些,如EtherCAT, PROFIBUS, PROFINET, EtherNet/IP, Modbus, Modbus TCP, CAN, CANopen等等相关的技术问题,欢迎在知乎留言与我讨论。