In order to provide the health status of assets, this specification mainly uses the concepts defined in OPC 10000-100.

The Variable 2:DeviceHealth defined in OPC 10000-100 is used to provide the overall health status of an asset. It uses an enumeration having the values NORMAL, FAILURE, CHECK_FUNCTION, OFF_SPEC and MAINTENANCE_REQUIRED (see OPC 10000-100 for details).

Note that this Variable should be used for all assets, independent of what type of asset it is, for example also for software components. For some types of assets, not all values of the enumeration can reasonably be applied.

OPC 10000-100 defines the interface 2:IDeviceHealthType containing optionally the Variable 2:DeviceHealth. In older versions of OPC 10000-100 the Variable was only defined on the 2:DeviceType.

In order to support older versions of OPC 10000-100, Objects representing an asset and providing health status information shall provide the 2:DeviceHealth Variable. This should be achieved by implementing the 2:IDeviceHealthType interface providing optionally the 2:DeviceHealth Variable. This can be done either directly on the instance (X:Asset1) or via the TypeDefinition (X:Asset2), as shown in Figure 3. However, it is also allowed to just provide the 2:DeviceHealth Variable as done by X:Asset3 by using the 2:DeviceType. Note that in the current version of OPC 10000-100 2:DeviceType does implement 2:IDeviceHealthType.

image006.png

Figure 3 – Examples of assets providing health status

The SourceTimestamp of the 2:DeviceHealth Variable provides the time when the asset entered that health status. In order to provide an accurate time, Servers should preserve the time, also when restarting the Server. As this might not always be possible, a Client shall be aware that the SourceTimestamp is not always the time when the asset switched the health status.

To provide asset specific information on failure or maintenance conditions the alarming mechanism of OPC UA is used. The 2:IDeviceHealthType already defines the optional 2:DeviceHealthAlarms folder, where such alarm Objects can be provided. However, it is not required to provide the folder and the alarm Objects in the AddressSpace. Servers should use the AlarmTypes defined in OPC 10000-100 (2:DeviceHealthDiagnosticsAlarmType and subtypes) to expose the asset specific information. The event fields shall be used as defined in OPC 10000-5 and OPC 10000-9. The 0:SourceNode and 0:SourceName shall identify the asset. The 0:Severity should be used as defined in Table 15. Applications may refine those categories to a more detailed categorisation.

Table 15 – Usage of Severity for Alarms containing asset specific information

Severity

Classification

Description

801-1000

Critical Fault

The asset has permanently failed.

601-800

Major Recoverable Fault

The asset can no longer perform its function. Intervention is required.

401-600

Minor Recoverable Fault

The asset has experienced a problem but is able to continue operation until intervention occurs.

301-400

Maintenance Needed

Service is required to keep the asset operating within its designed tolerances.

201-300

Limited Resource Capacity Near Limit

A limited resource met a threshold beyond which a more serious fault would occur.

1-200

-

Used when the alarm is not active.

An asset might have several reasons why it’s not operating as expected, which often are dependent on each other. For example, the asset MyMachine might indicate the faults that a pump is not working and the oil pressure is too low. The second fault is caused by the first fault. To manage assets, it is desirable to identify the root causes of failures. In order to provide the root cause of why an asset is not operating as expected, the interface IRootCauseIndicationType is defined (see 9.4.2). Servers providing this information shall use AlarmTypes implementing this interface for alarms indicating asset specific information on failures.

The IRootCauseIndicationType is an interface and should be applied to AlarmTypes. It is formally defined in Table 16.

Note: The IRootCauseIndicationType cannot only be applied to AlarmTypes, but in general to subtypes of 0:ConditionType.

Table 16 – IRootCauseIndicationType Definition

Attribute

Value

BrowseName

IRootCauseIndicationType

IsAbstract

True

Description

Information on the root cause of conditions, should be applied to alarms (AlarmType or subtypes)

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:BaseInterfaceType Type defined in OPC 10000-5

0:HasProperty

Variable

PotentialRootCauses

RootCauseDataType[]

PropertyType

M

Conformance Units

AMB Asset Health Status Root Causes

The mandatory Property PotentialRootCauses contains an array of potential root causes of the alarm. This is intended to be a hint to the client and might be a local view on the potential root causes of the alarm. The list might not contain all potential root causes, that is, other potential root causes might exist as well. If the alarm itself is considered to be the root cause, the array shall be empty. If no potential root causes have been identified, there shall be at least one entry in the array indicating that the root cause is unknown.

The child Nodes of the IRootCauseIndicationType have additional Attribute values defined in Table 17.

Table 17 – IRootCauseIndicationType Attribute values for child Nodes

BrowsePath

Value Attribute

Description Attribute

PotentialRootCauses

-

An array of potential root causes of the alarm. This is intended to be a hint to the client and might be a local view on the potential root causes of the alarm. The list might not contain all potential root causes, that is, other potential root causes might exist as well. If the alarm itself is considered to be the root cause, the array shall be empty. If no potential root causes have been identified, there shall be at least one entry in the array indicating that the root cause is unknown.

This structure contains information about the root cause of an alarm. The structure is defined in Table 18.

Table 18 – RootCauseDataType Structure

Name

Type

Description

RootCauseDataType

structure

RootCauseId

0:NodeId

The NodeId of the root cause of an alarm. This can point to another Node in the AddressSpace or a ConditionId, that is not necessarily represented as Object in the AddressSpace. Ideally, this points directly to the root cause. Potentially, it points to an alarm that has an additional root cause. Clients shall expect that they need to follow a path to find the root cause. If the root cause is unknown, the NodeId shall be set to NULL.

RootCause

0:LocalizedText

Localized description of the root cause of an alarm. This can be the DisplayName of the Node referenced by RootCauseId or a more descriptive text. If the root cause is unknown, this should be described in the text.

Its representation in the AddressSpace is defined in Table 19.

Table 19 – RootCauseDataType Definition

Attribute

Value

BrowseName

RootCauseDataType

IsAbstract

False

Description

Root cause of an alarm

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the Structure DataType defined in OPC 10000-5

Conformance Units

AMB Asset Health Status Root Causes

Although the alarming mechanism of OPC UA is used to indicate asset specific information on the health status, there are common indications of alarms across assets. To standardize the common indications, and leave options for extensibility by companion specifications and vendors, this specification uses the mechanism of the ConditionClassId defined for conditions in OPC 10000-9. In the following, specific subtypes of BaseConditionClassType are defined that should be used as ConditionClassId for specific alarms. Other companion specifications and vendors might add additional subtypes of BaseConditionClassType and might inherit from the types defined in this specification.

The ConnectionFailureConditionClassType is used to classify conditions related to connection failures. It is formally defined in Table 20.

Table 20 – ConnectionFailureConditionClassType Definition

Attribute

Value

BrowseName

ConnectionFailureConditionClassType

IsAbstract

True

Description

One or more connections have failed

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The OverTemperatureConditionClassType is used to classify conditions related to over temperature. It is formally defined in Table 21.

Table 21 – OverTemperatureConditionClassType Definition

Attribute

Value

BrowseName

OverTemperatureConditionClassType

IsAbstract

True

Description

Over temperature

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The CalibrationDueConditionClassType is used to classify conditions related to calibration being due. It is formally defined in Table 22.

Table 22 – CalibrationDueConditionClassType Definition

Attribute

Value

BrowseName

CalibrationDueConditionClassType

IsAbstract

True

Description

Calibration is due

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:MaintenanceConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The SelfTestFailureConditionClassType is used to classify conditions related to self-test failures. It is formally defined in Table 23.

Table 23 – SelfTestFailureConditionClassType Definition

Attribute

Value

BrowseName

SelfTestFailureConditionClassType

IsAbstract

True

Description

Self-Test failure

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The FlashUpdateInProgressConditionClassType is used to classify conditions related to flash updates being in progress. It is formally defined in Table 24.

Table 24 – FlashUpdateInProgressConditionClassType Definition

Attribute

Value

BrowseName

FlashUpdateInProgressConditionClassType

IsAbstract

True

Description

Flash update in progress

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:MaintenanceConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The FlashUpdateFailedConditionClassType is used to classify conditions related to flash update failures. It is formally defined in Table 25.

Table 25 – FlashUpdateFailedConditionClassType Definition

Attribute

Value

BrowseName

FlashUpdateFailedConditionClassType

IsAbstract

True

Description

Flash update has failed

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The ConfigurationIsBadConditionClassType is used to classify conditions related to configurations being bad. It is formally defined in Table 26.

Table 26 – BadConfigurationConditionClassType Definition

Attribute

Value

BrowseName

BadConfigurationConditionClassType

IsAbstract

True

Description

Configuration is bad

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The OutOfResourcesConditionClassType is used to classify conditions related to running out of resources. It is formally defined in Table 27.

Table 27 – OutOfResourcesConditionClassType Definition

Attribute

Value

BrowseName

OutOfResourcesConditionClassType

IsAbstract

True

Description

Out of resources issues

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:SystemConditionClassType defined in OPC 10000-9

Conformance Units

AMB Asset Health Status Alarm Categories

The OutOfMemoryConditionClassType is used to classify conditions related to running out of memory. It is formally defined in Table 28.

Table 28 – OutOfMemoryConditionClassType Definition

Attribute

Value

BrowseName

OutOfMemoryConditionClassType

IsAbstract

True

Description

Out of memory issues

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the OutOfResourcesConditionClassType defined in 9.5.9

Conformance Units

AMB Asset Health Status Alarm Categories

When the Server wants to provide the overall health status of an asset over time, the history of the 2:DeviceHealth Variable shall be used. For each 2:DeviceHealth Variable, where the history is currently tracked, the Historizing Attribute is set to True and the AccessLevel is set to HistoryRead. In order to provide the information, when history tracking started, a HistoryDataConfiguration is referenced with a HasHistoricalConfiguration Reference (see OPC 10000-11 for details).

When the Server wants to provide information for tracking the alarms with detailed health information of an asset over time, the history of the events based on the alarms shall be used. . This specification does not define which Objects are used as EventNotifier. As defined in the base specification, the Server Object shall be an EventNotifier when events are supported, which can be used to subscribe to all events of the Server. It is, therefore, server-specific where the history of events can be accessed and what details of the events are stored. The general concepts are defined in OPC 10000-11. The server should provide for each asset the history of events for the same amount of time as the history of the 2:DeviceHealth.