UDR values are initially copied from the source register. Thereafter the following manipulations can be applied to the UDR value.
Additional rescaling of the source data value
There are three possibilities for UDR rescaling of the Modbus source register value.
Multiplicative and divisor scaling are similar operations. The defined scale factor can in both cases be a decimal value. For example, multiplicative scaling by 0.25 is the same as divisor scaling by 4.
Ratio scaling can be used in the same manner as multiplicative or divisor scaling, but including an offset. Additionally, it is possible to define new limit ranges for the resulting register value. Value then saturates (stops) at the defined min. and max. values. This may be needed for retrofit purposes, in case the relay value must emulate exactly the same value range as the value from the replaced unit.
For multiplicative and divisor scaling, the register value always saturates at the min. and max. values for the register type in question. The value does not roll over.
Swapping high and low words within a 32-bit register
32-bit registers do not exist in the Modbus standard. A 32-bit register consists of two consecutive 16-bit registers that together form the 32-bit value. There is no official definition for the low-high word order in a 32-bit register. Most vendors, including this relay's, use the order high-low (high word on lower address) as default. If the word order is incorrect, for example in a retrofit case, it is possible to change it.
Specific retrofit UDR manipulations
- Swapping of the byte order within a register word
- Redefining the register bit size. Less than 16 bits are used for the value. The used bits can additionally be left or right justified within the register, that is, they can appear on either the most significant or least significant side of the register.
Scaling alternative | Setting | Description |
---|---|---|
No scaling | No change is made to the sourceValue | |
Ratio scaling | UDRScaleArg1 = Min in | Uses all 4 scaling arguments UDRScaleArg1... UDRScaleArg4. |
UDRScaleArg2 = Max in | ||
UDRScaleArg3 = Min out | ||
UDRScaleArg4 = Max out | ||
Multiplicative scaling | UDRScaleArg1 = Multiplicand | Uses the argument UDRScaleArg1 (Min in) |
Divisor scaling | UDRScaleArg1 = Divisor | Uses the argument UDRScaleArg1 (Min in) |
Ratio scaling operation
- X = (MaxOut-MinOut)/(MaxIn-MinIn)
- UDR_ResultValue = X × sourceValue + (MinOut - X × MinIn)
Multiplicative scaling operation
UDR_resultValue = sourceValue × multiplicand
Divisior scaling operation
UDR_resultValue = sourceValue/Divisor