1

我有一个由第三方用 C++ 编写的工业 HMI,它通过 TCP/IP 与 36 个 GE PLC 通信。HMI 在同一个房间的两台不同机器上运行,连接到同一个交换机。一台 HMI 在 32 位 Windows Server 2003 上运行。另一个在 Windows 7 64 位上运行。Windows 7 HMI 无法连接到一些 PLC。所有 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 都可以正常通信,因此 PLC 硬件上的负载似乎不是问题。C++ 代码以完全相同的方式与所有基进行通信。代码只保留一个包含 36 个 PLC 对象的数组,并在更新信息时循环它们。有没有人对我可以做些什么来进一步解决这个问题有任何想法?

4

2 回答 2

4

在与正常运行的系统通信时运行 Wireshark。将此与您在不工作时进行的捕获进行比较。

你有一个工作正常的配置。这个想法是找出它与不起作用的不同之处。显然会有差异,并且这些差异中可能存在一些问题的线索。

于 2011-08-04T19:09:13.440 回答
1

事实证明,我的假设是错误的。在 Win7 上没有其他 HMI 运行。我用 XP PC 替换了 Win7 PC,现在一切都很好。一旦我们被迫退出 XP,将不得不在某个时候解决这个问题,但现在一切正常。我认为这是 PLC 固件中的一个问题,因为来自 HMI 的所有通信都是相同的。

于 2011-08-09T13:25:14.587 回答