# Modbus tcp float/real

**URL:** <https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517>\
**Category:** Ignition\
**Created:** [December 6, 2024, 8:31am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517 "2024-12-06T08:31:07Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jdez](https://avatars.discourse-cdn.com/v4/letter/j/f475e1/32.png) [@jdez](https://forum.inductiveautomation.com/u/jdez)\
**Post date:** [December 6, 2024, 8:31am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517/1 "2024-12-06T08:31:07Z")

</div>

Greetings,

Ignition platform 8.1.44, reading Schneider plc through modbus tcp.  
I cannot explain the value of float/real tag.

PLC - 7.85 [Real] - value is constant  
Kepware - 7.85 [Float] - value is constant  
Modbus Poll - 7.85 [32-bit Float] - value is constant

Ignition [Holding Register (Float)]  
When subscribed the value is changing 7.84 - 7.85 - 7.86 - 7.87, while in Kepware/ModbusPoll it does not change at all.

The PLC programmer assured me that the value is 7.85, but I’m unable to explain the behavior.

Thank you

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [December 6, 2024, 9:36am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517/2 "2024-12-06T09:36:07Z")

</div>

> [@Issue Reading Modbus Registers with Float conversion](https://forum.inductiveautomation.com/t/issue-reading-modbus-registers-with-float-conversion/99350/2):
>
> Have a look here, I believe that this might be what you are looking at. Essentially a float is two words, and in certain instances if you are either word swapped or off by one register (generally caused by 0 based addressing) then you can get instances where you are looking at very similar data. Try move your register address up by one or down by one and see if it affects it. If that doesn't work, try setting the "Reverse Word Order" setting in the Modbus driver. Then try moving the address…

This might be what you are looking at, your least significant bits might be overlapping with a value that is changing.

---

<div class="post-metadata">

**Author:** ![jdez](https://avatars.discourse-cdn.com/v4/letter/j/f475e1/32.png) [@jdez](https://forum.inductiveautomation.com/u/jdez)\
**Post date:** [December 6, 2024, 10:04am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517/3 "2024-12-06T10:04:43Z")

</div>

Thank you very much, it's resolved. I had to enable reverse word order and adjust for zero-based addressing. I had tried reverse word order earlier, but I didn’t test the +1/-1 address adjustment after swapping the words. I also wasn’t aware that overlaps could manifest as small discrepancies like the one I was seeing.

---

<div class="post-metadata">

**Author:** ![David\_Stone](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_stone/32/79749_2.png) [@David\_Stone](https://forum.inductiveautomation.com/u/David_Stone)\
**Post date:** [December 6, 2024, 10:20am UTC](https://forum.inductiveautomation.com/t/modbus-tcp-float-real/99517/4 "2024-12-06T10:20:49Z")

</div>

If you enter 7.85 in the converter here:  
[https://www.h-schmidt.net/FloatConverter/IEEE754.html](https://www.h-schmidt.net/FloatConverter/IEEE754.html)  
You will see that if you toggle the 17th check box (representing the first bit of the second word if this was on modbus) it still only changes the number by ~0.001 or so. This then gets rounded in the display in ignition to the numbers you were seeing.

Feel free to mark the post as a solution if the request has been solved.
