Не удается прочитать значения регистров с помощью pymodbus

Когда я попробовал следующий код, я могу подключиться к интеллектуальному счетчику, но не могу прочитать содержимое регистра.

      import traceback
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('192.168.2.1', port=502)
client.connect()

try:
    res = client.read_holding_registers(0x0063, 1, unit=1)
    print(res.registers)

except:
    traceback.print_exc()
    
client.close()

Дает исключение

        Traceback <Most recent call last>
    File "m2.py", Line 8 ,in <module>
    print<res.registers>
AttributeErro: 'ModbusIOException' objecthas noattribute 'registers'    

Пожалуйста, помогите мне исправить это

2 ответа

Возможно, вам не хватает client.connectздесь

      from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient(host='192.168.2.1', port=502)
client.connect() ### Added here

try:
   result = client.read_holding_registers(0x0063,1, unit=1)
   print (result.registers)

except Exception as e:
   print (e)

client.close()

Для тех, у кого похожая проблема,client.read_********может возвращать ошибку, не вызывая исключения.
Так что всегда сверяйтесь сresp.isError()и справиться с этим.

Другие вопросы по тегам