Search code examples
pythonmodbusminimalmodbus

MinimalModbus read_registry error


I am trying to read registry information from a modbus device using MinimalModbus. However, every time I attempt to read registry 40003 which has a value of 220 I receive this error:

raise ValueError('The slave is indicating an error. The response is: {!r}'.format(response))
ValueError: The slave is indicating an error. The response is: '\x01\x83\x02Àñ'

I know there is a value in 40003 and I am following the communication documents for the device. Here is my code:

import minimalmodbus
import serial


gas = minimalmodbus.Instrument('COM5', 1)
gas.serial.baudrate = 9600  
gas.serial.bytesize = 8
gas.serial.parity   = serial.PARITY_NONE
gas.serial.stopbits = 1
gas.serial.timeout  = 0.05   
gas.mode = minimalmodbus.MODE_RTU  


temp = gas.read_register(40003, 1)
print (float(temp))

I have this problem for every registry and I cannot find information regarding Àñ.


Solution

  • The problem was the registry number 40003. I guess the modbus protocol doesn't require the full registry number, so I changed it to temp = gas.read_register(3, 1)