發(fā)布時間:2019-09-15 來源:眾智博遠
西門子S7-400H之間通訊數據丟失解決辦法,現(xiàn)場有兩對S7-400H系統(tǒng),一對417-5H,另一對為416-5H,兩對S7-400H之間建立了Local ID為1的 S7容錯連接并進行S7雙邊通信,之前兩對S7-400H之間的通訊一直是正常的,現(xiàn)在通訊中斷,現(xiàn)場在線監(jiān)視網絡組態(tài)發(fā)現(xiàn)S7容錯連接丟失。
圖2- 1 現(xiàn)場在線監(jiān)視網絡組態(tài)
2.2 問題分析
由于客戶的項目為韓國工程師給設計開發(fā)的,韓國工程師給到客戶的離線項目中沒有兩對控制器之間建立的S7容錯連接,當時懷疑韓國工程師未設計開發(fā)兩對控制器之間的S7容錯連接,但是客戶現(xiàn)場的工程師反應,他們與韓國的工程師電話溝通過,確定之前設計開發(fā)了兩對控制器之間建立的S7容錯連接,而且之前兩對控制器之間的通訊是正常的,目前可以排除這個猜想。
后來懷疑客戶增加過新的連接并下載造成的S7容錯連接丟失,客戶離線的程序中沒有兩對控制器之間建立的S7容錯連接,由于S7容錯連接的特殊性,如果客戶在沒有兩對控制器之間建立的S7容錯連接的離線項目中增加過新的連接并且下載到控制器也會將原來建立的兩對控制器之間建立的S7容錯連接沖掉,客戶現(xiàn)場的工程師說韓國工程師設計完項目下載到控制器正常運行后他們從來沒有改過任何東西,而且
離線韓國工程師給的離線項目在工程師站上也沒有做過任何改變,目前可以排除這個猜想。
現(xiàn)在懷疑是韓國工程師給的離線項目與控制器里的在線項目不一致造成的S7容錯連接丟失,可以將控制器里的項目上載進行分析查看。
2.3 問題查找
客戶現(xiàn)場的工程師前也懷疑過韓國工程師給的離線項目與控制器里的在線項目不一致,所以客戶現(xiàn)場的工程師也將控制器中的項目上載上來了。
圖2- 2 上載項目在線監(jiān)視網絡組態(tài)
通過查看上載上來的項目發(fā)現(xiàn)里面仍然沒有兩對控制器之間建立的S7容錯連接,但是客戶反映現(xiàn)場兩對控制器之間的通信偶爾是正常的可以傳遞數據。此時,將韓國工程師之前編制的兩對控制器之間進行S7通訊的程序塊打開現(xiàn)場監(jiān)視,具體情況見如下截圖:
圖2- 3 在線監(jiān)控S7通訊程序
發(fā)送數據塊的STATUS在線監(jiān)視的值為16#19,16#19對應的十進制數為 25, 通過F1在線幫助查看STATUS對應十進制數25表示“通訊已經開始,工作正在進程中”,說明控制器中這個S7容錯連接是存在的。
圖2- 4 BSEBD塊STATUS引腳在線幫助
那為什么上載上來的項目中沒有這個Local ID為1的S7容錯鏈接呢?后來通過與其他工程師溝通和哈月相關資料得知:由于S7容錯連接的特殊性是無法通過上載操作上載的項目中的,現(xiàn)在可以理解為什么上載上來的項目中體驗沒有這個S7容錯鏈接。
隨后手動在離線項目的網絡組態(tài)中添加了這個Local ID為1的S7容錯鏈接,添加完這個S7容錯連接后繼續(xù)在線監(jiān)視網絡組態(tài)里的連接,具體情況見如下截圖:
圖2- 5手動添加S7容錯連接在線監(jiān)視網絡組態(tài)
從上面截圖可以看出,兩對控制器之間建立的S7容錯連接是存在的,而且圖標是綠色的三角號,這是S7容錯連接正常的狀態(tài),現(xiàn)在可以證實兩對控制器之間建立的S7容錯連接在控制器中是存在的。由于離線項目中沒有這個S7容錯連接,所以在線監(jiān)視時無法看到這個S7容錯連接,這也是S7容錯連接的特殊性,只有在離線項目和控制器中都存在這個S7容錯連接的時候才能在網絡組態(tài)里通過在線查看到這個S7容錯連接。
現(xiàn)在已經證實兩對控制器之間建立的S7容錯連接在控制器中是存在的,目前兩對控制器之間S7通信沒有數據是由于程序原因造成的,并不是因為S7容錯連接丟失造成的。由于客戶的項目是韓國工程師給設計開的,客戶只要求幫助找到丟失的S7容錯連接即可,程序問題會找韓國工程師解決,客戶也不能私自修改程序,現(xiàn)場設備都在運行,操作不當會造成巨大的損失。
2.4 注意事項
1. 每天項目做歸檔備份處理,這樣可以確保在線與離線項目一致,也方便后期修改項目以及查找問題;
2. 離線項目中不存在S7容錯連接,增加新連接并將新連接下載到控制器會將之前的S7容錯連接沖掉(非S7容錯連接特性,普通連接也是如此);
3. S7容錯連接無法通過上載的方式上載到項目中(S7容錯連接特性);
4. 只有在離線項目和控制器中都存在S7容錯連接的時候才能在網絡組態(tài)里通過在線查看到這個S7容錯連接(S7容錯連接特性);