RModbus - RTU 超时在第一次超时发生后不会重置

发布于 2025-01-15 17:53:54 字数 736 浏览 4 评论 0原文

我有两台 RS485 Modbus RTU 服务器。读取工作正常,但当我断开第二个服务器的连接时,RModbus 还会在第二次读取尝试后显示第一个服务器的超时消息。第一次超时后,RModbus 停止工作。

怎么了?

port = "COM6"
baud = 19200
uid = 1
options = {data_bits: 8, stop_bits: 1, parity: SerialPort::EVEN} 

cl = ModBus::RTUClient.new(port, baud, options)
cl.read_retries = 2
cl.debug = true

# Works fine
begin
    puts cl.with_slave(1).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

# Intended Timeout
begin
    puts cl.with_slave(2).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

# Should work, however, issues a timeout.
begin
    puts cl.with_slave(1).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

I have two RS485 Modbus RTU Servers. Reading works fine but when I disconnect the second server, RModbus also shows timeout messages for the first server after a second read attempt. After the first timeout, RModbus stops working.

What is wrong?

port = "COM6"
baud = 19200
uid = 1
options = {data_bits: 8, stop_bits: 1, parity: SerialPort::EVEN} 

cl = ModBus::RTUClient.new(port, baud, options)
cl.read_retries = 2
cl.debug = true

# Works fine
begin
    puts cl.with_slave(1).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

# Intended Timeout
begin
    puts cl.with_slave(2).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

# Should work, however, issues a timeout.
begin
    puts cl.with_slave(1).read_holding_registers(512, 1)
rescue => error
    puts error.message
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随梦而飞# 2025-01-22 17:53:54

在一个Modbus RTU网络中只能存在一个主站。

串行通信无法避免冲突。

单个主机必须按照严格的顺序管理通信:请求>>>等待回复>>请求>>等待回复...

In a Modbus RTU network can only exist one master.

Serial communication has no means for avoiding collisions.

It is the single master that must manage the communications following a strict order: request >> wait for a response >> request >> wait for a response...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文