2011-08-04 108 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和数据来回传送)。 –