Issue
Why do we add 2 unused bytes in the input or output when we add a io scanner line in the DTM browser/device list for M580 when using a Generic Modbus device?
Product Line
M580, BMENOC, M340
Resolution
The behavior is due to the fact that it was incorrectly defined in M340 and also current M580 Version of master DTMs. (The definition of M340 was carried to M580!).
M340 and M580 both have memory constraint of 32 bit alignment. Due to this, the algorithm for DDT/DDDT for M340/M580 was written to make sure all the structures are Modulo 4.
Ie: All structures created from master are made multiples of 4.
In the below example although 1 register is configured and expected is 2 bytes structure, because of above algorithm remaining 2 bytes are packed with bytes which leads to 4 bytes (with 2 bytes padding at end).
Why do we add 2 unused bytes in the input or output when we add a io scanner line in the DTM browser/device list for M580 when using a Generic Modbus device?
Product Line
M580, BMENOC, M340
Resolution
The behavior is due to the fact that it was incorrectly defined in M340 and also current M580 Version of master DTMs. (The definition of M340 was carried to M580!).
M340 and M580 both have memory constraint of 32 bit alignment. Due to this, the algorithm for DDT/DDDT for M340/M580 was written to make sure all the structures are Modulo 4.
Ie: All structures created from master are made multiples of 4.
In the below example although 1 register is configured and expected is 2 bytes structure, because of above algorithm remaining 2 bytes are packed with bytes which leads to 4 bytes (with 2 bytes padding at end).