【问题标题】:Facing an SocketTimeoutException while reading a register value using Modbus client使用 Modbus 客户端读取寄存器值时遇到 SocketTimeoutException
【发布时间】:2022-01-06 17:53:48
【问题描述】:
The exception looks like this:

    Exception in thread "main" java.net.SocketTimeoutException: Read timed out
        at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
        at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
        at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
        at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
        at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
        at de.re.easymodbus.modbusclient.ModbusClient.ReadInputRegisters(ModbusClient.java:1073)
        at main.main.main(main.java:37)

当我尝试读取寄存器值时发生异常,特别是保存寄存器。它似乎与服务器连接,但在读取数据时遇到问题。我该如何解决这个问题?

【问题讨论】:

  • 我不知道,为什么您会收到此错误。我可以看看你的连接代码吗?与您的系统连接会有很大帮助。
  • 除了上面请求的代码(最好是minimal reproducible example),请确认您能够使用已知良好的应用程序(例如modpoll/mbpoll)轮询设备,并且理想情况下,包括使用的命令行并导致您的问题。这有助于确定问题出在您的代码还是其他方面(设备、网络等)。

标签: modbus-tcp


【解决方案1】:

我可以通过设置解决它:

readConnectiontimeout(5000);

实际代码:

modbusServer.setClientConnectionTimeout(1000000000);

【讨论】:

    猜你喜欢
    • 2023-01-01
    • 1970-01-01
    • 2023-02-08
    • 2018-12-15
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多