All protocol modules support the scaling of item values. This allows client applications to view or change data based on calculated formula instead of raw device data. Any item can be scaled, with the exception of Boolean (bit) and String items. After scaling the original item data type will be changed to Double.
To apply scaling to an item, use the following syntax as the OPC item name:
ItemName{SL:LR:HR:LE:HE}
LowRaw, HighRaw, LowEGU, HighEGU in "{SL:LR:HR:LE:HE}"
Validate lows are lower than highs.
Below is SL formula used to calculate scaled data after reading from device:
Scaled = (Raw-LoRaw)/(HiRaw-LoRaw)*(HiEGU-LoEGU)+LoEGU
Example: Device1.40001{SL:0:4095:0:100}
If device returns raw value 1000 the scaled value should be:
Scaled = (1000 - 0)/(4095 - 0)*(100 - 0) + 0 = 24.42
This sample shows how the raw data of 1000 was calculated with SL formula to generate the result of 24.42.
Below is SL formula used to calculate raw data before sending to device:
Raw = (Scaled-LoEGU)/(HiEGU-LoEGU)*(HiRaw-LoRaw)+LoRaw
Example: Device1.40001{SL:0:4095:0:100}
If a scaled value of 60 was written to the device then the actual data written to the device will be:
Raw = (60 - 0)/(100 - 0)*(4095 - 0) + 0 = 2457
The above sample shows how the scaled value of 60 is written to the device as actual raw value of 2457.
It is possible to lose data precision due to data type conversion. |
ItemName{SQ:LR:HR:LE:HE}
LowRaw, HighRaw, LowEGU, HighEGU in "{SQ:LR:HR:LE:HE}"
Validate lows are lower than highs.
Below is the SQ formula used to calculate scaled data after reading from device:
Scaled = SQRT((Raw-LoRaw)/(HiRaw-LoRaw))*(HiEGU-LoEGU)+LoEGU
Example: Device1.40002{SQ:0:4095:0:100}
If device returns raw value 1000 the scaled value should be:
Scaled = SQRT((1000 - 0)/(4095 - 0))*(100 - 0) + 0 = 49.42
This sample shows how the raw data of 1000 was calculated with the SQ formula to generate the result of 49.42.
Below is the SQ formula used to calculate raw data before sending to device:
Raw = ((Scaled-LoEGU)/(HiEGU–LoEGU))^2*(HiRaw-LoRaw)+LoRaw
Example: Device1.40002{SQ:0:4095:0:100}
If a scaled value of 60 was written to the device then the actual data written to the device will be:
Raw = ((60 - 0)/(100 - 0))^2*(4095 - 0) + 0 = 1474.2
Above sample shows how the scaled data of 60 being written to device as actual raw value of 1474.2.
It is possible to lose data precision due to data type conversion. |
ItemName{SG:Gain:Offset}
Gain, Offset in "{SG:Gain:Offset}"
Validate Gain is not zero.
Below is the SG formula used to calculate scaled data after reading from device:
Scaled = Raw * gain + offset
Example: Device1.40003{SG:2.5:1}
If the device returns raw value of 1000 the scaled value should be:
Scaled = 1000 * 2.5 + 1 = 2501
This sample shows how the raw data of 1000 was calculated with the SG formula to generate the result of 2501.
Below is the SG formula used to calculate raw data before sending to device:
Raw = (Scaled - offset) / gain
Example: Device1.40003{SG:2.5:1}
If a scaled value of 60 was written to the device then the actual data written to the device will be:
Raw = (60 - 1)/2.5 = 24.4
The above sample shows how the scaled data of 60 was written to the device as actual raw value of 24.4.
It is possible to lose data precision due to data type conversion. |
ItemName{SI:Inverse} or {SI}
Inverse in "{SI:Inverse}" or “{SI}”
Validate that Item raw value is not zero
Below is the SI formula used to calculate scaled data after reading from device:
Scaled = Inverse/Raw
Example: Device1.40003{SI:2}
If the device returns a raw value of 1000 the scaled value should be:
Scaled = 2/1000 = 0.002
This sample shows how the raw data of 1000 was calculated with the SI formula to generate the result of 0.002.
Below is the SI formula used to calculate raw data before sending to device:
Raw = (1/Scaled) * Inverse
Example: Device1.40003{SI:2}
If a scaled value of 0.5 was written to the device then the actual data written to the device will be:
Raw = (1/0.5) * 2 = 4
The above sample shows how the scaled data of 0.5 was written to the device as an actual raw value of 4.