The setup
-
[Server] ThermoFisher AutoPILOT Pro Multi-Run HCF setup as modbus RTU over RS232
-
Server → GE MDS 9810 spread spectrum radio remote → OTA → GE MDS 9810 spread spectrum radio master - Client
-
[Client] Ignition 8.1.4, Raspberry Pi 4 8GB, Latest Raspbian, Onboard Physical UART TTL → RS232 Serial [Updated from 8.1.3 to 8.1.4 since original post, changed from USB->Serial as well - no change, of course, just keeping fresh]
The config
-
Ignition Edge w/ Serial client & Modbus modules
-
Device [MoTex] - Modbus RTU over serial (/dev/ttyAMA0)
- Span Gaps disabled
- Zero based addressing enabled
- Allow Read Multiple Registers Request disabled
- Attempted change word order - different results, but not correct ones
-
OPC tag sample
- [MoTex]7.IRF6201
- [MoTex]7.IRF6202
[MoTex] = device
7 = modbus server address
IRF = Input Register Float
620* = Register
Modbus registers are 32bit(Flt) - ThermoFisher’s words
If I configure the Modbus RTU device in Ignition to allow reading multiple registers in one request, I get the full value of the 6201, in my case System Date written as a float representing MMDDYY (as in 040121 for April 21 2021).
However, 6202 is quite obviously only one half of the 32 bit float.
If I turn off reading multiple registers, and of course flood the interface → radio → network → server with single requests, all data comes back correct
Of course, I have to increase timeouts and tweak some settings to ensure that all 450-ish tags on each of the nine devices can be retrieved reliably (read slowly).
This is incredibly confusing to me as I would expect that ThermoFisher would have 6201-6202 assigned to just System Date. Thus when I make my calls, I could retrieve the values appropriately. Span Groups would be problematic - or not - but I don’t think that would matter overall or at least yet.
Have you seen this behavior in a server any other time? Or perhaps I am just completely missing something (most likely?).
My desire would be a successful read per server of all tags, or at least only four or five instead of 450ish.
Update: Still have not resolved the issue via ThermoFisher but did create a new set of custom registers in the 65000 range and set them to be 2-16bit(32Flt) rather than the default 32bit(Flt) that the other registers have. This changed the incremental registers to be written increasing by 2. Update soon on the troubleshooting to read them, and final resolution of identifying the default ThermoFisher setting as the root problem.