1

我在尝试使用以下代码从设备获取信息时遇到了一些麻烦:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient

# mbClient = ModbusClient(method = "rtu", port="COM4", stopbits = 1, bytesize = 8, parity = 'N', baudrate = 9600)
mbClient = ModbusClient(method = "rtu", port="COM4")
mbClient.connect()

totalEnergy = mbClient.read_holding_registers(0x0000, 2, unit=1)
print(totalEnergy.registers)
mbClient.close()

它显示了我在标题中输入的错误。根据0x0000手册,地址应该是小时日等。 在这里您可以看到手册中出现的小时地址

谢谢,我希望能找到解决我问题的方法。

4

1 回答 1

1

使用下面的代码而不是print(totalEnergy.registers)+ enable Modbuslogging来处理 Modbus 错误抛出:

import logging

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


# Your code body ...


if not totalEnergy.isError():
    '''isError() method implemented in pymodbus 1.4.0 and later'''
    print(totalEnergy.registers)

else:
    # Do stuff to error handling.
    print('Error message: {}'.format(totalEnergy))

并检查mbClient.connect()return 及其输入参数。

这些都是您可以在客户端管理的所有内容。

因此,还要检查您的 Modbus 服务器/从站端。

于 2019-09-14T11:41:05.447 回答