Value null when trying to access Modbus registers

I added my Modbus device to Ignition. The device is connected and has its own unique IP-address. I’m always getting value null [Quality: Bad (“Bad_Timeout: The operation timed out.”)]. I need the process value at address 41433. Does someone know why this is the case. I tried different addresses where the datatype was specified as uint16 and i tried it for different channels aswell.

Are your modbus settings set to be zero-based?

Your unit ID could be wrong, your address could be off by one, or your address could be off by 40000. From the description you posted I’d try actually using 41433 and not treat the 4 as a prefix.

1 Like

Unchecked

I tried with address 41433, but I get the same message. I used 4 as a prefix as it is written on docs.inductive.

Modbus Address Mapping - Ignition User Manual 8.0 - Ignition Documentation (inductiveautomation.com)

The docs aren’t very clear, but in some product documentation addresses are prefixed with 0, 1, 3, 4 or to indicate Coils, Discrete Inputs, Input Registers, Holding Registers. And then in other documentation that scheme is not used. Address 40001 could mean Holding Register 1 or Holding Register 40001 depending on the product.

I’d start troubleshooting with a 3rd party Modbus tool like Modscan or whatever else is out there to zero in on the right settings. If you can get a response from one of these tools then from there it’s easy to figure out the correpsonding settings in Ignition.

Hey Kevin, I tried troubleshooting with Modscan64. I was able to read values (see pictures). I marked the values that I need. The first value in red at address (4)41434 is <280>. According to the manual the address should be 41433. I checked and all marked values (in the picture) are offset by 1. I get to read the same values for both “holding registers” and “input registers”.

Side note: connection with datalogger possible with Modbus TCP and/or Modbus RTU over TCP.

Delete the RTU connection and change your unit ID to 1 in the mapping. Use Holding Register if any of these values will be written to.

1 Like

It worked. Thank you for helping me out! :smiley: