Problem:
The Accutech field unit display is showing one value but the local HMI is seeing a slightly different value. The value is close but not quite the same and it doesn't seem to fluctuate or show typical noise you might see from a regular analog signal.Solution 1:
One possibility is that the process value is changing faster than the modbus variables are updating. As a battery powered, wireless RF field device, certain communication delays are inherent.- The field unit updates it's readings based on the configured Sample Rate (SR).
- The field unit transmits its values back to the base radio based on the configured Transmit Rate (TR).
- The PLC or HMI will poll the base radio for data periodically based on it's polling rate (PR).
- Any RF weakness or interference can also cause retries and resynchronizations to add additional delay.
These delays can mean that it will take some time for a change in values to make it's way through to an HMI or PLC.
For example, assume SR = 5 seconds, TR = 20 seconds , PR = 60 seconds. The worst case scenario, would involve the process value changing at t = 0. The field unit polls the new value at t = 5 seconds, it then gets transmitted to the base radio twenty seconds alter at t = 25 seconds and the PLC polls it a minute later at t = 85 seconds. The PLC now sees the value from nearly a minute and a half ago.
Solution 2:
A second possibility can be caused by a mismatch in the floating-point word-order in combination with a modbus table offset.The base radio stores its field unit process values as 32-bit floating-point numbers. By default, the base radio stores the FP low word in the low register and the high word in the higher register number (MODBUR ORDER = 3412 by default). SCADAPack RTUs store 32-bit floating point numbers with the word order swapped. That is the FP low word is in the higher register number and the FP high word is in the lower register number. This corresponds to a base radio with MODBUS ORDER = 1234.
In addition to word order, different devices use different conventions for numbering their registers.
In a Base Radio or SCADAPack RTU, the very first holding register in the table (a register offset of 0) is identified as register 40001.
For some other devices, the very first holding register in the table (a register offset of 0) could be identified as register 40000.
This discrepancy can cause the expected register addressing to be off by 1.
These two factors combined can result in seeing a process value that is close but not quite. For example:
The base radio is storing it's temperature value in registers 40015 and 40016 of the base radio and it shows the correct value of 23.33 degrees C.
In the second case with the word order swapped and looking at the register index off by 1, you could come across the value of 23.375 degrees C which is close to the expected value but not quite.
To ensure this isn't the case with a system setup, it is important to poll for all of the field unit registers and examine all of the results.
In the second case, the least significant word will always be FFFF so you won't see tiny fluctuations in the process value that you might expect for an analog value. In fct, you might not see a change until the temperature reaches 23.25 (41B9FFFF) or 23.5 degrees (41BBFFFF).