我有一个由第三方在C++中编写的工业人机界面,它通过TCP/IP与36个GE PLC通信。HMI在连接到同一交换机的同一房间内的两台不同计算机上运行。一个HMI在Windows Server 2003 32位上运行。另一种是在64位Windows 7上运行。有几个PLC是Windows7 HMI无法连接的。所有PLC在Windows Server 2003 HMI上都能正常通信。我已经运行了Wireshark,看看是怎么回事。
当PLC的以太网卡复位时,SYN人机界面和一个故障基座将发送Win7 /确认序列。一旦HMI发送数据(PSH),PLC就会以RST数据包进行响应。从那时起,来自RST的任何SYN数据包都会收到Win7响应。我昨天刚刚设置了这个新的HMI,从那时起它就一直是这样的。此人机界面在其他Win7计算机上运行时没有问题。据我所知,所有的PLC都处于相同的硬件/固件版本级别。我知道一个事实,那就是36个PLC上的软件都是一样的。
我完全不知道该怎么做才能进一步解决这个问题。连接到PLC的连接数量没有增加,因为我昨天设置的这台新机器正在取代本周早些时候死掉的那台机器。另外,大多数其他PLC都可以正常通信,所以这似乎不是PLC硬件负载的问题。C++代码以完全相同的方式与所有bases通信。代码只保留一个包含36个PLC对象的数组,并在更新信息时遍历这些对象。有谁知道我可以做些什么来进一步解决这个问题?
发布于 2011-08-09 21:25:15
事实证明,我的假设是错误的。没有其他的HMI在Win7上运行。我用一台XP PC替换了Win7 PC,现在一切都很好。一旦我们被迫离开XP,我将不得不在某个时候解决这个问题,但现在一切都在正常运行。我认为这是PLC固件的问题,因为所有来自HMI的通信都是相同的。
发布于 2011-08-05 03:09:13
在与运行正常的系统通信时运行Wireshark。将其与您在其不工作时所做的捕获进行比较。
您有一个运行良好的配置。我们的想法是找出它与不起作用的那个有什么不同。显然,将会有一些差异,并且在这些差异中可能会有一些问题的线索。
https://stackoverflow.com/questions/6946995
复制相似问题