The following types are used to expose diagnostics information in the PubSub information model. Each level of the PubSub hierarchy shall contain its own diagnostics element in a standardized format. An overview over the proposed diagnostics architecture is given in Figure 46.

image049.png

Figure 46 – PubSub Diagnostics overview

Figure 47 shows the structure of a Variable which holds a diagnostics counter with defined Properties. The PubSubDiagnosticsCounterType is formally defined in 9.1.11.5.

image050.png

Figure 47 – PubSubDiagnosticsCounterType

The PubSubDiagnosticsType is the base type for the diagnostics objects and is formally defined in Table 283.

Table 283 – PubSubDiagnosticsType

Attribute

Value

BrowseName

PubSubDiagnosticsType

IsAbstract

True

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5.

HasComponent

Variable

DiagnosticsLevel

DiagnosticsLevel

BaseDataVariableType

Mandatory

HasComponent

Variable

TotalInformation

UInt32

PubSubDiagnosticsCounterType

Mandatory

HasComponent

Variable

TotalError

UInt32

PubSubDiagnosticsCounterType

Mandatory

HasComponent

Method

Reset

Defined in 9.1.11.3.

Mandatory

HasComponent

Variable

SubError

Boolean

BaseDataVariableType

Mandatory

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The DiagnosticsLevel Variable configures the current diagnostics level used for the Object. The DiagnosticsLevel DataType is defined in 9.1.11.4.

The TotalInformation Variable provides the sum of all diagnostics counters with classification Information.

The TotalError Variable provides the sum of all diagnostics counters with classification Error.

The SubError Variable indicates if any statistics Object of the next PubSub layer Objects shows a value > 0 in TotalError.

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsType are defined in Table 284.

Table 284 – Counters for PubSubDiagnosticsType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

StateError

Mandatory

Basic

Error

PubSubState state machine defined in 6.2.1 changed to Error state

StateOperationalByMethod

Mandatory

Basic

Information

State changed to Operational state triggered by Enable Method call.

StateOperationalByParent

Mandatory

Basic

Information

State changed to Operational state triggered by an operational parent

StateOperationalFromError

Mandatory

Basic

Information

State changed from Error to Operational.

StatePausedByParent

Mandatory

Basic

Information

State changed to Paused state triggered by a paused or disabled parent.

StateDisabledByMethod

Mandatory

Basic

Information

State changed to Disabled state triggered by Disable Method call.

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType.

The nodes in the Objects Counters and LiveValues may be activated/deactivated by the parameter DiagnosticsLevel in the PubSubDiagnosticsType.

The value of a node in the Object Counters shall be set to 0 whenever the counter changes from inactive to active.

The Server should dynamically remove inactive nodes from the Address Space in order to avoid confusion of the user by long lists of counters where only a few of them might be active. In case inactive nodes cannot be removed from the Address Space the Server shall set the StatusCode of the Variable Value to Bad_OutOfService.

This Method is used to set all counters in the Object diagnostics counters to the initial value.

The Client shall be authorized to modify the configuration for the PubSub functionality when invoking this Method on the Server.

Signature

Reset ();

Method Result Codes

ResultCode

Description

Bad_UserAccessDenied

The Session user is not allowed to configure the Object.

Table 285 specifies the AddressSpace representation for the Reset Method.

Table 285 – Reset Method AddressSpace definition

Attribute

Value

BrowseName

Reset

ConformanceUnits

PubSub Model Diagnostics

PubSub diagnostics are intended to assure users about the correct operation of a PubSub system and to help in the discovery of potential faults. Depending on the situation, not all diagnostic Objects might be needed, and on the other hand providing them requires resources. As a result, diagnostic objects are assigned to different diagnostic levels. Only diagnostic Objects belonging to the currently set diagnostic level or a more severe level shall be provided. This mechanism provides the user with the ability to select a suitable diagnostic configuration depending on the application.

The DiagnosticsLevel is an enumeration that specifies the possible diagnostics levels. The possible enumeration values are described in Table 286.

Table 286 – DiagnosticsLevel values

Value

Value

Description

Basic

0

Diagnostic objects from this level cannot be disabled, and thus objects from this level are the minimum diagnostic feature set that can be expected on any device that supports PubSub diagnostics at all.

Advanced

1

Diagnostic objects related to exceptional behaviour are contained in the Advanced diagnostic level.

Info

2

The Info diagnostic level contains high-level diagnostic objects related to the normal operation of a PubSub system.

Log

3

Diagnostic objects for the detailed logging of the operation of a PubSub system are contained in the Log diagnostic level.

Debug

4

Diagnostic objects with debug information specific to a given implementation of PubSub are contained in the Debug diagnostic level. As this level is intended for implementation-specific diagnostics, no such objects are specified by the document.

The PubSubDiagnosticsCounterType is formally defined in Table 287.

Table 287 – PubSubDiagnosticsCounterType

Attribute

Value

BrowseName

PubSubDiagnosticsCounterType

IsAbstract

False

ValueRank

-1 (-1 = ‘Scalar’)

DataType

UInt32

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of BaseDataVariableType defined in OPC 10000-5.

HasProperty

Variable

Active

Boolean

PropertyType

Mandatory

HasProperty

Variable

Classification

PubSubDiagnostics‌Counter‌Classification

PropertyType

Mandatory

HasProperty

Variable

DiagnosticsLevel

DiagnosticsLevel

PropertyType

Mandatory

HasProperty

Variable

TimeFirstChange

DateTime

PropertyType

Optional

Conformance Units

PubSub Model Diagnostics

The Value shall be reset to 0 when the Method Reset of the parent PubSubDiagnosticsType Object is called.

The Value shall be incremented by 1 for each corresponding event.

The Value shall not be incremented anymore when the maximum is reached (0xFFFFFFFF).

If the maximum is reached and a new event occurs, the SourceTimestamp of the Value shall be updated, even if the Value does not change. The Property Active indicates if the counter is active.

The Property Classification indicates whether this counter counts errors or other events according to PubSubDiagnosticsCounterClassification defined in 9.1.11.6.

The Property DiagnosticsLevel indicates the diagnostics level the counter belongs to. The DiagnosticsLevel is defined in 9.1.11.4.

The Property TimeFirstChange contains the Server time when the counter value changed from 0 to 1. If the counter value is 0 the Value is null.

The PubSubDiagnosticsCounterClassification is an enumeration that specifies the possible diagnostics counter classifications. The possible enumeration values are described in Table 288.

Table 288 – PubSubDiagnosticsCounterClassification values

Name

Value

Description

Information

0

The semantic of this diagnostics counter indicates expected events, which are not considered as errors.

Error

1

The semantic of this diagnostics counter indicates errors.

The PubSubDiagnosticsRootType defines the diagnostic information for the PublishSubscribe Object and is formally defined in Table 289.

Table 289 – PubSubDiagnosticsRootType

Attribute

Value

BrowseName

PubSubDiagnosticsRootType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsRootType are defined in Table 290.

Table 290 – LiveValues for PubSubDiagnosticsRootType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetWriters

Mandatory

Basic

UInt16

Number of configured DataSetWriters on this Server

ConfiguredDataSetReaders

Mandatory

Basic

UInt16

Number of configured DataSetReaders on this Server

OperationalDataSetWriters

Mandatory

Basic

UInt16

Number of DataSetWriters with state Operational

OperationalDataSetReaders

Mandatory

Basic

UInt16

Number of DataSetReaders with state Operational

The PubSubDiagnosticsConnectionType defines the diagnostic information for a PubSubConnectionType Object and is formally defined in Table 291.

Table 291 – PubSubDiagnosticsConnectionType

Attribute

Value

BrowseName

PubSubDiagnosticsConnectionType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsConnectionType are defined in Table 292.

Table 292 – LiveValues for PubSubDiagnosticsConnectionType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ResolvedAddress

Mandatory

Basic

String

Resolved address of the connection (e.g. IP Address)

The PubSubDiagnosticsWriterGroupType defines the diagnostic information for a WriterGroupType Object and is formally defined in Table 293.

Table 293 – PubSubDiagnosticsWriterGroupType

Attribute

Value

BrowseName

PubSubDiagnosticsWriterGroupType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsWriterGroupType are defined in Table 294.

Table 294 – Counters for PubSubDiagnosticsWriterGroupType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

Inherited counters from PubSubDiagnosticsType

SentNetworkMessages

Mandatory

Basic

Information

Sent NetworkMessages

FailedTransmissions

Mandatory

Basic

Error

Error on NetworkMessage transmission

EncryptionErrors

Optional

Advanced

Error

Error on signing or encrypting NetworkMessage

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsWriterGroupType are defined in Table 295.

Table 295 – LiveValues for PubSubDiagnosticsWriterGroupType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetWriters

Mandatory

Basic

UInt16

Number of configured DataSetWriters in this group

OperationalDataSetWriters

Mandatory

Basic

UInt16

Number of DataSetWriters with state Operational

SecurityTokenID

Optional

Info

UInt32

Currently used SecurityTokenID

TimeToNextTokenID

Optional

Info

Duration

Time until the next key change is expected

The PubSubDiagnosticsReaderGroupType defines the diagnostic information for a ReaderGroupType Object and is formally defined in Table 296.

Table 296 – PubSubDiagnosticsReaderGroupType

Attribute

Value

BrowseName

PubSubDiagnosticsReaderGroupType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsReaderGroupType are defined in Table 297.

Table 297 – Counters for PubSubDiagnosticsReaderGroupType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

Inherited counters from PubSubDiagnosticsType

ReceivedNetworkMessages

Mandatory

Basic

Information

Received and processed NetworkMessages

ReceivedInvalidNetwork‌Messages

Optional

Advanced

Error

Invalid format of NetworkMessage Header

DecryptionErrors

Optional

Advanced

Error

Decryption or signature check errors

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsReaderGroupType are defined in Table 298.

Table 298 – LiveValues for PubSubDiagnosticsReaderGroupType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

ConfiguredDataSetReaders

Mandatory

Basic

UInt16

Number of configured DataSetReaders in this group

OperationalDataSetReaders

Mandatory

Basic

UInt16

Number of DataSetReaders with state Operational

The PubSubDiagnosticsDataSetWriterType defines the diagnostic information for a DataSetWriterType Object and is formally defined in Table 299.

Table 299 – PubSubDiagnosticsDataSetWriterType

Attribute

Value

BrowseName

PubSubDiagnosticsDataSetWriterType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsDataSetWriterType are defined in Table 300.

Table 300 – Counters for PubSubDiagnosticsDataSetWriterType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

Inherited counters from PubSubDiagnosticsType

FailedDataSetMessages

Mandatory

Basic

Error

Number of failed DataSetMessages

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsDataSetWriterType are defined in Table 301.

Table 301 – LiveValues for PubSubDiagnosticsDataSetWriterType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

MessageSequenceNumber

Optional

Info

UInt16

Sequence number of last DataSetMessage

StatusCode

Optional

Info

StatusCode

Status of last DataSetMessage

MajorVersion

Optional

Info

UInt32

MajorVersion used for DataSet

MinorVersion

Optional

Info

UInt32

MinorVersion used for DataSet

The PubSubDiagnosticsDataSetReaderType defines the diagnostic information for a DataSetReaderType Object and is formally defined in Table 302.

Table 302 – PubSubDiagnosticsDataSetReaderType

Attribute

Value

BrowseName

PubSubDiagnosticsDataSetReaderType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of PubSubDiagnosticsType defined in 9.1.11.2.

HasComponent

Object

Counters

BaseObjectType

Mandatory

HasComponent

Object

LiveValues

BaseObjectType

Mandatory

Conformance Units

PubSub Model Diagnostics

The Object Counters contains all diagnostics counters for the diagnostics Object. The counters use the VariableType PubSubDiagnosticsCounterType defined in 9.1.11.5. The counter Variables of the PubSubDiagnosticsDataSetReaderType are defined in Table 303.

Table 303 – Counters for PubSubDiagnosticsDataSetReaderType

BrowseName

Modelling Rule

Diagnostics

Level

Class

Description

Inherited counters from PubSubDiagnosticsType

FailedDataSetMessages

Mandatory

Basic

Error

e.g. because of unknown MajorVersion

DecryptionErrors

Optional

Advanced

Error

The Object LiveValues contains all live values of the diagnostics Object. If not further specified, the live values Variables use the VariableType BaseDataVariableType. The live values Variables of the PubSubDiagnosticsDataSetReaderType are defined in Table 304.

Table 304 – LiveValues for PubSubDiagnosticsDataSetReaderType

BrowseName

Modelling Rule

Diagnostics

Level

DataType

Description

MessageSequenceNumber

Optional

Info

UInt16

SequenceNumber of last DataSetMessage

StatusCode

Optional

Info

StatusCode

Status of last DataSetMessage

MajorVersion

Optional

Info

UInt32

MajorVersion of available DataSetMetaData

MinorVersion

Optional

Info

UInt32

MinorVersion of available DataSetMetaData

SecurityTokenID

Optional

Info

UInt32

Currently used SecurityTokenID

TimeToNextTokenID

Optional

Info

Duration

Time until the next key change is expected