I got this to work by changing these lines in the arduino code:
ModbusRTUServer.configureInputRegisters(0x00, 3);[color=#222222][/color]
ModbusRTUServer.inputRegisterWrite(0, 10);[color=#222222][/color]
ModbusRTUServer.inputRegisterWrite(1, 104);[color=#222222][/color]
ModbusRTUServer.inputRegisterWrite(2, 57759);
To:
ModbusRTUServer.configureHoldingRegisters(0x00, 3);[color=#222222][/color]
ModbusRTUServer.holdingRegisterWrite(0, 10);[color=#222222][/color]
ModbusRTUServer.holdingRegisterWrite(1, 104);[color=#222222][/color]
ModbusRTUServer.holdingRegisterWrite(2, 57759);
I had input registers when I should have had holding registers. Also I guess both ArduinoModbus and Minimal Modbus handle the addressing such you don't need to enter an address of 40001. The libraries handle that for you I suppose. I figure when I made the read_register call in python it was addressing the 40000 block and I had input register set on my arduino modbus server that belong to 30000 block of addresses, hence I couldn't communicate.
Hope this helps someone.