0

详细信息: 我正在处理通过 TCP/IP 设备连接到 Modbus 的问题。我们需要每秒轮询一部分设备 modbus 寄存器 4-6 次。我们记录了以下时间。在控制测试中,我们能够以以下速度进行通信:

控制装置:0.0015s一次,标准偏差为0.0001s

发行设备:0.5200s一次,标准差为0.01s

经过数周的故障排除和数据包捕获,我们将问题缩小到与我们通信的设备没有发出或响应 TCP 握手数据包的事实。然而,通信仍然是可能的,因为在发出 TCP 请求并随后被忽略后,查询仍会进行 0.3200 秒。此外,问题设备不支持 UDP。

抓包分解图[1]:https ://i.stack.imgur.com/lCEos.png

第一个(顶部)数据包是控制,第二个(底部)数据包是问题

问题: 忽略 TCP 的基本作用是握手这一事实,有没有办法减少或完全缓解 Windows 7 机器上英特尔 NIC 上的 TCP 握手。

4

1 回答 1

0

问题是 PLC 请求的缓冲区大小。我们联系了 TCP/IP Modbus 服务器软件的开发人员(与 PLC 制造商相同),发现默认请求的缓冲区大小为 2GB,这对于我们正在与之通信的 Modbus 设备来说太大了。我们有一个新版本的 TCP/IP Modbus 服务器,它具有可配置的缓冲区大小,并且以 10 毫秒的速度进行通信。

于 2018-02-27T14:55:28.443 回答