我有一個由C++第三方編寫的工業HMI,它通過TCP/IP與36個GE PLC進行通信。 HMI在同一個房間的兩臺不同的機器上運行,連接到同一臺交換機。一臺HMI在Windows Server 2003 32位上運行。另一個在Windows 7 64位上運行。有幾個PLC無法連接Windows 7 HMI。所有PLC在Windows Server 2003 HMI上正常通信。我運行Wireshark來查看發生了什麼。網絡通信故障排除
一旦PLC的以太網卡復位,Win7 HMI和其中一個故障基地將發送一個SYN/ACK序列。一旦HMI發送數據(PSH),PLC就會響應一個RST數據包。從那時起,來自Win7 HMI的任何SYN數據包都會收到一個RST響應。我昨天剛剛設置了這個新的HMI,從那以後就是這樣。該HMI在其他Win7計算機上運行時沒有問題。據我所知,所有的PLC都處於相同的硬件/固件版本級別。我確實知道36個PLC中的每一個上的軟件都是相同的。
我完全喪失瞭如何解決這個問題。由於我昨天設立的這臺新機器取代了本週早些時候死亡的機器,因此PLC的連接數量沒有增加。此外,大多數其他PLC都可以正常通訊,所以在PLC硬件上加載似乎不是問題。 C++代碼以完全相同的方式與所有基地進行通信。該代碼只保存一個由36個PLC對象組成的數組,並在更新信息時循環訪問它們。有沒有人有任何想法,我可以做什麼來進一步排除故障?
我一直在運行wireshark。在更長時間的故障排除後,情況變成了不想談話的PLC,我最終(大約每90秒一次)從PLC取回SYN/ACK而不是RST。第一個PSH數據包的EXACT數據與第一個PSH數據包發送給功能正常的PLC的數據相同。無法正常工作的PLC立即以RST響應,而對於其他PLC,對話按「正常」進行(通常意味着沒有RST和數據來回傳送)。 –