网络通讯故障排除
我有一个由第三方用 C++ 编写的工业 HMI,它通过 TCP/IP 与 36 GE PLC 进行通信。 HMI 在同一房间内连接到同一交换机的两台不同机器上运行。一台HMI运行在Windows Server 2003 32位上。另一个在 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 对象的数组,并在更新信息时循环遍历它们。有人知道我可以采取什么措施来进一步解决这个问题吗?
I have an Industrial HMI written by a third party in C++ that communicates with 36 GE PLCs via TCP/IP. The HMI is running on two different machines in the same room connected to the same switch. One HMI is running on Windows Server 2003 32 bit. The other is running on Windows 7 64 bit. There are a few PLCs to which the Windows 7 HMI can't connect. All PLCs communicate normally on the Windows Server 2003 HMI. I've run Wireshark to see what's going on.
Upon a reset of the PLC's ethernet card, the Win7 HMI and one of the faulty bases will send a SYN/ACK sequence. Once the HMI sends data (PSH), the PLC responds with an RST packet. From that point on, any SYN packet from the Win7 HMI receives an RST response. I just set this new HMI yesterday and it's been like this since that point. This HMI is running without a problem on other Win7 computers. As far as I know, all of the PLCs are at the same hardware/firmware revision level. I do know for a fact that the software on each of the 36 PLCs is identical.
I'm at a complete loss as to what to do to troubleshoot this further. There hasn't been an increase in the number of connections to the PLCs as this new machine I set up yesterday is replacing one that died earlier in the week. Plus most of the other PLCs are all communicating just fine, so it doesn't seem to be an issue with load on the PLC hardware. The C++ code is communicating to all of the bases in the exact same manner. The code just keeps an array of 36 PLC objects and loops through them when updating the information. Does anyone have any ideas on what I can do to troubleshoot this further?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
与正常运行的系统通信时运行 Wireshark。将此与您在不工作时进行的捕获进行比较。
您的配置运行良好。我们的想法是找出它与不起作用的东西有什么不同。显然,会有差异,并且这些差异中可能存在一些解决问题的线索。
Run Wireshark when communicating with a functioning system. Compare this with the capture you made when it was not working.
You have a configuration that works fine. The idea is to find out what is different about it from the one that does not work. Obviously there are going to be differences, and there might be some clues to the problem in those differences.
事实证明我的假设是错误的。没有其他 HMI 可以在 Win7 上运行。我把Win7电脑换成了XP电脑,现在一切都很好。一旦我们被迫退出 XP,就必须在某个时候解决这个问题,但目前一切正常。我预计这是 PLC 固件中的问题,因为来自 HMI 的所有通信都是相同的。
It turns out that I was mistaken in my assumptions. There weren't other HMIs running on Win7 that. I replaced the Win7 PC with an XP PC and all is well now. Will have to troubleshoot this at some point once we're forced off of XP, but for now things are working. I expect it's an issue in the PLC firmware since all communication from the HMI is identical.