本文介绍了在使用TwinCAT调试EtherCAT网络时,从站设备从SAFEOP状态进入OP状态时,出现“Sync Manager Watchdog”超时问题。
适用产品
所有带EtherCAT从站接口的HMS产品
问题
当 EtherCAT 主站命令从站进入 OPERATIONAL(运行)状态时,可能会出现从站卡在 ERROR SAFEOP 状态的情况,并在 TwinCAT 中显示如下错误信息:
回答
为了避免这一问题,可以在从站的 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 状态只允许读取输入过程数据。 由于从站设备无法接收输出过程数据,因此会触发同步管理器看门狗超时。
通过激活 TwinCAT 选项 “Wait for WcState is Ok”,EtherCAT 主站在将从站状态转换为 OP 之前,会先等待输出过程数据被设置。
如果缺少该选项,可能会出现“‘SAFEOP to OP!’ failed!” 错误,从站设备卡在 SAFEOP 状态。 SAFEOP 状态只允许读取输入过程数据。 由于从站设备无法接收输出过程数据,因此会触发同步管理器看门狗超时。
如果您是设计 Anybus CompactCom 嵌入式接口的开发人员,可以在 ESI 文件中为从站激活该选项,作为 TwinCAT 供应商的特定选项。 请参阅下面的 Anybus CompactCom 40 EtherCAT ESI 文件片段:
<Devices>
<Device Physics="YY">
<Type ProductCode="#x00000034" RevisionNo="#x00010009">Anybus-CC EtherCAT</Type>
<Name LcId="1033"><![CDATA[Anybus-CC EtherCAT]]></Name>
<Info>
<Mailbox>
<Timeout>
<RequestTimeout>100</RequestTimeout>
<ResponseTimeout>6000</ResponseTimeout>
</Timeout>
</Mailbox>
<!-- Activate "Wait for WcState is Ok" in TwinCAT -->
<VendorSpecific>
<ErrorHandling>
<AutoRestoreAfterWcOk>1</AutoRestoreAfterWcOk>
</ErrorHandling>
</VendorSpecific>
<!--Activate "Wait for WcState is Ok" in TwinCAT (end) -->
</Info>
<GroupType>Embedded modules</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>