【问题标题】:Pymodbus read register continuosly in read time failsPymodbus在读取时间连续读取寄存器失败
【发布时间】:2022-01-23 11:33:15
【问题描述】:

我有一个用于测量机器人轴运动的智能传感器,我会使用 modbus 读取每个读取位置的值(它每 100 毫秒读取一次值) 我尝试使用 pymodbus:

slave = ModbusSerialClient(port='/dev/ttyAMA4', parity=N, baudrate=9600, timeout=1)
slave.connect()

while True:
    print(slave.read_input_registers(300013, 2, unit=10))
    time.sleep(0.01)

问题是,我的脚本启动并读取第一个值,但在 5,6 秒后退出,因为对设备的请求太多(设备没有响应) 有一种方法可以调用 modbus 设备并在“RealTime”中获取值,例如每毫秒没有问题,因为连续调用的数量很大?

提前非常感谢

【问题讨论】:

  • 您能否分享minimal, reproducible example 并提供您遇到的故障的详细信息(例外情况?)。显示的代码将执行一次读取(由于return)。请注意,您的代码需要能够从超时中恢复(这很可能会不时发生)。

标签: python-3.x modbus pymodbus


【解决方案1】:
  1. 您的代码大约每 10 毫秒而不是 100 毫秒读取一次值。错字?
  2. 由于您的目的是“实时”获取值,但是您能达到多快主要取决于传感器,如果您可以从传感器数据表中找到规格,例如最小轮询间隔,请相应编码,否则,您可以继续使用不同的间隔值进行测试,直到您满意为止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-18
    • 2021-12-21
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多