# Modbus - Reading bits in reverse bit order?

**URL:** <https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526>\
**Category:** Ignition\
**Created:** [July 24, 2026, 4:37am UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526 "2026-07-24T04:37:23Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [July 24, 2026, 4:37am UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/1 "2026-07-24T04:37:24Z")

</div>

Is there any way to force a device to read register bits in reverse order? i.e. set bit 15 to the LSB and bit 0 to MSB so that when HR153 = 1, HR153.15 is ON and the rest are Off? (or, the bit value would look like this 0b1000 0000 instead of 0b0000 0001)

I'm trying to using Ignition as a tag browser to aid in testing (reading and writing to tags) another ~~garbage~~ SCADA platform that makes this a significant challenge, however it's reading modbus registers in reverse bit order. I didn't see that as an option in the ignition device settings; there's reverse word order or 32bit registers, but not reverse bits.

Is this possible?

@Kevin.Herron?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 24, 2026, 11:07am UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/2 "2026-07-24T11:07:50Z")

</div>

Nope. Not in mine, either.

---

<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:** [July 24, 2026, 12:00pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/3 "2026-07-24T12:00:20Z")

</div>

I heard that you have to use a crossover cable to connect to the device, just be careful the bytes aren't upside down.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [July 24, 2026, 12:35pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/4 "2026-07-24T12:35:08Z")

</div>

Do they make software crossover cables? I'm using a modbus simulator 🤭

---

<div class="post-metadata">

**Author:** ![Jasmine\_Quick](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jasmine_quick/32/80380_2.png) [@Jasmine\_Quick](https://forum.inductiveautomation.com/u/Jasmine_Quick)\
**Post date:** [July 24, 2026, 12:42pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/5 "2026-07-24T12:42:42Z")

</div>

Ctrl+alt+Down arrow 🤭

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [July 24, 2026, 2:28pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/6 "2026-07-24T14:28:48Z")

</div>

hacky expression, but works.

```python
binEnc(
    getBit({[.]In}, 15),
    getBit({[.]In}, 14),
    getBit({[.]In}, 13),
    getBit({[.]In}, 12),
    getBit({[.]In}, 11),
    getBit({[.]In}, 10),
    getBit({[.]In}, 9),
    getBit({[.]In}, 8),
    getBit({[.]In}, 7),
    getBit({[.]In}, 6),
    getBit({[.]In}, 5),
    getBit({[.]In}, 4),
    getBit({[.]In}, 3),
    getBit({[.]In}, 2),
    getBit({[.]In}, 1),
    getBit({[.]In}, 0)
)

```

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [July 24, 2026, 3:39pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/7 "2026-07-24T15:39:26Z")

</div>

> [@nminchin](#):
>
> reverse bits

I’ve seen some bad Modbus implementations, but that’s pretty bad.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [July 24, 2026, 4:10pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/8 "2026-07-24T16:10:49Z")

</div>

Yes... You can un-reverse the bits by setting the ReverseBitRegister option to True in that scada. I thought that was funny. They think reversed is normal...

---

<div class="post-metadata">

**Author:** ![jay](https://avatars.discourse-cdn.com/v4/letter/j/ed8c4c/32.png) [@jay](https://forum.inductiveautomation.com/u/jay)\
**Post date:** [July 24, 2026, 5:01pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/9 "2026-07-24T17:01:31Z")

</div>

It is "normal". The Modicon 984 bit order is most significant to least significant.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 24, 2026, 5:28pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/10 "2026-07-24T17:28:32Z")

</div>

> [@jay](#):
>
> Modicon 984 bit order

Indeed. But once transferred as a number over the protocol, the source bit order is meaningless. Ignition isn't a Modicon 984. The convention in modern software is bit number is the exponent of the bit's place value.

At the driver level, using the modicon bit order would yield a **different number** in Ignition versus the source, for the register as a whole.

Nick's desire **cannot** be satisfied while keeping the register's integer value correct. Only a display kludge will do.

---

<div class="post-metadata">

**Author:** ![davyd.skuba](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@davyd.skuba](https://forum.inductiveautomation.com/u/davyd.skuba)\
**Post date:** [August 4, 2026, 4:52pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/11 "2026-08-04T16:52:27Z")

</div>

If you have Modbus TCP, should be available here:  
device connections \> your device \> edit \> Show advanced properties \> Reverse Word Order (that worked for me, but found also option Reverse String Byte Order)

---

<div class="post-metadata">

**Author:** ![Nol](https://avatars.discourse-cdn.com/v4/letter/n/8e8cbc/32.png) [@Nol](https://forum.inductiveautomation.com/u/Nol)\
**Post date:** [August 4, 2026, 4:54pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/12 "2026-08-04T16:54:51Z")

</div>

That's just flipping the words though. OP is asking about reading the individual bits backwards.

Word flip:  
12 34 -\> 34 12

Reverse bits:  
12 34 -\> 43 21

---

<div class="post-metadata">

**Author:** ![davyd.skuba](https://avatars.discourse-cdn.com/v4/letter/d/f08c70/32.png) [@davyd.skuba](https://forum.inductiveautomation.com/u/davyd.skuba)\
**Post date:** [August 4, 2026, 5:41pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/13 "2026-08-04T17:41:31Z")

</div>

Hm, maybe it doesn't sounds right, but that checkbox did exactly what needed. I had bits on PLC that were converted to word, and Ignition read them in opposite order: word, in binary 1110010100000000, was read as HR153.0 was False and HR153.15 was True. After applying reverse word order i got and HR153.0 as True while HR153.15 is False.

As I understand that if there would be a DWORD, then yeah it would (probably) flip them as 1234 \> 3412, but in reality it worked exactly as needed and made 1234 \> 4321

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 4, 2026, 5:47pm UTC](https://forum.inductiveautomation.com/t/modbus-reading-bits-in-reverse-bit-order/116526/14 "2026-08-04T17:47:05Z")

</div>

> [@davyd.skuba](#):
>
> After applying reverse word order i got and HR153.0 as True while HR153.15 is False.

Something about your report is odd. Reverse word order doesn't affect plain `HR` and `IR` addresses. Only the 32bit and larger types are affected.
