-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
Hello,
I am checking out pymodbus.version '1.3.2' library and attached code does not work, but code copy in pymodbus3 works fine.
What did I do wrong?
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.constants import Endian
client = ModbusTcpClient('192.168.174.82', port = 502)
registers_set = 1
address = 7505
count = registers_set * 2
unit = 1
result = client.read_holding_registers(address, count, unit = unit)
print(result)
print(result.registers)
for i in range(registers_set):
j = i * 2
k = (i + 1) * 2
print (j, k, "register range")
decoder = BinaryPayloadDecoder.from_registers(result.registers[j:k], endian = Endian.Big)
print("{0:.2f}".format(decoder.decode_32bit_float()))
client.close()
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:send: 0x0 0x1 0x0 0x0 0x0 0x6 0x1 0x3 0x1d 0x51 0x0 0x2
DEBUG:pymodbus.transaction:recv: 0x0 0x1 0x0 0x0 0x0 0xb 0x1 0x3 0x8 0x45 0xae 0x6f 0x8c
DEBUG:pymodbus.transaction:0x0 0x1 0x0 0x0 0x0 0xb 0x1 0x3 0x8 0x45 0xae 0x6f 0x8c
DEBUG:pymodbus.transaction:getting transaction 1
Traceback (most recent call last):
Modbus Error: [Input/Output] No Response received from the remote unit
File "/home/pawel/workspace/scripts/python/modbus/lumel.py", line 23, in
print(result.registers)
AttributeError: 'ModbusIOException' object has no attribute 'registers'
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
from pymodbus3.client.sync import ModbusTcpClient
from pymodbus3.payload import BinaryPayloadDecoder
from pymodbus3.constants import Endian
client = ModbusTcpClient('192.168.174.82', port = "502")
registers_set = 1
address = 7505
count = registers_set * 2
unit = 1
result = client.read_holding_registers(address, count, unit = unit)
print(result)
print(result.registers)
for i in range(registers_set):
j = i * 2
k = (i + 1) * 2
print (j, k, "register range")
decoder = BinaryPayloadDecoder.from_registers(result.registers[j:k], endian = Endian.Big)
print("{0:.2f}".format(decoder.decode_32bit_float()))
client.close()
DEBUG:pymodbus3.transaction:Running transaction 1
DEBUG:pymodbus3.factory:Factory Response[3]
DEBUG:pymodbus3.transaction:adding transaction 1
DEBUG:pymodbus3.transaction:getting transaction 1
ReadRegisterResponse (4)
[17838, 28486, 16777, 24065]
0 2 register range
5581.91
Thanks for help.