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

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

Table 2 – Annotations Property

Name

Use

Data Type

Description

Annotations

O

Annotation

The 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 section 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.

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

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

Attribute

Value

BrowseName

HistoricalDataConfigurationType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasComponent

Object

AggregateConfiguration

--

AggregateConfigurationType

Mandatory

HasComponent

Object

AggregateFunctions

--

FolderType

Optional

HasProperty

Variable

Stepped

Boolean

PropertyType

Mandatory

HasProperty

Variable

Definition

String

PropertyType

Optional

HasProperty

Variable

MaxTimeInterval

Duration

PropertyType

Optional

HasProperty

Variable

MinTimeInterval

Duration

PropertyType

Optional

HasProperty

Variable

ExceptionDeviation

Double

PropertyType

Optional

HasProperty

Variable

ExceptionDeviationFormat

ExceptionDeviationFormat

PropertyType

Optional

HasProperty

Variable

StartOfArchive

UtcTime

PropertyType

Optional

HasProperty

Variable

StartOfOnlineArchive

UtcTime

PropertyType

Optional

HasProperty

Variable

ServerTimestampSupported

Boolean

PropertyType

Optional

HasProperty

Variable

MaxTimeStoredValues

Duration

PropertyType

Optional

HasProperty

Variable

MaxCountStoredValues

UInt32

PropertyType

Optional

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

Name

Value

Description

ABSOLUTE_VALUE

0

ExceptionDeviation is an absolute Value.

PERCENT_OF_VALUE

1

ExceptionDeviation is a percentage of Value.

PERCENT_OF_RANGE

2

ExceptionDeviation is a percentage of InstrumentRange (see OPC 10000-8).

PERCENT_OF_EU_RANGE

3

ExceptionDeviation is a percentage of EURange (see OPC 10000-8).

UNKNOWN

4

ExceptionDeviation type is Unknown or not specified.

Its representation in the AddressSpace is defined in Table 52.

Table 5 – ExceptionDeviationFormat definition

Attribute

Value

BrowseName

ExceptionDeviationFormat

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumStrings

0:LocalizedText []

0:PropertyType

Conformance Units

Historical Access Exception Storage

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.

  • AccessLevel
  • Historizing

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 may 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

BrowseName

HA Configuration

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasTypeDefinition

Object

Type

HistoricalDataConfigurationType

Defined in Table 3

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

image005.png

Figure 2 – ReferenceType hierarchy

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

BrowseName

HasHistoricalConfiguration

InverseName

HistoricalConfigurationOf

Symmetric

False

IsAbstract

False

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

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

BrowseName

HasCurrentData

InverseName

HasHistoricalData

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

The subtype of NonHierarchicalReferences ReferenceType is defined in OPC 10000-5.

ConformanceUnits

Historical Access HasCurrentData

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

BrowseName

HasCurrentEvent

InverseName

HasHistoricalEvent

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

The subtype of NonHierarchicalReferences ReferenceType is defined in OPC 10000-5.

ConformanceUnits

Historical Access HasCurrentEvent

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 may have been stored in history.

The HistoricalEventFilter may change over time so a Client may 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.

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

Name

Use

Data Type

Description

HistoricalEventFilter

M

EventFilter

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

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

Attribute

Value

BrowseName

HistoricalEventConfigurationType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasComponent

Object

EventTypes

--

FolderType

Mandatory

HasProperty

Variable

StartOfArchive

UtcTime

PropertyType

Optional

HasProperty

Variable

StartOfOnlineArchive

UtcTime

PropertyType

Optional

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 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.

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

Some Historians might collected information from other OPC UA Servers. The Historian might 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 might 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.

Instance 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

Attribute

Value

BrowseName

HistoricalExternalEventSourceType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

Server

String

PropertyType

Optional

HasProperty

Variable

EndpointUrl

String

PropertyType

Optional

HasProperty

Variable

SecurityMode

MessageSecurityMode

PropertyType

Optional

HasProperty

Variable

SecurityPolicyUri

String

PropertyType

Optional

HasProperty

Variable

IdentityTokenPolicy

UserTokenPolicy

PropertyType

Optional

HasProperty

Variable

TransportProfileUri

String

PropertyType

Optional

HasProperty

Variable

HistoricalEventFilter

EventFilter

PropertyType

Mandatory

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 may 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

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

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.

image006.png

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 may 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 might 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, may also be available.

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

image007.png

Figure 4 - Example Historizing External Data Source

The Pressure Variable has a custom historical configurtion. 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.

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 may be a HistoricalEventNode. To qualify as HistoricalEventNode, a Node has to 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.

image008.png

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

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.

image009.png

Figure 6 - Event History configuration example

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.

image010.png

Figure 7 – Server and HistoryServer Capabilities

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

Attribute

Value

BrowseName

HistoryServerCapabilitiesType

IsAbstract

False

References

NodeClass

Browse Name

Data Type

Type Definition

Modelling Rule

HasProperty

Variable

AccessHistoryDataCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

AccessHistoryEventsCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

MaxReturnDataValues

UInt32

PropertyType

Mandatory

HasProperty

Variable

MaxReturnEventValues

UInt32

PropertyType

Mandatory

HasProperty

Variable

InsertDataCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

ReplaceDataCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

UpdateDataCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

DeleteRawCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

DeleteAtTimeCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

InsertEventCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

ReplaceEventCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

UpdateEventCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

DeleteEventCapability

Boolean

PropertyType

Mandatory

HasProperty

Variable

InsertAnnotationCapability

Boolean

PropertyType

Mandatory

HasComponent

Object

AggregateFunctions

--

FolderType

Mandatory

HasProperty

Variable

ServerTimestampSupported

Boolean

PropertyType

Optional

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 may 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.

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

BrowseName

DefaultHAConfiguration

References

NodeClass

BrowseName

DataType

TypeDefinition

OrganizedBy by the Server Object defined in OPC 10000-5

HasTypeDefinition

ObjectType

HistoricalDataConfigurationType

Defined in 5.2.2

ConformanceUnits

Historical Access Default HA Configuration

The DefaultHEConfiguration object is defined inTable 15.

Table 15 - DefaultHEConfiguration definition

Attribute

Value

BrowseName

DefaultHEConfiguration

References

NodeClass

BrowseName

DataType

TypeDefinition

OrganizedBy by the Server Object defined in OPC 10000-5

HasTypeDefinition

ObjectType

HistoricalEventConfigurationType

Defined in 5.4.3

ConformanceUnits

Historical Access Default HE Configuration

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 5.6. Profiles (see OPC 10000-7) can be used 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.

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

Attribute

Value

BrowseName

AuditHistoryEventUpdateEventType

IsAbstract

False

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.

HasProperty

Variable

UpdatedNode

NodeId

PropertyType

Mandatory

HasProperty

Variable

PerformInsertReplace

PerformUpdateType

PropertyType

Mandatory

HasProperty

Variable

Filter

EventFilter

PropertyType

Mandatory

HasProperty

Variable

NewValues

HistoryEventFieldList [ ]

PropertyType

Mandatory

HasProperty

Variable

OldValues

HistoryEventFieldList [ ]

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryValueUpdateEventType

IsAbstract

False

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.

HasProperty

Variable

UpdatedNode

NodeId

PropertyType

Mandatory

HasProperty

Variable

PerformInsertReplace

PerformUpdateType

PropertyType

Mandatory

HasProperty

Variable

NewValues

DataValue[]

PropertyType

Mandatory

HasProperty

Variable

OldValues

DataValue[]

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryAnnotationUpdateEventType

IsAbstract

False

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.

HasProperty

Variable

PerformInsertReplace

PerformUpdateType

PropertyType

Mandatory

HasProperty

Variable

NewValues

Annotation[]

PropertyType

Mandatory

HasProperty

Variable

OldValues

Annotation[]

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryDeleteEventType

IsAbstract

False

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.

HasProperty

Variable

UpdatedNode

NodeId

PropertyType

Mandatory

HasSubtype

ObjectType

AuditHistoryRawModifyDeleteEventType

HasSubtype

ObjectType

AuditHistoryAtTimeDeleteEventType

HasSubtype

ObjectType

AuditHistoryEventDeleteEventType

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.

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

Attribute

Value

BrowseName

AuditHistoryRawModifyDeleteEventType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.

HasProperty

Variable

IsDeleteModified

Boolean

PropertyType

Mandatory

HasProperty

Variable

StartTime

UtcTime

PropertyType

Mandatory

HasProperty

Variable

EndTime

UtcTime

PropertyType

Mandatory

HasProperty

Variable

OldValues

DataValue[]

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryAtTimeDeleteEventType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.

HasProperty

Variable

ReqTimes

UtcTime[]

PropertyType

Mandatory

HasProperty

Variable

OldValues

DataValue[]

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryEventDeleteEventType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the AuditHistoryDeleteEventType defined in Table 19, i.e. it has HasProperty References to the same Nodes.

HasProperty

Variable

EventIds

ByteString[]

PropertyType

Mandatory

HasProperty

Variable

OldValues

HistoryEventFieldList

PropertyType

Mandatory

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.

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

Attribute

Value

BrowseName

AuditHistoryConfigurationChangeEventType

IsAbstract

False

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.

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

Attribute

Value

BrowseName

AuditHistoryBulkInsertEventType

IsAbstract

False

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.

HasProperty

Variable

UpdatedNode

NodeId

PropertyType

Mandatory

HasProperty

Variable

StartTime

UtcTime

PropertyType

Mandatory

HasProperty

Variable

EndTime

UtcTime

PropertyType

Mandatory

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 might 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.