Hi all,
today I implemented support for some quite odd encodings:
LITTLE_ENDIAN_BYTE_SWAP and BIG_ENDIAN_BYTE_SWAP.
Also did I add support for custom overriding of the connections default
byte-order in Modbus on a per tag basis.
//final PlcConnection connection = new
DefaultPlcDriverManager().getConnection("modbus-tcp://10.211.55.3?default-payload-byte-order=BIG_ENDIAN");
final PlcConnection connection = new
DefaultPlcDriverManager().getConnection("modbus-tcp://10.211.55.3?default-payload-byte-order=LITTLE_ENDIAN");
//final PlcConnection connection = new
DefaultPlcDriverManager().getConnection("modbus-tcp://10.211.55.3?default-payload-byte-order=BIG_ENDIAN_BYTE_SWAP");
//final PlcConnection connection = new
DefaultPlcDriverManager().getConnection("modbus-tcp://10.211.55.3?default-payload-byte-order=LITTLE_ENDIAN_BYTE_SWAP");
final PlcReadRequest readRequest = connection.readRequestBuilder()
.addTagAddress("16 bit BigEndian",
"holding-register:1:WORD{byte-order:'BIG_ENDIAN'}")
.addTagAddress("16 bit LittleEndian",
"holding-register:2:WORD{byte-order:'LITTLE_ENDIAN'}")
.addTagAddress("32 bit BigEndian",
"holding-register:3:DWORD{byte-order:'BIG_ENDIAN'}")
.addTagAddress("32 bit LittleEndian",
"holding-register:5:DWORD{byte-order:'LITTLE_ENDIAN'}")
.addTagAddress("32 bit BigEndianByteSwap",
"holding-register:7:DWORD{byte-order:'BIG_ENDIAN_BYTE_SWAP'}")
.addTagAddress("32 bit LittleEndianByteSwap",
"holding-register:9:DWORD{byte-order:'LITTLE_ENDIAN_BYTE_SWAP'}")
.addTagAddress("64 bit BigEndian",
"holding-register:11:LWORD{byte-order:'BIG_ENDIAN'}")
.addTagAddress("64 bit LittleEndian",
"holding-register:15:LWORD{byte-order:'LITTLE_ENDIAN'}")
.addTagAddress("64 bit BigEndianByteSwap",
"holding-register:19:LWORD{byte-order:'BIG_ENDIAN_BYTE_SWAP'}")
.addTagAddress("64 bit LittleEndianByteSwap",
"holding-register:23:LWORD{byte-order:'LITTLE_ENDIAN_BYTE_SWAP'}")
.build();
Chris