Accessing data in Wonderware using Modbus


Thread Starter


We have a Micromotion-make flowmeter whose Modbus output , we have linked to Wonderware HMI.
When the flowrate is configured to integer format we do get the flowrate properly but when it is configured for Dual register Floating point format, it gives erratic reading.

We have checked the addressing but still the problem is not solved.For control purposes we need the data in Floating point format only.

Is this due to non-availability of standard in Modbus for Floating point data?If so what is the solution to it.

Please help us to solve the problem.

Thanking you.
[email protected]
You have to convert the floating point to interger and then back to floating point. Standard Modbus will not handle floating point.

Not sure what you can do in the Micromotion flowmeter but basically you need to convert floating to interger split interger into two words. Then in wonderware you need to add two intergers back together and convert to floating point. It has been a while since I have worked with Wonderware but you should be abel to handle this with script. If neither of above will handle this then you need to introduce a device that will do conversion.

If you are using the standard Wonderware Modicon driver then address the volumetric flow rate in floating point by entering F30253 as the item name. (use F30247 for mass flow) The I/O server interperets the F as a floating point and will read the register pair 30253/30254 as an IEEE 32-bit float. I think the I/O Server swaps the high/low word. If not you may have a problem.

The Micromotion Modbus manual indicates floats as 20000 registers. Use the same address but 30000 instead of 20000. This works for any of the floats in the manual.

Let me know if you are using another I/O Server. Some perform the word swap, but how to do it is not always obvious.

Good Luck,

Joe Malter
Pipeline Systems Inc.
[email protected]

Benoit Galarneau

In your Wonderware IO_Real Tagname adress, make sure to use the first of the two registers, followed by a F (for exemple, "400100 F" will automatically convert 400100 and 400101 in a 32bits floating point value) and have the min & max Raw & E.U. the same if you don't want any conversion.

Also, in the modbus IO_Server, try check and uncheck the "Use Concept Data Structures" option in the Topic Definition.
You are reading the wrong register. Look in the docs and find the floating point register pair for the value you need.

Jerry Miille

This could be simply a matter of register reversal, that is the order of the bits that make up the 32-bit floating point number. This is a common problem between equipment from different manufactures. There may be a setting in the
Wonderware HMI that will allow you to select the register order or possibly in the Micromotion. If not, then you will need a converter that can reverse the data for you. The word reversal is a standard post process option
selection for the MARC Omnii-Comm ( You can download a data sheet at the link shown or contact me directly for more information.

Jerry L. Miille