GE Rx3i (Proficy ME 9.5): Protocol for reading floating points from power monitor using Modbus TCP

I have created logic to read values from a power monitor (Shark250) using modbus TCP protocol on a GE PACSystems Rx3i (now owned by Emerson). I have the logic for opening the channel and reading the requested values. However, I have concerns since the values from the power monitor are read as floating point (32-bit) values while the holding registers are only 16-bit. I was curious if anyone had a similar situation and how to resolve any issues that may occur. Your assistance is appreciated.
 
32 bit floating point (FP) values require the Modbus client to request 2, 16 bit registers for each FP value it needs.

Modbus Function Code 03 that reads Holding registers in the (4)xxxxx memory area uses the number of registers as part of its syntax, as shown in the example from the Modbus spec; but reply/response uses the number of 8 bit data bytes, not registers.

FC03 Read Holding Registers Respone frame format.JPG

Once the client gets the data from the server, the data value has to be interpreted properly, which can be a hair puller because there are four word/byte order formats for IEEE754 32 bit floating point values. (two are commonly used in Modbus, the other two rarely)

The four formats are shown in the table below.
Honeywell word-byte order.JPG

Siemens Floating point byte order.jpg

Sometimes the server documents the format, more frequently one experiments with reality to find out which one it is. Many commercial Modbus clients offer a choice of word/byte formats when interpreting floating point values.
 
Top