The Bytes within a word are transmitted as expected. That means, 16 bit values are received correctly by the Modbus TCP App. But when I want to receive a DWORD or FLOAT the words have to be swapped. Example: server has a DWORD 0xDEADBEEF which is at address 0x3000 then the LowWord (0xBEEF) will be at address 0x3000 and the HighWord (0xDEAD) will be at address 3001. If I tell the client at Modbus TCP App it has to read an UINT32 from address 3000, I get a value of 0xBEEFDEAD. My communication partner has a fix little-endian wordorder when used as a server. By using it as a client everything (bytes, words, ...) can be swapped as needed to adapt to different systems. To my knowledge there are many systems who use different byte-/wordorders to transmit their data.
... View more