The pre-defined original Modbus register does not always fit inside the whole value range of the source value.
Example
A counter in the motor protection relay shows the running hours of the motor. The original system counter value has a range of 0…999999 hours. For Modbus, a 16-bit unsigned register is defined for this value. The default scale factor for this modbus register is defined as x1.
The value range for the 16-bit register is only 0…65535. This means that when the original counter reaches 65535 hours (about seven and half years), the Modbus value saturates (remains locked) at 65535.
There are several ways to overcome this problem.
- It is always possible to assign the Modbus register value to a 32-bit user-definable register. Even when the original register saturates at 65535, the user-definable register continues calculating upwards from this value.
- Rescaling can also be applied on measurands and Modbus counter (integer) values. The original Modbus value can be edited to show full hours, tens of hours or days.
- If the source hour value is divided by 10, the Modbus value shows tens of hours. This accuracy might be sufficient in many cases. Maximum Modbus register value 65535 would then actually mean 655350 hours, or approximately 75 years. Here the scale factor for Modbus registers is given as a multiplicand. Division by 10 is thus the same as multiplying it by 0.1
- If the source hour value is divided by 24, the Modbus value shows the number of days. Division by 24 is the same as multiplying by 0.04167.