When communicating between devices from different manufacturers, there could be different conventions for how data is stored in each device. This might result in a situation where one device stores a floating point value with a byte order AB CD but if the second device stores the value with a byte order BA CD, it will result in seemingly garbage data.
For example, start with a device that has a floating point 12345.6 stored in a byte order AB CD. If another device is used to handling floating points as BA DC, then the same 4 bytes (32-bits) would now give a floating point value of -4.07227e-23
In a situation like this, a word swap would be needed so that the data is placed in the correct order to be understood in the SCADAPack.
This sample program takes a floating point value from Registers 42000-42001 in the form AB CD, swaps the Byte order to BA CD and stores the result in registers 42002-42003
Registers 41000-41006 are temporarily used as the contents of 42000 are rotated one bit at a time, before ending in 42002
Similarly, registers 41010-41016 are temporarily used as the contents of 42001 are rotated one bit at a time, before ending in 42003
As seen in the screenshot, registers 42000-42001 have now had their byte order swapped in 42002-42003, going from a value of 449A 51EC to 9A44 EC51
Released for:Schneider Electric Thailand

