首页 > 解决方案 > 使用 pymodbus 的 Modbus RTU - 无法从 modbus 数据中读取保持寄存器

问题描述

大家好,我需要一些帮助

代码:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging

def readModbusData():
    logging.basicConfig()
    log = logging.getLogger()
    log.setLevel(logging.DEBUG)

    client=ModbusClient(method='rtu',port='COM3',
    baudrate=9600,timeout=1,parity='N',stopbits=2)
    print(client.connect())
    client.debug_enabled()

    log.debug("Read holding registers")
    response=client.read_holding_registers(0,1)

    print(response) #This returns the response for whole length of registers

    # print(response.getRegister(0));  #This returns value of only one 

    client.close()
readModbusData()

标签: pythonpython-3.xmodbuspymodbus

解决方案


检查这个stack_post

您忘记了unit参数并使用print(response.registers)而不是 print(response).

您应该具有以下代码段:

response = client.read_holding_registers(0, 1, unit=<set-the-unit-ID>)  # Note.

if not response.isError():
    '''isError() method implemented in pymodbus 1.4.0 and above'''

    print(response.registers)  # Note.

else:
    # Handle Error.
    print('Unable to read or there is the connection problem.')

[注意]:

  • 在许多情况下,默认情况unit1处于从属端。

推荐阅读