The ProcessValueType represents a process value. It is formally defined in Table 1.
Table 1 – ProcessValueType Definition
Attribute |
Value |
||||
BrowseName |
ProcessValueType |
||||
IsAbstract |
False |
||||
Description |
Represents a process value |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the 3:AnalogSignalType defined in OPC 30081 |
|||||
0:HasComponent |
Variable |
3:AnalogSignal |
0:Number{Any} |
3:AnalogSignalVariableType |
M |
0:HasComponent |
Variable |
ProcessValueSetpoint |
0:Number{Any} |
ProcessValueSetpointVariableType |
O |
0:HasComponent |
Method |
3:ZeroPointAdjustment |
|
|
O |
0:HasComponent |
Object |
DeviationAlarm |
|
0:ExclusiveDeviationAlarmType |
O |
0:HasComponent |
Object |
LimitAlarm |
|
0:ExclusiveLimitAlarmType |
O |
0:HasComponent |
Variable |
Status |
0:UInt16 |
0:MultiStateValueDiscreteType |
O |
0:HasComponent |
Variable |
AlarmSuppression |
0:UInt16 |
0:MultiStateValueDiscreteType |
O |
Conformance Units |
|||||
Machinery Process Values Base Types |
This ObjectType inherits the InstanceDeclarations defined on its supertypes, including the mandatory 3:SignalTag as defined in OPC 30081.
The mandatory 3:AnalogSignal Variable is overridden and additional InstanceDeclarations are added (see Table 2). It contains the process value and meta data about the process value.
The 3:AnalogSignalVariableType already provides the mandatory 0:EURange, 0:EngineeringUnits and the optional 0:ValuePrecision, 0:InstrumentRange, 3:ActualValue, 3:SimulationValue and 3:SimulationState as defined in OPC 10000-8 and OPC 30081.
The PercentageValue Variable on the 3:AnalogSignal provides the process value in percentage. The 0:EngineeringUnits of the Variable shall always be percentage (UnitId: 20529 with NamespaceUri http://www.opcfoundation.org/UA/units/un/cefact). This Variable is especially useful when the ranges for calculating the percentage values are dynamic, so that the client cannot calculate the percentage based on the 0:EURange of the 3:AnalogSignal Variable. As an example, the wear of a filter should be exposed, by providing the differential pressure. The pressure is presented as the 3:AnalogSignal and the wear is presented as the PercentageValue. Suction output is an internal value. However, the differential pressure depends on the suction output. With 50% suction output the differential pressure of 250 Pa is 0% wear (meaning new filter), for 100% suction output it is 500 Pa and 0% wear. For a used filter, the values are 1600 Pa and 60% wear for 50% suction output and 1700 Pa and 60% wear for 100% suction output. A filter to be replaced would have 2500 Pa and 100% wear for 50% suction output and 2500 Pa and 100% wear for 100% suction output.
There are four optional limit Variables on 3:AnalogSignal: LowLowLimit, LowLimit, HighLimit and HighHighLimit. They define different limits for the Value of the Variable, either absolute or in percentage. It is not required to provide all limit Variables. For example, a process value may only have a LowLimit.
- If the limit is defined in percentage, the 0:EngineeringUnits shall be percentage (UnitId: 20529 with NamespaceUri http://www.opcfoundation.org/UA/units/un/cefact). The percentage value is calculated by the range of values between the high and the low limit. 100% therefore corresponds to the equation "EURange.High minus EURange.Low".
- If the limit is defined absolute, the 0:EngineeringUnits shall be the same as for the Variable.
If one limit Variable is defined in percentage, all limit Variables shall be defined in percentage.
For all instances of ProcessValueType having an 3:AnalogSignal providing any of the limit Variables, the 3:AnalogSignal shall have scalar Values. Subtypes may be created using arrays and defining the expected behaviour with respect to the limit Variables.
The limit Variables are defined in an order. The LowLowLimit shall be smaller or equal LowLimit, which shall be smaller or equal HighLimit, which shall be smaller or equal HighHighLimit.
In Figure 6, the relation of the limit Variables, and the ranges is shown. The limit Variables are absolute, as well as the ranges.
Figure 6 – Relation between limit Variables, ranges, and current Value
Note that Servers may generate 0:LimitAlarms when the deviation limits are reached. The limit Variables are used to configure this alarm.
The optional ProcessValueSetpoint Variable provides the desired value of the 3:AnalogSignal. The Server may, or may not control the Value to reach the process value setpoint. The DataType, ValueRank and ArrayDimensions shall be the same as for the 3:AnalogSignal. The 0:EngineeringUnits Property shall have the same Value as the 0:EngineeringUnits Property of 3:AnalogSignal. The 0:InstrumentRange Property, if provided, shall have the same Value as the 0:InstrumentRange Property of 3:AnalogSignal. The 0:EURange Property shall have the same Value as the 0:InstrumentRange Property of 3:AnalogSignal, or further restrict the range, i.e. it may have a larger low and a smaller high value.
The optional 3:ZeroPointAdjustment Method is overridden and works as defined in OPC 30081. The ProcessValueType adds a 0:GeneratesEvent Reference to the ZeroPointAdjustmentEventType. When the Method is called and the execution of the Method starts, a corresponding Event is generated. Such an Event shall not be generated, when the Method was called but execution was not started, for example due to access restrictions or invalid input arguments.
The optional DeviationAlarm Object becomes active, when the process value deviates from the ProcessValueSetpoint. The limits of the DeviationAlarm are bound to the deviation Variables of the ProcessValueSetpoint. As the deviation Variables of the ProcessValueSetpoint may be defined in percentage the limits of the DeviationAlarm may need to be calculated accordingly. The 0:LowLowLimit shall be mapped to LowLowDeviation, 0:LowLimit to LowDeviation, 0:HighLimit to HighDeviation and 0:HighHighLimit to HighHighDeviation. If a deviation Variable is not present, the corresponding limit shall not be provided as well. If no deviation Variable is present, the DeviationAlarm shall not be provided.
The optional LimitAlarm Object becomes active, when the process value reaches a limit. The limits of the LimitAlarm are bound to the limit Variables of the 3:AnalogSignal. As the limit Variables of the ProcessValueSetpoint may be defined in percentage the limits of the DeviationAlarm may need to be calculated accordingly. The 0:LowLowLimit shall be mapped to LowLowLimit, 0:LowLowLimit to LowLimit, 0:HighLimit to HighLimit and 0:HighHighLimit to HighHighLimit. If a limit Variable is not present, the corresponding limit shall not be provided as well. If no limit Variable is present, the LimitAlarm shall not be provided.
The optional Status Variable indicates if a deviation limit or an absolute limit has been reached. This specification defines standardized 0:EnumValues (see Table 3) that shall be used as defined in this specification or omitted. Servers may define additional 0:EnumValues starting with 256. The deviation Variables uses the deviation Variables of the ProcessValueSetpoint, and the limit Variables of the 3:AnalogSignal.
For the standardized 0:EnumValues there is a priority, which value shall be reported, when several limits are reached. If the HighHighLimit or the LowLowLimit is reached, it shall be reported. If those are not reached, but the HighLimit or LowLimit is reached, it shall be reported. If those are not reached, but the HighHighDeviation or LowLowDeviation is reached, it shall be reported. If those are not reached, but the HighDeviation or LowDeviation is reached, it shall be reported. If there are additional 0:EnumValues defined, the priority of those is not defined, and they could be reported instead of the standardized ones.
The optional AlarmSuppression Variable indicates if alarms based on the Status shall be suppressed. This might be useful for example when starting a machine Alarms include but are not limited to OPC UA Alarms, they can for example also be acoustic or visual indications on the machine. This specification defines standardized 0:EnumValues (see Table 3) that shall be used as defined in this specification or omitted. Servers may define additional 0:EnumValues starting with 256.
The components of the ProcessValueType have additional subcomponents which are defined in Table 2.
Table 2 – ProcessValueType Additional Subcomponents
BrowsePath |
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
Others |
3:AnalogSignal |
0:HasComponent |
Variable |
PercentageValue |
0:Double |
0:AnalogUnitRangeType |
O |
3:AnalogSignal |
0:HasComponent |
Variable |
LowLowLimit |
0:Number |
0:AnalogUnitType |
O |
3:AnalogSignal |
0:HasComponent |
Variable |
LowLimit |
0:Number |
0:AnalogUnitType |
O |
3:AnalogSignal |
0:HasComponent |
Variable |
HighLimit |
0:Number |
0:AnalogUnitType |
O |
3:AnalogSignal |
0:HasComponent |
Variable |
HighHighLimit |
0:Number |
0:AnalogUnitType |
O |
The child Nodes of the ProcessValueType have additional Attribute values defined in Table 3.
Table 3 – ProcessValueType Attribute values for child Nodes
BrowsePath |
Value Attribute |
Description Attribute |
|||
3:AnalogSignal |
- |
The process value. |
|||
|
- |
Provides the process value in percentage. |
|||
|
NamespaceUri: http://www.opcfoundation.org/UA/units/un/cefact UnitId: 20529 DisplayName: % Description: percent |
- |
|||
|
Low: 0 High: 100 |
- |
|||
|
- |
Defines the absolute low low limit |
|||
|
- |
Defines the absolute low limit |
|||
|
- |
Defines the absolute high limit |
|||
|
- |
Defines the absolute high high limit |
|||
ProcessValueSetpoint |
- |
The desired value, may or may not be controlled by the server. |
|||
DeviationAlarm |
- |
Becomes active, when the process values derivates from the ProcessValueSetpoint. |
|||
LimitAlarm |
- |
Becomes active, when absolute limits are reached. |
|||
Status |
- |
Indicates if a limit has been reached. |
|||
|
{{0, NONE, Not monitoring}, {1, UNKNOWN, Status not known}, {2, BELOW_LOWLOW_LIMIT, Value is below low LowLowLimit}, {3, BELOW_LOW_LIMIT, Value is below LowLimit}, {4, BELOW_LOWLOW_DEVIATION, Value is below LowLowDeviation}, {5, BELOW_LOW_DEVIATION, Value is below LowDeviation}, {6, WITHIN_TOLERANCE, Value is in tolerance}, {7, ABOVE_HIGH_DEVIATION, Value is above HighDeviation}, {8, ABOVE_HIGHHIGH_DEVIATION, Value is above HighHighDeviation}, {9, ABOVE_HIGH_LIMIT, Value is above HighLimit}, {10, ABOVE_HIGHHIGH_LIMIT, Value is above HighHighLimit}} |
- |
|||
AlarmSuppression |
- |
Indicates if alarms based on the Status shall be suppressed. |
|||
|
{{0, OFF, no alarm suppression}, {1, HORN, suppresses only horn}, {2, COMPLETE, all alarms are suppressed}} |
- |
The components of the ProcessValueType have additional references which are defined in Table 4.
Table 4 – ProcessValueType Additional References
SourceBrowsePath |
Reference Type |
Is Forward |
TargetBrowsePath |
3:ZeroPointAdjustment |
0:GeneratesEvent |
True |
ZeroPointAdjustmentEventType |