Не удается прочитать значения регистров с помощью 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()
и справиться с этим.