As see, in codesys the holding registers are only for writing and the input register just for reading. I don't know for where they take this rule, onde holding register can be read or write in modbus... I have another problem tha I think will be usefull to share here. My master was reading only zeros from codesys. No erros, but the registers were always at zero... So I changed the option "aways uptade variables" (see the attachment) to "enabled". Worked for me.