如何解決使用TwinCAT時(shí)EtherCAT網(wǎng)絡(luò)出現(xiàn)報(bào)錯(cuò)
如何解決使用TwinCAT時(shí)EtherCAT網(wǎng)絡(luò)出現(xiàn)“Sync Manager Watchdog”報(bào)錯(cuò)
Hello大家好,今年我們HMS技術(shù)服務(wù)工程師加入到公司知乎賬號(hào)內(nèi)容創(chuàng)作中,今后我們將跟大家分享一些工業(yè)通訊技術(shù)、OT/IT解決方案以及通訊協(xié)議等相關(guān)知識(shí),也會(huì)記錄一些平時(shí)在工作中幫助客戶解決問題的過程。
今天這篇文章《如何解決使用TwinCAT時(shí)EtherCAT網(wǎng)絡(luò)出現(xiàn)“Sync Manager Watchdog”報(bào)錯(cuò)》就是記錄解決客戶問題的一個(gè)全過程。讓我們從問題入手到分析最后再到問題的解決。
1.客戶遇到的問題
客戶設(shè)備上搭載了我們EtherCAT網(wǎng)絡(luò)通訊板卡,整套設(shè)備接入最終用戶的倍福控制系統(tǒng)中。該系統(tǒng)已經(jīng)連接了50多臺(tái)EtherCAT從站設(shè)置,客戶的設(shè)備接在網(wǎng)絡(luò)的最后。
剛開始調(diào)試時(shí)一切正常,但是有天突然發(fā)現(xiàn),在系統(tǒng)正常運(yùn)行時(shí),如果把連接到客戶設(shè)備的網(wǎng)線拔掉再重新插上時(shí),設(shè)備有時(shí)可以進(jìn)入OP狀態(tài),有時(shí)無法進(jìn)入OP狀態(tài),且無法進(jìn)入時(shí)設(shè)備報(bào)sync manager watchdog錯(cuò)誤,并且故障的出現(xiàn)是隨機(jī)的,毫無規(guī)律可言。

2.嘗試解決
首先由于設(shè)備是可以進(jìn)入OP狀態(tài)且正常通訊的,排除了模塊自身的硬件故障。
其次我們檢查了客戶的配置和組態(tài),沒有發(fā)現(xiàn)問題。
接著由于該通訊模塊在很多客戶現(xiàn)場(chǎng)中使用,都可以正常工作,從來沒有出現(xiàn)過該現(xiàn)象。我們考慮先關(guān)閉看門狗看看是否還會(huì)報(bào)錯(cuò),做了以下嘗試:
1.在TwinCAT中,在設(shè)備的Advanced Settings中關(guān)閉SM Watchdog,將下圖中紅色方框中的選項(xiàng)勾選掉。
結(jié)果一樣,還是會(huì)在插拔設(shè)備網(wǎng)線時(shí)有時(shí)能進(jìn)入OP,有時(shí)報(bào)SM看門狗錯(cuò)誤。

2.將PLC任務(wù)周期減小
因?yàn)榭撮T狗超時(shí),是指在看門狗時(shí)間內(nèi)主站沒有發(fā)送數(shù)據(jù)給從站,從站報(bào)看門狗超時(shí)。
將PLC任務(wù)周期減小,依據(jù)沒有效果,結(jié)果和之前一樣。
3.在設(shè)備ESI中關(guān)閉看門狗功能
將設(shè)備ESI中的Outputs Sm2的控制字改為0x24,關(guān)閉看門狗功能。

SM ControlByte含義如下:

關(guān)閉后,結(jié)果還是一樣,依據(jù)會(huì)報(bào)SM 看門狗錯(cuò)誤。
此時(shí),我們意識(shí)到客戶的問題應(yīng)該與看門狗無關(guān),但僅從TwinCAT顯示的錯(cuò)誤信息中我們無法定位問題,必須要抓取底層數(shù)據(jù)報(bào)文來進(jìn)行分析。
3.通過報(bào)文進(jìn)行分析
通過分析抓取到的拔掉網(wǎng)線重連成功和拔掉網(wǎng)線重連不成功的報(bào)文,很快就找到了不同:

上面是拔掉網(wǎng)線重連成功進(jìn)入OP的報(bào)文。

這個(gè)是拔掉網(wǎng)線重連無法進(jìn)入OP的報(bào)文。
設(shè)備的physical address是0x41f,從上面這2個(gè)報(bào)文中可以看到,設(shè)備進(jìn)入SAFEOP之后和主站發(fā)送狀態(tài)切換進(jìn)入OP之間 (黑色標(biāo)記的兩條報(bào)文間),可以成功進(jìn)入OP的報(bào)文比不能進(jìn)入OP的報(bào)文要多兩條(紅色方框標(biāo)記)。
仔細(xì)看這2條報(bào)文,這是主站發(fā)送給從站的帶有邏輯讀寫的報(bào)文。

可是為什么在SAFEOP和OP之間必須要有邏輯讀寫操作呢,我們開始查EtherCAT協(xié)議手冊(cè),在協(xié)議的Specification-Part 5,Application Layer service definition中找到了關(guān)于這條報(bào)文的解釋。
總結(jié)一下也就是說在設(shè)備從SAFEOP狀態(tài)進(jìn)入OP之間,需要主站提供process data服務(wù),否則從站停留在SAFEOP狀態(tài),并且錯(cuò)誤標(biāo)志位置為TRUE。
4.解決問題
找到了問題在哪,也有了理論支撐。可是如何解決呢,這看起來是主站處理問題,于是我們?cè)诒陡5墓倬W(wǎng)以及搜索網(wǎng)站查找類似問題,最終在我們公司的知識(shí)庫中找到一篇文章正與我們遇到的問題相契合。
原文內(nèi)容如下:
問題
當(dāng) EtherCAT 主站命令從站進(jìn)入 OPERATIONAL(運(yùn)行)狀態(tài)時(shí),可能會(huì)出現(xiàn)從站卡在 ERROR SAFEOP 狀態(tài)的情況。
回答
*為了避免這一問題,可以在從站的 EtherCAT 高級(jí)設(shè)置中激活 “Wait for WcState is Ok” 選項(xiàng):

背景介紹
在 TwinCAT 中,標(biāo)志 WcState(工作計(jì)數(shù)器狀態(tài))協(xié)調(diào)兩個(gè)獨(dú)立運(yùn)行的狀態(tài)機(jī)。
一方面,主站通過 EtherCAT 狀態(tài)機(jī)控制每個(gè)從站的狀態(tài)(其狀態(tài)有 INIT、PREOP、SAFEOP、OP)。
另一方面,PLC 的狀態(tài)機(jī)需要在從站進(jìn)入 OP 狀態(tài)后立即將輸出過程數(shù)據(jù)設(shè)置為初始值。
通過激活 TwinCAT 選項(xiàng) “Wait for WcState is Ok”,EtherCAT 主站在將從站狀態(tài)轉(zhuǎn)換為 OP 之前,會(huì)先等待輸出過程數(shù)據(jù)被設(shè)置。
如果缺少該選項(xiàng),可能會(huì)出現(xiàn)“‘SAFEOP to OP!’ failed!” 錯(cuò)誤,從站設(shè)備卡在 SAFEOP 狀態(tài)。 SAFEOP 狀態(tài)只允許讀取輸入過程數(shù)據(jù)。 由于從站設(shè)備無法接收輸出過程數(shù)據(jù),因此會(huì)觸發(fā)同步管理器看門狗超時(shí)。
OK,通過文章中的背景介紹,讓我們明白了為什么把看門狗都關(guān)了設(shè)備還會(huì)報(bào)看門狗超時(shí)錯(cuò)誤。同時(shí)也找到了解決辦法,需要在TwinCAT中勾選“Wait for WcState is Ok”選項(xiàng)。
客戶測(cè)試后也驗(yàn)證了此方法是正確可行的。
關(guān)于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:
Invalid real-time communication may affect the process data of the other EtherCAT slaves in the same SyncUnit:
In the event of an invalid WcState, outputs can still be switched by the PLC, in order to ensure a safe state of the system.

Inputs freezes and show the last valid value. This means that old values are displayed, if the WcState assumed the value 1.
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.
至此問題終于解決,整個(gè)過程給大家留下了深刻的印象,從嘗試解決到報(bào)文分析,再找到理論支撐最后尋找解決方法成功解決問題,當(dāng)然我們的產(chǎn)品還是非常可靠的。
如果您對(duì)此通訊板卡感興趣,請(qǐng)點(diǎn)擊下方鏈接:
https://www.hms-networks.cn/p/1-01-0320-21110-ixxat-inpact-ect-slave-pcie

最后大家如果有關(guān)于自動(dòng)化通訊一些,如EtherCAT, PROFIBUS, PROFINET,EtherNet/IP, Modbus, Modbus TCP, CAN, CANopen等等相關(guān)的技術(shù)問題,歡迎在知乎留言與我討論。
提交
SNMP基礎(chǔ)全解析:網(wǎng)絡(luò)管理新手必讀
Anybus CompactCom 40系列EtherCAT模塊 - 透明以太網(wǎng)
Anybus CompactCom 40系列DeviceNet模塊
Anybus CompactCom 40 M12 模塊— PROFINET
Anybus CompactCom 40系列EtherCAT模塊

投訴建議