Modbus TCP device word/byte order

Hi, I have a modbus TCP to RTU device I'm able to communicate with using a modbus poll tool.
But I am struggling getting the same results in ignition.

I have two registers that makes a float value. To get the right formatting I had to set the value to DCBA.
My tag is set up like this: [T25_M01]1.HRF62
I believe the reverse word order setting gives me CDAB instead of ABCD.
I have also tried Reverse String Byte Order and zero based addressing without luck.

Any ideas how I can format from ABCD to DCBA?
Is it best to use a 3rd party tool for this, like kepware?

image

You've probably got 3 options:

  1. use an additional expression tag to rearrange bytes in Ignition
  2. use a 3rd party driver like @pturmel's Modbus driver, which I think supports this
  3. use a 3rd party OPC server like Kepware, which I think supports this
1 Like

I don't, actually. I suppose I could, but not soon.

Ha, ditto. If/when our Modbus driver gets attention I'll support it the same way the FINS driver supports specifying byte/word orders. But not likely "soon" by any definition.

Thanks!

I don't want to go down the rabbit-hole of rearranging bytes in ignition.
Guess we will go with the kepware solution, we just need a extra license. Did some testing and I think we can make it work.

I suppose the 4th and ideal option would be if your device could be reconfigured to use a sane byte order :stuck_out_tongue:

Has there been any update to allow swapping of bytes? I have a Input Register that is reading 0x3100 hex and the real data is supposed to be read as 0031hex or 49 decimal.

Shifts and masks on a derived tag are your best option. I decided to not support this, since the byte order within 16-bit values is one of the few things the Modbus specification clearly calls out. Any device that does otherwise is broken, and they are really rare.

1 Like