ayusecret
級別: 略有小成
![]() |
最近基于Python寫(xiě)了一些測試MC協(xié)議的代碼,想測測斷線(xiàn)重連的功能,發(fā)現拔了網(wǎng)線(xiàn)后再插上,用原來(lái)的套接字無(wú)法與PLC通訊(下斷點(diǎn)調也無(wú)法實(shí)現).監控PLC網(wǎng)絡(luò )狀態(tài)仍然處于連接中(與之前的套接字連接).如果我在Python程序內重新以一個(gè)新的套接字去嘗試連接,會(huì )回復目標計算機積極拒絕.這樣我只能復位PLC才能斷開(kāi)PLC的連接狀態(tài),這在實(shí)際應用應該是不允許的.后面再Gxword3內配置參數,讓PLC自己10s后監視生存,再反復3次監視確認自動(dòng)斷開(kāi).想請教各位在用上位機是如何實(shí)現斷線(xiàn)重連的,又或者是即使無(wú)重連功能,重新初始化是如何連上PLC的 |
---|---|
|
cythyx
級別: 家園?
![]() |
使用套接字的通訊方式,一般會(huì )檢測通訊狀態(tài),如果檢測到通訊狀態(tài)斷開(kāi)不是直接再連端口,需要先執行關(guān)閉端口,再打開(kāi)端口連接。 |
---|---|
|
ayusecret
級別: 略有小成
![]() |
圖片:
![]()
試過(guò)了,PLC一直拒絕響應 |
---|---|
|
13821917697
承接電氣自動(dòng)化項目、電氣接線(xiàn)圖設計、IO點(diǎn)表、電氣元器件選型
級別: 工控俠客
![]() |
圖片:
![]() Python的不太懂啊,C#最近剛好做了個(gè)這么功能可以跟你說(shuō)說(shuō)思路。首先套接字斷線(xiàn)之后是不能沿用原先的連接的,我這里做的方式是重新new了一下。用一個(gè)新的連接。建立一個(gè)bool變量作為標志位,初次連接成功之后,標志位置反,開(kāi)始正常工作。如果斷開(kāi)連接,try里面的正常工作指令會(huì )報錯跳到catch,這里我們把套接字dispose全部釋放,并且標志位初始化。然后就又開(kāi)始重新連接了。就是這樣 |
---|---|
|
ayusecret
級別: 略有小成
![]() |
感謝提供思路,不過(guò)貌似沒(méi)給回答到點(diǎn)上,就是三菱用的是還是上個(gè)連接,即使我初始化用新的套接字也無(wú)法連上。會(huì )被拒絕。(當然PLC參數上可用設置超時(shí)斷開(kāi))。普通程序奔潰或調試程序斷開(kāi),這種都能正常重連,不過(guò)既然你說(shuō)套接字斷線(xiàn)后無(wú)法沿用原來(lái)的連接,那我只能在PLC上參數設置了。 |
---|---|
|
ayusecret
級別: 略有小成
![]() |
我知道有控件,還有別人開(kāi)源的HslCommunication的動(dòng)態(tài)鏈接庫,我只是想自己寫(xiě)個(gè)玩玩,學(xué)習一下。不懂就要問(wèn) ![]() |
---|---|
|
ayusecret
級別: 略有小成
![]() |
Close前面已經(jīng)有兩次Send是斷線(xiàn)后發(fā)的,提示遠程主機中止連接。但又沒(méi)法Connect,因為我的套件字已經(jīng)Connect了。所以只能初始化重新嘗試連接。 |
---|---|
|
zmrs163
級別: 家園?
![]() |
我測試了下網(wǎng)線(xiàn)拔掉之后PLC很快就關(guān)閉了連接,這個(gè)時(shí)候電腦客戶(hù)端重連發(fā)送即可。你程序前兩個(gè)錯誤在于PLC關(guān)閉了連接你還嘗試發(fā)送,然后自己關(guān)閉了連接肯定不能發(fā)了,資源都已經(jīng)釋放了。最后一個(gè)錯誤需要查看你PLC的程序,如果你PLC也執行了CLOSE就連不了了,反之可以繼續連接。 |
---|---|
|
ayusecret
級別: 略有小成
![]() |
不知道你在什么環(huán)境下測試的,我是用Gxwork3,R04 CPU測試,測試環(huán)境默認沒(méi)有開(kāi)啟生存定時(shí)器,所以我拔網(wǎng)線(xiàn),PLC還是不會(huì )關(guān)閉連接的。只有我在參數上再配置定時(shí)器超時(shí)自動(dòng)關(guān)閉才會(huì )關(guān)閉。 我的配圖從頭到尾,PLC都沒(méi)斷之前的連接,錯誤都是為了演示整個(gè)過(guò)程,我知道錯誤的原因,只是當時(shí)納悶PLC為啥自己不斷開(kāi),后面開(kāi)了定時(shí)器才正常。沒(méi)驗證Gxwork2 Q系列PLC的,貌似Gxwork2沒(méi)有這個(gè)定時(shí)器配置,難道這就是區別? |
---|---|
|
zmrs163
級別: 家園?
![]() |
我用5U測試的。5U默認有keepalive且無(wú)法修改。正常就是不會(huì )斷開(kāi)的,PLC這么快斷開(kāi)我才覺(jué)得奇怪,在網(wǎng)絡(luò )上服務(wù)器如果沒(méi)有心跳無(wú)法知道客戶(hù)端是否在線(xiàn),所以大多是一段時(shí)間無(wú)數據通訊后斷開(kāi)釋放。
|
---|---|
|