首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pymodbus TcpClient超时

pymodbus TcpClient超时
EN

Stack Overflow用户
提问于 2014-05-27 10:34:31
回答 3查看 6.7K关注 0票数 3

我对pymodbus TcpClient超时有问题:

代码语言:javascript
运行
复制
import logging
from pymodbus.client.sync import ModbusTcpClient

logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

client = ModbusTcpClient('x.y.z.w', port=yyy)
client.connect()

result = client.read_holding_registers(10, 10)
print(result.registers)
client.close()

错误:

代码语言:javascript
运行
复制
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:Transaction failed. (timed out)
ERROR:pymodbus.client.sync:Connection to (x.y.z.w, yyy) failed: [Errno 10061] ╧юфъы■ўхэшх эх єёЄрэютыхэю,

使用tiomeot=1我有错误:

代码语言:javascript
运行
复制
modpoll.exe -c 5 -r 10 -o 1 -p yyy -m tcp x.y.z.w
-- Polling slave... (Ctrl-C to stop)
Reply time-out!

但对于timeout=10,所有商品:

代码语言:javascript
运行
复制
modpoll.exe -c 5 -r 10 -o 10 -p yyy -m tcp x.y.z.w
-- Polling slave... (Ctrl-C to stop)
[10]: 2
[11]: 10
[12]: 10
[13]: 10

  • 如何更改pymodbus TcpClient中的默认超时?
EN

回答 3

Stack Overflow用户

发布于 2015-11-30 13:27:35

代码语言:javascript
运行
复制
from pymodbus.constants import Defaults

Defaults.Timeout = 10
client = ModbusTcpClient('x.y.z.w', port=yyy)
client.connect()

ModbusTcpClient类在其构造函数中没有任何参数,也没有将timeout传递给类的特定方法。相反,可以通过使用timeout全局更改timeout变量来更改类的Defaults,从而影响ModbusTcpClient连接timeout变量。

票数 4
EN

Stack Overflow用户

发布于 2014-07-29 09:29:15

试一试

代码语言:javascript
运行
复制
client = ModbusTcpClient('x.y.z.w', port=yyy, timeout=10)

它适用于pymodbus中的rtu。

票数 2
EN

Stack Overflow用户

发布于 2022-11-18 13:20:44

对我来说,标准设置超时似乎不起作用。

代码语言:javascript
运行
复制
try:
    client = AsyncModbusTcpClient('x.y.z.w', port=502, timeout=10)
    await client.connect()
    rr = await client.read_holding_registers(offset_base, 100)      
    if rr.isError():
      print(f' problem reading registers: {rr}')7
    else:
      print(f'\n regs: {rr.registers}')

except Exception as e:       #asyncio.TimeoutError?
    print(f'read_holding_registers :{repr(e)} -> {e.__doc__}')

这偶尔会导致:"TimeoutError() ->操作超过了给定的截止日期。“

2-使用这种方法也不起作用。从pymodbus.constants导入默认设置为Defaults.Timeout = 10 #,而不是3

3.我的尝试/错误解决方案是改变modbus包中的constants.py;

例如,Timeout =3(默认)为6。

如果我看日志记录的话,似乎是有效的,但是这是一种方式还是一个bug.?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23887184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档