Documentation on how the 'extended memory' functions (FC 20 and 21) work is pretty scarce, so I've had to guess how they work over the years.
I finally found a definitive document for PLCs which actually utilize extended memory modules and determined that the slave implementations I have (in 3 different Modbus stacks) are completely wrong. I don't know who else uses the FILE RECORD functions, but I do use them in a PLC I designed, so I'm affected by this.
There will be a major version change to 2.0 when this change is made, and this will be documented. If you don't implement Modbus slaves which support these two function codes you aren't affected. This does not affect you if you are only implementing Modbus masters.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Documentation on how the 'extended memory' functions (FC 20 and 21) work is pretty scarce, so I've had to guess how they work over the years.
I finally found a definitive document for PLCs which actually utilize extended memory modules and determined that the slave implementations I have (in 3 different Modbus stacks) are completely wrong. I don't know who else uses the FILE RECORD functions, but I do use them in a PLC I designed, so I'm affected by this.
There will be a major version change to 2.0 when this change is made, and this will be documented. If you don't implement Modbus slaves which support these two function codes you aren't affected. This does not affect you if you are only implementing Modbus masters.