@Kevin.Herron,
There is perhaps a bug in modbus TCP driver or a strange behavior.
We have a device with the following table (see below)
Read HRUS Register from 1 to 11 are OK
Read HRF Register from 12 to 20 are Bad, but they can be read by another modbus master.
If we disable the first tag (HRF12), the next HRF are read with success.
It seems that Ignition driver group consecutive HRUS and HRF to make only one frame and this is not allowed by the device.
We have tried to add Address Mapping to try to force to split request, but it seems that the driver group consecutive frames too ?
The only horrible solution found is to make 2 ignition devices, one with tags for HRUS and another for tags for HRF
Devices don't know anything about how we're combining registers to derive values. The request is just for a certain range of registers, that's it.
Get a Wireshark capture and see what's going on.
If you can request 1 through 11 successfully, but a request for 1 through 20 fails, then either one of those registers has no data at it, or your device's Modbus implementation is broken.
edit: I see your last screenshot where the device returns Illegal data address when reading the full range. I'm not sure there's much you can do here.
2 Ignition devices like he's already stumbled on, I think.
Otherwise a driver would need some kind of setting where you defined arbitrary memory/register boundaries that the request optimization logic wouldn't combine across.
My driver has close to that logic, where you define the available registers, and it automatically excludes gaps from spanning. But there's no actual gap here. Hmm, some more.