from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging
def readModbusData():
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
client=ModbusClient(method='rtu',port='COM3',
baudrate=9600,timeout=1,parity='N',stopbits=2)
print(client.connect())
client.debug_enabled()
log.debug("Read holding registers")
response=client.read_holding_registers(0,1)
print(response) #This returns the response for whole length of registers
# print(response.getRegister(0)); #This returns value of only one
client.close()
readModbusData()
Console logs:
DEBUG:pymodbus.transaction:SEND: 0x0 0x3 0x0 0x0 0x0 0x1 0x85 0xdb
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
Modbus Error: [Input/Output]
Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)