ayusecret
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 185 個
工控威望: 263 點
下載積分: 810 分
在線時間: 74(小時)
注冊時間: 2021-10-31
最后登錄: 2024-12-19
查看ayusecret的 主題 / 回貼
樓主  發(fā)表于: 2022-06-09 08:31
最近基于Python寫了一些測試MC協(xié)議的代碼,想測測斷線重連的功能,發(fā)現(xiàn)拔了網(wǎng)線后再插上,用原來的套接字無法與PLC通訊(下斷點調(diào)也無法實現(xiàn)).監(jiān)控PLC網(wǎng)絡(luò)狀態(tài)仍然處于連接中(與之前的套接字連接).如果我在Python程序內(nèi)重新以一個新的套接字去嘗試連接,會回復(fù)目標(biāo)計算機(jī)積極拒絕.這樣我只能復(fù)位PLC才能斷開PLC的連接狀態(tài),這在實際應(yīng)用應(yīng)該是不允許的.后面再Gxword3內(nèi)配置參數(shù),讓PLC自己10s后監(jiān)視生存,再反復(fù)3次監(jiān)視確認(rèn)自動斷開.想請教各位在用上位機(jī)是如何實現(xiàn)斷線重連的,又或者是即使無重連功能,重新初始化是如何連上PLC的
zmrs163
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
1樓  發(fā)表于: 2022-06-09 17:22
看了下你的代碼,close之后要重新connect才能發(fā)送吧
zmrs163
級別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
2樓  發(fā)表于: 2022-06-10 13:26
我測試了下網(wǎng)線拔掉之后PLC很快就關(guān)閉了連接,這個時候電腦客戶端重連發(fā)送即可。你程序前兩個錯誤在于PLC關(guān)閉了連接你還嘗試發(fā)送,然后自己關(guān)閉了連接肯定不能發(fā)了,資源都已經(jīng)釋放了。最后一個錯誤需要查看你PLC的程序,如果你PLC也執(zhí)行了CLOSE就連不了了,反之可以繼續(xù)連接。
zmrs163
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
3樓  發(fā)表于: 2022-06-10 16:12
我用5U測試的。5U默認(rèn)有keepalive且無法修改。正常就是不會斷開的,PLC這么快斷開我才覺得奇怪,在網(wǎng)絡(luò)上服務(wù)器如果沒有心跳無法知道客戶端是否在線,所以大多是一段時間無數(shù)據(jù)通訊后斷開釋放。
引用
引用第10樓ayusecret于2022-06-10 15:02發(fā)表的  :

不知道你在什么環(huán)境下測試的,我是用Gxwork3,R04 CPU測試,測試環(huán)境默認(rèn)沒有開啟生存定時器,所以我拔網(wǎng)線,PLC還是不會關(guān)閉連接的。只有我在參數(shù)上再配置定時器超時自動關(guān)閉才會關(guān)閉。
我的配圖從頭到尾,PLC都沒斷之前的連接,錯誤都是為了演示整個過程,我知道錯誤的原因,只是當(dāng)時納悶PLC為啥自己不斷開,后面開了定時器才正常。沒驗證Gxwork2 Q系列PLC的,貌似Gxwork2沒有這個定時器配置,難道這就是區(qū)別?