Modbus Floating-Point Registers Output Incorrect Values Sometimes

Updated Jan 12, 2018

Reported In

Hardware

  • cRIO-9030

Issue Details

I'm using floating-point registers with Modbus, and some of my values are sporadically written with incorrect data. What could cause this?

Solution

To resolve this, write your floating-point values into registers that are not adjacent to each other. For example, if you are using F4000001 and F4000002, switch to F4000001 and F4000003.

Additional Information

This is due to how the Modbus protocol is defined. Each register is only 16 bits, so writing a 32-bit floating-point value will actually write two registers. If you write register F4000001, it will actually overwrite F4000002 as well. This results in the data from F4000002 being lost, and it can look like your data is sporadically writing incorrectly.

WAS THIS ARTICLE HELPFUL?

Not Helpful