5 Historical Information Model

5.1 HistoricalNodes

5.1.1 General

The Historical Access model defines additional Properties that are applicable for both HistoricalDataNodes and HistoricalEventNodes.

5.1.2 Annotations Property

The DataVariable or Object that has Annotation data will add the Annotations Property as shown in Table 2.

Table 2 – Annotations Property
NameUseData TypeDescription
AnnotationsOAnnotationThe Annotations Property is used to indicate that the history collection exposed by a HistoricalDataNode supports Annotation data. Annotation DataType is defined in 6.6.6.
ConformanceUnits
Historical Access Annotations

Since it is not allowed for Properties to have Properties, the Annotations Property is only available for DataVariables or Objects.

The Annotations Property shall be present on every HistoricalDataNode that supports modifications, deletions, or additions of Annotations whether or not Annotations currently exist. Annotation data is accessed using the standard HistoryRead functions. Annotations are modified, inserted or deleted using the standard HistoryUpdate functions and the UpdateStructuredDataDetails structure. The presence of the Annotations Property does not indicate the presence of Annotations on the HistoricalDataNode.

A Server shall add the Annotations Property to a HistoricalDataNode only if it will also support Annotations on that HistoricalDataNode. See OPC 10000-4 for adding Properties to Nodes. A Server shall remove all Annotation data if it removes the Annotations Property from an existing HistoricalDataNode.

An Annotation can be accessed in two manners. It can be accessed via ReadAnnotationDataDetails or ReadRawModifiedDetails structure in the HistoryRead service.

The ReadAnnotationDataDetails is described in 6.5.6. The ReadAnnotationDataDetails contains an element reqTimes that is a list of Timestamps. These Timestamps can be obtained from an invocation of the HistoryRead service call with a ReadRawModifiedDetails parameter for the HistoricalDataNode of the Annotations Property. In the returned dataValues array, values with the ExtraData flag set provide the SourceTimestamp.

The ReadRawModifiedDetails structure is described in 6.5.3. For the ReadRawModifiedDetails, Annotation is returned by passing an instance of the Annotation Property NodeId as the NodeId in the NodesToRead parameter.

Annotation data does not have a separate HistoricalDataConfigurationType object instance. The historical configuration defined on the parent node applies to the Annotations Property.

As with all HistoricalNodes, modifications, deletions or additions of Annotations will raise the appropriate historical audit Event with the corresponding NodeId.

5.2 HistoricalDataNodes

5.2.1 General

The Historical Data model defines additional ObjectTypes and Objects. These descriptions also include required use cases for HistoricalDataNodes.

5.2.2 HistoricalDataConfigurationType

The Historical Access Data model extends the standard type model by defining the HistoricalDataConfigurationType. This Object defines the general characteristics of a Node that defines the historical configuration of any HistoricalDataNode that is defined to contain history. It is formally defined in Table 3.

Instances of the HistoricalDataConfigurationType use the standard BrowseName as defined in 5.2.4.

Table 3 – HistoricalDataConfigurationType definition
AttributeValue
BrowseNameHistoricalDataConfigurationType
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasComponentObjectAggregateConfiguration--AggregateConfigurationTypeMandatory
HasComponentObjectAggregateFunctions--FolderTypeOptional
HasPropertyVariableSteppedBooleanPropertyTypeMandatory
HasPropertyVariableDefinitionStringPropertyTypeOptional
HasPropertyVariableMaxTimeIntervalDurationPropertyTypeOptional
HasPropertyVariableMinTimeIntervalDurationPropertyTypeOptional
HasPropertyVariableExceptionDeviationDoublePropertyTypeOptional
HasPropertyVariableExceptionDeviationFormatExceptionDeviationFormatPropertyTypeOptional
HasPropertyVariableStartOfArchiveUtcTimePropertyTypeOptional
HasPropertyVariableStartOfOnlineArchiveUtcTimePropertyTypeOptional
HasPropertyVariableServerTimestampSupportedBooleanPropertyTypeOptional
HasPropertyVariableMaxTimeStoredValuesDurationPropertyTypeOptional
HasPropertyVariableMaxCountStoredValuesUInt32PropertyTypeOptional
ConformanceUnits
Historical Access Exception Storage
Historical Access Periodic Storage
Historical Access Default HistoricalData Configuration
Historical Access Archive Period

AggregateConfiguration Object represents the browse entry point for information on how the Server treats Aggregate specific functionality such as handling Uncertain data. This Object is required to be present even if it contains no Aggregate configuration Objects. Aggregates are defined in OPC 10000-13.

AggregateFunctions is an entry point to browse to all Aggregate capabilities supported by the Server for Historical Access. All HistoryAggregates supported by the Server should be able to be browsed starting from this Object. Aggregates are defined in OPC 10000-13.

The Stepped Variable specifies whether the historical data was collected in such a manner that it should be displayed as SlopedInterpolation (sloped line between points) or as SteppedInterpolation (vertically-connected horizontal lines between points) when RawData is examined. This Property also effects how some Aggregates are calculated. A value of True indicates the stepped interpolation mode. A value of False indicates SlopedInterpolation mode. The default value is False.

The Definition Variable is a vendor-specific, human readable string that specifies how the value of this HistoricalDataNode is calculated. Definition is non-localized and will often contain an equation that can be parsed by certain Clients.

Example: Definition::= “(TempA – 25) + TempB”

The MaxTimeInterval Variable specifies the maximum interval between data points in the history repository regardless of their value change (see OPC 10000-3 for definition of Duration).

The MinTimeInterval Variable specifies the minimum interval between data points in the history repository regardless of their value change (see OPC 10000-3 for definition of Duration).

If MaxTimeInterval=MinTimeInterval and they do not equal 0 then data is collected based on a periodic sampling rate at the defined interval.

The ExceptionDeviation Variable specifies the minimum amount that the data for the HistoricalDataNodes shall change in order for the change to be reported to the history database.

The ExceptionDeviationFormat Variable specifies how the ExceptionDeviation is determined. Its values are defined in Table 4.

The StartOfArchive Variable specifies the date before which there is no data in the archive either online or offline.

The StartOfOnlineArchive Variable specifies the date of the earliest data in the online archive.

The presence of the optional Variable ServerTimestampSupported indicates the Server supports the storage of ServerTimestamps. A value of True indicates the Server (and this configuration) stores ServerTimestamps in addition to SourceTimestamp. The default is False.

The MaxTimeStoredValues is the maximum time period that is available for historical data. This is set if the historian is a circular buffer based on time (e.g. it stores the last 6 hours of data).

The MaxCountStoredValues is the maximum number of values that can be stored for a single point assigned to this configuration.

Typically, either MaxTimeStoredValues or MaxCountStoredValues is provided, if both are provided the smaller of the two applies. E.g. if 3 hours are specified and 10,000 values, then for a slowly changing point the 3 hour would be the cut off, but for a point that change more than once a second the 10,000 values would be encountered first.

Table 4 – ExceptionDeviationFormat Items
NameValueDescription
ABSOLUTE_VALUE0 ExceptionDeviation is an absolute Value.
PERCENT_OF_VALUE1 ExceptionDeviation is a percentage of Value.
PERCENT_OF_RANGE2 ExceptionDeviation is a percentage of InstrumentRange (InstrumentRange is defined in OPC 10000-8).
PERCENT_OF_EU_RANGE3 ExceptionDeviation is a percentage of EURange (EURange is defined in OPC 10000-8).
UNKNOWN4 ExceptionDeviation type is Unknown or not specified.

Its representation in the AddressSpace is defined in Table 58.

Table 5 – ExceptionDeviationFormat definition
Attribute Value
BrowseNameExceptionDeviationFormat
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Other
Subtype of the 0:Enumeration type defined in OPC 10000-5
0:HasPropertyVariable0:EnumStrings0:LocalizedText []0:PropertyType
Conformance Units
Historical Access Exception Storage

5.2.3 Attributes

Subclause 5.2.6 lists the Attributes of Variables that have particular importance for historical data. They are specified in detail in OPC 10000-3.

5.2.4 Historical Data Configuration Object

This Object is used as the browse entry point for information about HistoricalDataNode configuration. The content of this Object is already defined by its type definition in Table 3. It is formally defined in Table 6. If a HistoricalDataNode has configuration defined then one instance shall have a BrowseName of ‘HA Configuration’. Additional configurations can be defined with different BrowseNames. It is highly recommended that display names for historical configuration historical configuration are chosen that clearly describe the historical configuration e.g. “1 Second Collection”, “Long Term Configuration”, etc. All historical configuration Objects shall be referenced using the HasHistoricalConfiguration ReferenceType.

Table 6 – Historical Access configuration definition
Attribute Value
BrowseNameHA Configuration
References Node
Class
BrowseName DataType TypeDefinition ModellingRule
HasTypeDefinition

Object

Type

HistoricalDataConfigurationTypeDefined in Table 3

5.3 References

5.3.1 Overview

Figure 2 illustrate the references defined by this specification (outlined in red). Each reference type is described in their own sections.

Figure 2 – ReferenceType hierarchy

5.3.2 HasHistoricalConfiguration ReferenceType

This ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the Aggregates ReferenceType and will be used to refer from a Historical Node to one or more HistoricalDataConfigurationType Objects or HistoricalEventConfigurationType Objects.

The semantic indicates that the target Node is “used” by the source Node of the Reference. Its representation in the AddressSpace is specified in Table 7.

Table 7 – HasHistoricalConfiguration ReferenceType
Attributes Value
BrowseNameHasHistoricalConfiguration
InverseNameHistoricalConfigurationOf
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
The subtype of Aggregates ReferenceType is defined in OPC 10000-5.
ConformanceUnits
Historical Access Read Raw
Historical Access Time Instance
Historical Access Aggregates
Historical Access Events

5.3.3 HasCurrentData ReferenceType

This ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the NonHierarchicalReferences ReferenceType and will be used to refer from a HistoricalDataNode to a Node that is the source of the data being historized by the Source Node. Typically, this node is an external node in another Server.

Its representation in the AddressSpace is specified in Table 8. The Source node of this reference type shall be a HistoricalDataNode. The Target node shall be any Variable or Property

Table 8 – HasCurrentData ReferenceType
Attributes Value
BrowseNameHasCurrentData
InverseNameHasHistoricalData
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
The subtype of NonHierarchicalReferences ReferenceType is defined in OPC 10000-5.
ConformanceUnits
Historical Access HasCurrentData

5.3.4 HasCurrentEvent ReferenceType

This ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the NonHierarchicalReferences ReferenceType and will be used to relate HistoricalEventNode to a Node that is the source of the data being historized. Typically, this node is an external node in another Server.

Its representation in the AddressSpace is specified in Table 9. The Source node of this reference type shall be a HistoricalEventNode. The Target node shall be any Object or View that has the EventNotifier Attribute set to TRUE.

Table 9 – HasCurrentEvent ReferenceType
Attributes Value
BrowseNameHasCurrentEvent
InverseNameHasHistoricalEvent
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
The subtype of NonHierarchicalReferences ReferenceType is defined in OPC 10000-5.
ConformanceUnits
Historical Access HasCurrentEvent

5.4 HistoricalEventNodes

5.4.1 General

The Historical Event model defines additional Properties. These descriptions also include required use cases for HistoricalEventNodes.

Historical Access of Events uses an EventFilter. It is important to understand the differences between applying an EventFilter to current Event Notifications, and historical Event retrieval.

In real time monitoring Events are received via Notifications when subscribing to an EventNotifier. The EventFilter provides the filtering and content selection of Event Subscriptions. If an Event Notification conforms to the filter defined by the where parameter of the EventFilter, then the Notification is sent to the Client.

In historical Event retrieval the EventFilter represents the filtering and content selection used to describe what parameters of Events are available in history. These may or may not include all of the parameters of the real-time Event, i.e. not all fields available when the Event was generated can have been stored in history.

The HistoricalEventFilter can change over time so a Client can specify any field for any EventType in the EventFilter. If a field is not stored in the historical collection, then the field is set to null when it is referenced in the selectClause or the whereClause.

5.4.2 HistoricalEventFilter Property

A HistoricalEventNode that has Event history available shall provide the Property. This Property is formally defined in Table 10.

Table 10 – Standard Historical Events Properties
NameUseData TypeDescription
HistoricalEventFilterMEventFilter

A filter used by the Server to determine which Event fields are available in history. It also includes a where clause that indicates the types of Events or restrictions on the Events that are available via the HistoricalEventNode.

The HistoricalEventFilter Property can be used as a guideline for what Event fields the Historian is currently storing. But this field may have no bearing on what Event fields the Historian is capable of storing or what was stored in the past.

ConformanceUnits
Historical Access Events

5.4.3 HistoricalEventConfigurationType

The Historical Access Event model extends the standard type model by defining the HistoricalEventConfigurationType. This Object defines the general characteristics of a Node that defines the historical configuration of any HistoricalEventNode that is defined to contain history. It is formally defined in Table 11.

Instances of this type shall be referenced by a HistoricalEventNode using the HasHistoricalConfiguration ReferenceType where the source node is the HistoricalEventNode and the destination node is the instance.

Table 11 – HistoricalEventConfigurationType definition
AttributeValue
BrowseNameHistoricalEventConfigurationType
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasComponentObjectEventTypes--FolderTypeMandatory
HasPropertyVariableStartOfArchiveUtcTimePropertyTypeOptional
HasPropertyVariableStartOfOnlineArchiveUtcTimePropertyTypeOptional
HasPropertyVariableSortByEventFieldsSimpleAttributeOperand[]PropertyTypeOptional
ConformanceUnits
Historical Access Events

EventTypes is an entry point to browse to all EventTypes that can be stored by the Historian. For all EventTypes listed in this folder, all mandatory items in the listed type shall be capable of being stored as part of the Event history. It is recommended that all optional properties that are supported by the EventType can also be stored as part of the Event history.

The StartOfArchive Variable specifies the date before which there is no Event data in the archive either online or offline.

The StartOfOnlineArchive Variable specifies the date of the earliest Event data in the online archive.

The optional SortByEventFields Variable describes the event fields which a Server supports for use with the ReadEventDetailsSorted Structure defined in 6.5.2.5. When it is present it shall include at least the event fields Time, SourceName and Severity of the BaseEventType Type defined in OPC 10000-5.

5.4.4 HistoricalEventNode Attributes

The Attributes of Objects or Views that have importance for historical Events are specified in detail in OPC 10000-3. The following Attributes are particularly important for a HistoricalEventNode:

The EventNotifier Attribute is used to indicate if the Node can be used to read and/or update historical Events.

5.5 External History sources

5.5.1 General

Many Historians will collect information from internal nodes or from some underlying system. The collected information can be obtained using non-OPC UA communication. This type of historical configuration is vendor specific.

Some Historians collect information from other OPC UA Servers. The Historian can mirror the point in their own information models and use the HasCurrentData or the HasCurrentEvent Reference to indicate the source node for the data or Event. Mirroring Variables is typically simple. Variables usually do not have complex structure or nested Variables under them. For Events, the source of Events can be the Server Node or some higher level Object and replicating that Object or entire Server and the complex structure under it would not make sense.

5.5.2 External Historical Event Node

Instances of this ObjectType are used in a Historian to indicate the historical collection related details of an event stream that is being sourced from another OPC UA Server. An instance of this ObjectType shall include a HasCurrentEvent reference to the remote Server Object that is the source of the Events that are being collected.

Table 12 – HistoricalExternalEventSourceType definition
AttributeValue
BrowseNameHistoricalExternalEventSourceType
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableServerStringPropertyTypeOptional
HasPropertyVariableEndpointUrlStringPropertyTypeOptional
HasPropertyVariableSecurityModeMessageSecurityModePropertyTypeOptional
HasPropertyVariableSecurityPolicyUriStringPropertyTypeOptional
HasPropertyVariableIdentityTokenPolicyUserTokenPolicyPropertyTypeOptional
HasPropertyVariableTransportProfileUriStringPropertyTypeOptional
HasPropertyVariable HistoricalEventFilterEventFilterPropertyTypeMandatory
ConformanceUnits
Historical Access External Event Source

All instances of HistoricalExternalEventSourceType shall set the Object Attributes bits as described in 5.4.4.

An instance of this ObjectType can also have a HasHistoricalConfiguration to an instance of HistoricalEventConfigurationType, if it does not then the Server level default configuration shall apply.

The following optional information can be provided to describe how the Historian connects to receive the event stream:

HistoricalEventFilter is mandatory and is defined in 5.4.2

5.6 Example Object Models in Historian Servers (informative)

5.6.1 Overview

Subclause 5.6 provides examples of Historian instance configuration. It includes both HistoricalData and HistoricalEvent configuration, both internally collected data and externally sourced data.

5.6.2 HistoricalDataNodes Address Space Model

HistoricalDataNodes are always a part of other Nodes in the AddressSpace. They are never defined by themselves. A simple example of a container for HistoricalDataNodes would be a “Folder Object”.

Figure 3 illustrates the basic AddressSpace Model of DataVariables that includes History.

Figure 3 – Historical Variable with Historical Data Configuration and Annotations

Each HistoricalDataNode with history shall have the Historizing Attribute (see OPC 10000-3) defined and can reference a HistoricalAccessConfiguration Object. In the case where the HistoricalDataNode is itself a Property then the HistoricalDataNode inherits the values from the parent node of the Property.

Not every Variable in the AddressSpace could contain history data. To see if history data is available, a Client will look for the HistoryRead/Write states in the AccessLevel Attribute (see OPC 10000-3 for details on use of this Attribute).

Figure 3 only shows a subset of Attributes and Properties. Other Attributes that are defined for Variables in OPC 10000-3, can also be available.

5.6.3 Historical data

The following example illustrates a Historian that obtains values for a HistoricalData node from another Server.

Figure 4 - Example Historizing External Data Source

The Pressure Variable has a custom historical configuration. It also has one or more Annotations associated with it, as indicated by the Annotations property. This configuration has no aggregates configured (the AggregateConfiguration is empty). Since there are no aggregates, a value for Stepped is not provided and thus defaults to false.

5.6.4 HistoricalEventNodes Address Space Model

HistoricalEventNode Objects or Views in the AddressSpace that expose historical Events. These Nodes are identified via the EventNotifier Attribute, and provide some historical subset of the Events generated by the Server.

Each HistoricalEventNode is represented by an Object or View with a specific set of Attributes. The HistoricalEventFilter Property specifies the fields available in the history.

Not every Object or View in the AddressSpace can be a HistoricalEventNode. To qualify as HistoricalEventNode, a Node must contain historical Events. To see if historical Events are available, a Client will look for the HistoryRead/HistoryWrite states in the EventNotifier Attribute. See OPC 10000-3 for details on the use of this Attribute.

Figure 5 illustrates the basic AddressSpace Model of an Event model that includes History.

Figure 5 – Representation of an Event with History in the AddressSpace

5.6.5 Historical Events

Figure 6 provides an illustration of information related to Event sources that are in a Historian, where the events are being source from external Servers.

Figure 6 - Event History configuration example

5.7 Exposing supported functions and capabilities

5.7.1 General

OPC UA Servers can support several different functionalities and capabilities. The following standard Objects are used to expose these capabilities in a common fashion, and there are several standard defined concepts that can be extended by vendors. The Objects are outlined in OPC 10000-1.

Figure 7 – Server and HistoryServer Capabilities

5.7.2 HistoryServerCapabilitiesType

The ServerCapabilitiesType Objects for any OPC UA Server supporting Historical Access shall contain a Reference to a HistoryServerCapabilitiesType Object.

The content of this BaseObjectType is already defined by its type definition in OPC 10000-5. The Object extensions are formally defined in Table 13.

These properties are intended to inform a Client of the general capabilities of the Server. They do not guarantee that all capabilities will be available for all Nodes. For example, not all Nodes will support Events, or in the case of an aggregating Server where underlying Servers may not support Insert or a particular Aggregate. In such cases the HistoryServerCapabilities Property would indicate the capability is supported, and the Server would return appropriate StatusCodes for situations where the capability does not apply.

Table 13 – HistoryServerCapabilitiesType Definition
AttributeValue
BrowseNameHistoryServerCapabilitiesType
IsAbstractFalse
References NodeClass Browse Name Data Type Type Definition Modelling Rule
HasPropertyVariableAccessHistoryDataCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableAccessHistoryEventsCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableMaxReturnDataValuesUInt32PropertyTypeMandatory
HasPropertyVariableMaxReturnEventValuesUInt32PropertyTypeMandatory
HasPropertyVariableInsertDataCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableReplaceDataCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableUpdateDataCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableDeleteRawCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableDeleteAtTimeCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableInsertEventCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableReplaceEventCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableUpdateEventCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableDeleteEventCapabilityBooleanPropertyTypeMandatory
HasPropertyVariableInsertAnnotationCapabilityBooleanPropertyTypeMandatory
HasComponentObjectAggregateFunctions--FolderTypeMandatory
HasPropertyVariable ServerTimestampSupported BooleanPropertyTypeOptional
ConformanceUnits
Historical Access Read Raw
Historical Access Time Instance
Historical Access Aggregates
Historical Access Events

All UA Servers that support Historical Access shall include an instance of HistoryServerCapabilitiesType as part of its ServerCapabilities.

The AccessHistoryDataCapability Variable defines if the Server supports access to historical data values. A value of True indicates the Server supports access to the history for HistoricalDataNodes, a value of False indicates the Server does not support access to the history for HistoricalDataNodes. The default value is False. At least one of AccessHistoryDataCapability or AccessHistoryEventsCapability shall have a value of True for the Server to be a valid OPC UA Server supporting Historical Access.

The AccessHistoryEventsCapability Variable defines if the server supports access to historical Events. A value of True indicates the server supports access to the history of Events, a value of False indicates the Server does not support access to the history of Events. The default value is False. At least one of AccessHistoryDataCapability or AccessHistoryEventsCapability shall have a value of True for the Server to be a valid OPC UA Server supporting Historical Access.

The MaxReturnDataValues Variable defines the maximum number of values that can be returned by the Server for each HistoricalDataNode accessed during a request. A value of 0 indicates that the Server forces no limit on the number of values it can return. It is valid for a Server to limit the number of returned values and return a continuation point even if MaxReturnDataValues = 0. For example, it is possible that although the Server does not impose any restrictions, the underlying system can impose a limit that the Server is not aware of. The default value is 0.

Similarly, the MaxReturnEventValues specifies the maximum number of Events that a Server can return for a HistoricalEventNode.

The InsertDataCapability Variable indicates support for the Insert capability. A value of True indicates the Server supports the capability to insert new data values in history, but not overwrite existing values. The default value is False.

The ReplaceDataCapability Variable indicates support for the Replace capability. A value of True indicates the Server supports the capability to replace existing data values in history, but will not insert new values. The default value is False.

The UpdateDataCapability Variable indicates support for the Update capability. A value of True indicates the Server supports the capability to insert new data values into history if none exists, and replace values that currently exist. The default value is False.

The DeleteRawCapability Variable indicates support for the delete raw values capability. A value of True indicates the Server supports the capability to delete RawData values in history. The default value is False.

The DeleteAtTimeCapability Variable indicates support for the delete at time capability. A value of True indicates the Server supports the capability to delete a data value at a specified time. The default value is False.

The InsertEventCapability Variable indicates support for the Insert capability. A value of True indicates the Server supports the capability to insert new Events in history. An insert is not a replace. The default value is False.

The ReplaceEventCapability Variable indicates support for the Replace capability. A value of True indicates the Server supports the capability to replace existing Events in history. A replace is not an insert. The default value is False.

The UpdateEventCapability Variable indicates support for the Update capability. A value of True indicates the Server supports the capability to insert new Events into history if none exists, and replace values that currently exist. The default value is False.

The DeleteEventCapability Variable indicates support for the deletion of Events capability. A value of True indicates the Server supports the capability to delete Events in history. The default value is False.

The InsertAnnotationCapability Variable indicates support for Annotations. A value of True indicates the Server supports the capability to insert Annotations. Some Servers that support Inserting of Annotations will also support editing and deleting of Annotations. The default value is False.

AggregateFunctions is an entry point to browse to all Aggregate capabilities supported by the Server for Historical Access. All HistoryAggregates supported by the Server should be able to be browsed starting from this Object. Aggregates are defined in OPC 10000-13. If the Server does not support Aggregates the Folder is left empty.

The ServerTimestampSupported indicates the Server supports the storage of ServerTimestamps. If this Variable is not present, the Server does not support storage of ServerTimestamps.

5.7.3 Default configuration

This specification defines a manner of exposing the configuration associated with a HistoricalNode (both HistoricalDataNode and HistoricalEventNode), but this configuration is not required for all nodes. If the configuration of individual nodes is not provided for all nodes, the Historian shall expose a default instance under the Server Object. If HistoricalDataNodes exist without a referenced configuration, an Object with a BrowseName of “DefaultHAConfiguration” shall be exposed. If HistoricalEventNodes exist without configuration, an object with a BrowseName of “DefaultHEConfiguration” shall be exposed. For any Node that does not have a referenced historical configuration but does support history, the default appropriate configuration shall be applied (DefaultHAConfiguration for Variables, DefaultHEConfiguration for Objects).

A Client shall assume the default configuration for any HistoricalNode that does not reference a historical configuration.

The DefaultHAConfiguration object is defined in Table 14.

Table 14 - DefaultHAConfiguration definition
Attribute Value
BrowseNameDefaultHAConfiguration
References NodeClass BrowseName DataType TypeDefinition
OrganizedBy by the Server Object defined in OPC 10000-5
HasTypeDefinitionObjectTypeHistoricalDataConfigurationTypeDefined in 5.2.2
ConformanceUnits
Historical Access Default HA Configuration

The DefaultHEConfiguration object is defined inTable 15.

Table 15 - DefaultHEConfiguration definition
Attribute Value
BrowseNameDefaultHEConfiguration
References NodeClass BrowseName DataType TypeDefinition
OrganizedBy by the Server Object defined in OPC 10000-5
HasTypeDefinitionObjectTypeHistoricalEventConfigurationTypeDefined in 5.4.3
ConformanceUnits
Historical Access Default HE Configuration

5.8 Historical Audit Events

5.8.1 General

AuditEvents are generated as a result of an action taken on the Server by a Client of the Server. For example, in response to a Client issuing a write to a Variable, the Server would generate an AuditEvent describing the Variable as the source and the user and Client Session as the initiators of the Event. Not all Servers support auditing, but if a Server supports auditing, then it shall support audit Events as described in OPC 10000-7 to determine if a Server supports auditing. Servers shall generate Events of the AuditHistoryUpdateEventType or a sub-type of this type for all invocations of the HistoryUpdate Service on any HistoricalNode. See OPC 10000-3 and OPC 10000-5 for details on the AuditHistoryUpdateEventType model. In the case where the HistoryUpdate Service is invoked to insert Historical Events, the AuditHistoryEventUpdateEventType Event shall include the EventId of the inserted Event and a description that indicates that the Event was inserted. In the case where the HistoryUpdate Service is invoked to delete records, the AuditHistoryDeleteEventType or one of its sub-types shall be generated. See 6.8 for details on updating historical data or Events.

In particular using the Delete raw or Delete modified functionality shall generate an AuditHistoryRawModifyDeleteEventType Event or a sub-type of it. Using the Delete at time functionality shall generate an AuditHistoryAtTimeDeleteEventType Event or a sub-type of it. Using the Delete Event functionality shall generate an AuditHistoryEventDeleteEventType Event or a sub-type of it. All other updates shall follow the guidelines provided in the AuditHistoryUpdateEventType model.

5.8.2 AuditHistoryEventUpdateEventType

This is a subtype of AuditHistoryUpdateEventType and is used for categorization of History Event update related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 16.

Table 16 – AuditHistoryEventUpdateEventType definition
AttributeValue
BrowseNameAuditHistoryEventUpdateEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryUpdateEventType defined in OPC 10000-3, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableUpdatedNodeNodeIdPropertyTypeMandatory
HasPropertyVariablePerformInsertReplacePerformUpdateType PropertyTypeMandatory
HasPropertyVariableFilterEventFilterPropertyTypeMandatory
HasPropertyVariableNewValuesHistoryEventFieldList [ ]PropertyTypeMandatory
HasPropertyVariableOldValuesHistoryEventFieldList [ ]PropertyTypeMandatory
ConformanceUnits
Historical Access Event Audit Events

This EventType inherits all Properties of the AuditHistoryUpdateEventType. Their semantic is defined in OPC 10000-3.

The UpdateNode identifies the Attribute that was written on the SourceNode.

The PerformInsertReplace enumeration reflects the parameter on the Service call.

The Filter reflects the Event filter passed on the call to select the Events that are to be updated.

The NewValues identify the value that was written to the Event.

The OldValues identify the value that the Events contained before the update. It is acceptable for a Server that does not have this information to report a null value. In the case of an insert it is expected to be a null value.

Both the NewValues and the OldValues will contain Events with the appropriate fields, each with appropriately encoded values.

5.8.3 AuditHistoryValueUpdateEventType

This is a subtype of AuditHistoryUpdateEventType and is used for categorization of history value update related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 17.

Table 17 – AuditHistoryValueUpdateEventType definition
AttributeValue
BrowseNameAuditHistoryValueUpdateEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryUpdateEventType defined in OPC 10000-3, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableUpdatedNodeNodeIdPropertyTypeMandatory
HasPropertyVariablePerformInsertReplacePerformUpdateTypePropertyTypeMandatory
HasPropertyVariableNewValuesDataValue[]PropertyTypeMandatory
HasPropertyVariableOldValuesDataValue[]PropertyTypeMandatory
ConformanceUnits
Historical Access Data Audit Events

This EventType inherits all Properties of the AuditHistoryUpdateEventType. Their semantic is defined in OPC 10000-3.

The UpdatedNode identifies the Attribute that was written on the SourceNode.

The PerformInsertReplace enumeration reflects the parameter on the Service call.

The NewValues identify the value that was written to the Event.

The OldValues identify the value that the Event contained before the write. It is acceptable for a Server that does not have this information to report a null value. In the case of an insert it is expected to be a null value.

Both the NewValues and the OldValues will contain a value in the DataType and encoding used for writing the value.

5.8.4 AuditHistoryAnnotationUpdateEventType

This is a subtype of AuditHistoryUpdateEventType and is used the insertion or change of an annotation. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 18.

Table 18 – AuditHistoryAnnotationUpdateEventType definition
AttributeValue
BrowseNameAuditHistoryAnnotationUpdateEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryUpdateEventType defined in OPC 10000-3, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariablePerformInsertReplacePerformUpdateTypePropertyTypeMandatory
HasPropertyVariableNewValuesAnnotation[]PropertyTypeMandatory
HasPropertyVariableOldValuesAnnotation[]PropertyTypeMandatory
ConformanceUnits
Historical Access Annotation Audit Events

This EventType inherits all Properties of the AuditHistoryUpdateEventType. Their semantic is defined in OPC 10000-3.

The PerformInsertReplace enumeration reflects the corresponding parameter on the Service call.

The NewValues identify the Annotation that was written. In the case of a remove, it is expected to be a null value.

The OldValues identify the value that the Annotation contained before the write. It is acceptable for a Server that does not have this information to report a null value in the case of an update. In the case of an insert it is expected to be a null value.

Both the NewValues and the OldValues will contain a value in the DataType and encoding used for writing the value.

5.8.5 AuditHistoryDeleteEventType

This is a subtype of AuditHistoryUpdateEventType and is used for categorization of history delete related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 19.

Table 19 – AuditHistoryDeleteEventType definition
AttributeValue
BrowseNameAuditHistoryDeleteEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryUpdateEventType defined in OPC 10000-3, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableUpdatedNodeNodeIdPropertyTypeMandatory
HasSubtypeObjectTypeAuditHistoryRawModifyDeleteEventType
HasSubtypeObjectTypeAuditHistoryAtTimeDeleteEventType
HasSubtypeObjectTypeAuditHistoryEventDeleteEventType
ConformanceUnits
Historical Access Delete Raw Audit Events

This EventType inherits all Properties of the AuditUpdateEventType. Their semantic is defined in OPC 10000-3.

The UpdatedNode property identifies the NodeId that was used for the delete operation.

5.8.6 AuditHistoryRawModifyDeleteEventType

This is a subtype of AuditHistoryDeleteEventType and is used for categorization of history delete related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 20.

Table 20 – AuditHistoryRawModifyDeleteEventType definition
AttributeValue
BrowseNameAuditHistoryRawModifyDeleteEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableIsDeleteModifiedBooleanPropertyTypeMandatory
HasPropertyVariableStartTimeUtcTimePropertyTypeMandatory
HasPropertyVariableEndTimeUtcTimePropertyTypeMandatory
HasPropertyVariableOldValuesDataValue[]PropertyTypeMandatory
ConformanceUnits
Historical Access Audit Delete Raw

This EventType inherits all Properties of the AuditHistoryDeleteEventType. Their semantic is defined in 5.8.5.

The IsDeleteModified reflects the isDeleteModified parameter of the call.

The StartTime reflects the starting time parameter of the call.

The EndTime reflects the ending time parameter of the call.

The OldValues identify the value that history contained before the delete. A Server should report all deleted values. It is acceptable for a Server that does not have this information to report a null value. The OldValues will contain a value in the DataType and encoding used for writing the value.

5.8.7 AuditHistoryAtTimeDeleteEventType

This is a subtype of AuditHistoryDeleteEventType and is used for categorization of history delete related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 21.

Table 21 – AuditHistoryAtTimeDeleteEventType definition
AttributeValue
BrowseNameAuditHistoryAtTimeDeleteEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableReqTimesUtcTime[]PropertyTypeMandatory
HasPropertyVariableOldValuesDataValue[]PropertyTypeMandatory
ConformanceUnits
Historical Access Audit Delete At Time

This EventType inherits all Properties of the AuditHistoryDeleteEventType. Their semantic is defined in 5.8.8.

The ReqTimes reflect the request time parameter of the call.

The OldValues identifies the value that history contained before the delete. A Server should report all deleted values. It is acceptable for a Server that does not have this information to report a null value. The OldValues will contain a value in the DataType and encoding used for writing the value.

5.8.8 AuditHistoryEventDeleteEventType

This is a subtype of AuditHistoryDeleteEventType and is used for categorization of history delete related Events. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 22.

Table 22 – AuditHistoryEventDeleteEventType definition
AttributeValue
BrowseNameAuditHistoryEventDeleteEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableEventIdsByteString[]PropertyTypeMandatory
HasPropertyVariableOldValuesHistoryEventFieldListPropertyTypeMandatory
ConformanceUnits
Historical Access Audit Delete Events

This EventType inherits all Properties of the AuditHistoryDeleteEventType. Their semantic is defined in 5.8.5.

The EventIds reflect the EventIds parameter of the call.

The OldValues identify the value that history contained before the delete. A Server should report all deleted values. It is acceptable for a Server that does not have this information to report a null value. The OldValues will contain an Event with the appropriate fields, each with appropriately encoded values.

5.8.9 AuditHistoryConfigurationChangeEventType

This is a subtype of AuditEventType and is used for categorization of history configuration changes. This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined in Table 22.

Table 23 – AuditHistoryConfigurationChangeEventType definition
AttributeValue
BrowseNameAuditHistoryConfigurationChangeEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditEventType defined in OPC 10000-5, i.e. it has HasProperty References to the same Nodes.
ConformanceUnits
Historical Access Audit Configuration Change Events

This EventType inherits all Properties of the AuditEventType. Their semantic is defined in OPC 10000-5.

5.8.10 AuditHistoryBulkInsertEventType

This is a subtype of AuditEventType and is used for tracking a bulk insertion of HistoricalData or HistoricalEvents into a Historian. This Event should not be generated for a given Node more frequently than once per minute, even if inserts occur more frequently.

This type follows all the behaviour of its parent type. Its representation in the AddressSpace is formally defined Table 24.

Table 24 – AuditHistoryBulkInsertEventType definition
AttributeValue
BrowseNameAuditHistoryBulkInsertEventType
IsAbstractTrue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
Subtype of the AuditEventType defined in OPC 10000-5, i.e. it has HasProperty References to the same Nodes.
HasPropertyVariableUpdatedNodeNodeIdPropertyTypeMandatory
HasPropertyVariableStartTimeUtcTimePropertyTypeMandatory
HasPropertyVariableEndTimeUtcTimePropertyTypeMandatory
ConformanceUnits
Historical Access Audit BulkInsert Events

This EventType inherits all Properties of the AuditEventType. Their semantic is defined in OPC 10000-5.

UpdatedNode is the NodeId that had a bulk insert of historical information. It can be a HistoricalDataNode or a HistoricalEventNode.

StartTime is the oldest time of the block that was inserted.

EndTime is the newest time of the block that was inserted.