Modbus V2 : how to force use of fc 16?


We have an old device who has a bug since the beginning (10 years ago) and it does not respond correctly to write single register resulting in a bad quality view from Ignition OPC-UA driver.
However and how strange it can be, it can respond well to write multiples register (FC 16); how can I forced the driver to use fc 16 iso fc 6…

There’s no way to do this right now without reading more data than you need (addressing things as HRI, HRUI, etc… to get 32-bit values).

Oh, here’s a work-around. Never read a 16-bit register by itself; only read in contiguous blocks of two or more.

For example, if you need the value of HR20, then also ask for the value of HR19 or HR21 and the driver will combine these into one read multiple request during optimization.

And… I just realized you were talking about writing, not reading. I think my advice above still applies, but it will probably be a lot more difficult to make sure you’re doing two writes at once, since that will probably only ever happen from system.opc.write* calls…

Well, that’s what I was thinking…
I use HRUIx and checked with wireshark, and fc16 is used.
I’ll try to managed this with this workaround.

Thank you