2011-08-04 158 views
1

我有一個由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對象組成的數組,並在更新信息時循環訪問它們。有沒有人有任何想法,我可以做什麼來進一步排除故障?

回答

1

事實證明,我誤以爲我的假設。 Win7上沒有其他人機界面運行。我用XP電腦取代了Win7電腦,現在一切正常。一旦我們被迫關閉XP,必須在某個時候解決這個問題,但現在情況正在起作用。我期望這是PLC固件中的一個問題,因爲來自HMI的所有通信都是相同的。

4

在與功能正常的系統通信時運行Wireshark。將它與您在未工作時進行的捕捉進行比較。

你有一個工作正常的配置。這個想法是找出與不起作用的不同之處。顯然會有分歧,而且這些差異可能會有一些線索。

+0

我一直在運行wireshark。在更長時間的故障排除後,情況變成了不想談話的PLC,我最終(大約每90秒一次)從PLC取回SYN/ACK而不是RST。第一個PSH數據包的EXACT數據與第一個PSH數據包發送給功能正常的PLC的數據相同。無法正常工作的PLC立即以RST響應,而對於其他PLC,對話按「正常」進行(通常意味着沒有RST和數據來回傳送)。 –