C# Modbus 每 20 秒获取大量寄存器

C# Modbus get a lot register every 20 seconds

我用 C# 做了一个应用程序,在这个应用程序中我必须通过 Modbus TCP 每 20 秒读取 PLC 的 840 个寄存器。我使用这个库 http://www.codeproject.com/Tips/16260/Modbus-TCP-class。当我使用

方法时

Master.ReadHoldingRegister(ushort id, byte unit, ushort startAddress, ushort numInputs)

它 return 一个长度为 144 而不是 1680 的字节数组,你知道吗?

按照建议在调用之间添加一点延迟。

Modbus 允许在单个读取保持寄存器函数调用中读取最多 125 个保持寄存器。如果库在调用 840 个寄存器时没有抛出错误,那么它可能通过将您的调用拆分为多个读取保持寄存器请求来考虑此限制。我会研究源代码以确保您可以可靠地做到这一点。