Skip to content

Issue with Modbus Error: [Input/Output] No Response received from the remote unit #217

@pawelmarkowski

Description

@pawelmarkowski

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions