Modbus dual UINT16 to Float


I am communicating with a Modbus TCP device. I’ve followed the instructions here: and completed the address mapping.

I am trying to get float values by using the step function in the address configuration from 2 UINT16s. The " Holding Register (Float)" function however seems to use 2 INT16s instead of UINT16s.

It seems the system cannot convert dual UINTs to floats but instead only dual INTs to floats. I would need to convert the numbers from UINTs to INTs and then use the step function to convert groups of two INTs to a float. Basically I need to convert the data type twice, how can I do that?


The driver does not turn these registers into separate Int16 or UInt16s before making them a Float, so there is no difference.

If e.g. you read HRF1, then the driver requests 2 registers starting from address 1, gets 4 bytes in return, and then creates a Float value from those 4 bytes.

If you’re not seeing the result you expect maybe you need to try the Swap Word Order setting?

Hi Kevin,

That makes sense that its using the byte values and not the data type formats, your’re absolutely right, I had the word order reversed after all.

Thanks for your help!