我有一个用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硬件的负载并不是问题。C ++代码以完全相同的方式与所有基础进行通信。该代码仅保留36个PLC对象的数组,并在更新信息时遍历它们。是否有人对我可以做些什么进一步解决此问题有任何想法?