Modbus MOD10 Format to handle huge numbers
Modbus Mod10 format is an agreement on how to interpret/store large numbers.
Question: How do you handle large integer values in Modbus? Eg 100,000,000,002
Answer: Use 2 or more 16-bit registers
How?
- Use the 1st register as the unit's number
- Use the 2nd register as the number of 10,000's
- Use the 3rd register as the number of 100,000,000 number
- Use the 4th register as the number of 100,000,000,000 number
Both the server of the Modbus data and the Register master must agree on
- To use the Mod10 format
- How many registers to use
If there isn't agreement then you could face the problem that a number is served in. For example, Mod10 using 3 registers and the master thinks only 2 are being used
Example
Slave and master agree on 2 register Mod 10
- Register 1 = 2
- Register 2 = 3
- Value = 30,002
Positive / Negative numbers
Any of the registers can contain a negative number or positive number in the range -9,999 to +9,999: Note that the same formula is used whether the register is signed or unsigned
Thus, to send a negative number all of the registers being used must contain a negative number.
Implementations
- Quickservers have built-in support for Mod10 using 2 registers only.
- PowerLogic PM800 series meters, CM3000 series meters. CM4000 series meters have built in support for Mod10 using 4 registers.
- Other devices – you will need to check the manuals. Most Modbus implementations do not support Mod10