Errata exists for this version of the document.
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 44.
Figure 44 – PubSub Diagnostics Overview
Figure 45 shows the structure of a Variable which holds a diagnostics counter with defined Properties. The PubSubDiagnosticsCounterType is formally defined in 9.1.11.5.
Figure 45 – PubSubDiagnosticsCounterType
The PubSubDiagnosticsType is the base type for the diagnostics objects and is formally defined in Table 134.
Table 134 – 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 |
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 counters in this in the Object diagnostics counters with classification Information_0.
The TotalError Variable provides the sum of all counters in this in the Object diagnostics counters with classification Error_1.
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 135.
Table 135 – Counters for PubSubDiagnosticsType
BrowseName |
Modelling Rule |
Diagnostics Level |
Class |
Description |
StateError |
Mandatory |
Basic_0 |
Error_1 |
PubSubState state machine defined in 6.2.1 changed to Error_3 state |
StateOperationalByMethod |
Mandatory |
Basic_0 |
Information_0 |
State changed to Operational_2 state triggered by Enable Method call. |
StateOperationalByParent |
Mandatory |
Basic_0 |
Information_0 |
State changed to Operational_2 state triggered by an operational parent |
StateOperationalFromError |
Mandatory |
Basic_0 |
Information_0 |
State changed from Error_3 to Operational_2. |
StatePausedByParent |
Mandatory |
Basic_0 |
Information_0 |
State changed to Paused_1 state triggered by a paused or disabled parent. |
StateDisabledByMethod |
Mandatory |
Basic_0 |
Information_0 |
State changed to Disabled_0 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 PubSubDiangosticsType.
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 |
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 have to be provided. This mechanism provides the user 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 136.
Table 136 – DiagnosticsLevel Values
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_1 diagnostic level. |
Info_2 |
The Info_2 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_3 diagnostic level. |
Debug_4 |
Diagnostic objects with debug information specific to a given implementation of PubSub are contained in the Debug_4 diagnostic level. As this level is intended for implementation specific diagnostics, no such objects are specified by the standard. |
The PubSubDiagnosticsCounterType is formally defined in Table 137.
Table 137 – 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 |
PubSubDiagnosticsCounterClassification |
PropertyType |
Mandatory |
HasProperty |
Variable |
DiagnosticsLevel |
DiagnosticsLevel |
PropertyType |
Mandatory |
HasProperty |
Variable |
TimeFirstChange |
DateTime |
PropertyType |
Optional |
The Value shall be reset to 0 when the Method Clear 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 138.
Table 138 – PubSubDiagnosticsCounterClassification Values
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 139.
Table 139 – 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 |
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 140.
Table 140 – LiveValues for PubSubDiagnosticsRootType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
ConfiguredDataSetWriters |
Mandatory |
Basic_0 |
UInt16 |
Number of configured DataSetWriters on this Server |
ConfiguredDataSetReaders |
Mandatory |
Basic_0 |
UInt16 |
Number of configured DataSetReaders on this Server |
OperationalDataSetWriters |
Mandatory |
Basic_0 |
UInt16 |
Number of DataSetWriters with state Operational |
OperationalDataSetReaders |
Mandatory |
Basic_0 |
UInt16 |
Number of DataSetReaders with state Operational |
The PubSubDiagnosticsConnectionType defines the diagnostic information for a PubSubConnectionType Object and is formally defined in Table 141.
Table 141 – 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 |
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 142.
Table 142 – LiveValues for PubSubDiagnosticsConnectionType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
ResolvedAddress |
Mandatory |
Basic_0 |
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 143.
Table 143 – 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 |
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 144.
Table 144 – Counters for PubSubDiagnosticsWriterGroupType
BrowseName |
Modelling Rule |
Diagnostics Level |
Class. |
Description |
Inherited counters from PubSubDiagnosticsType |
||||
SentNetworkMessages |
Mandatory |
Basic_0 |
Information_0 |
Sent NetworkMessages |
FailedTransmissions |
Mandatory |
Basic_0 |
Error_1 |
Error on NetworkMessage transmission |
EncryptionErrors |
Optional |
Advanced_1 |
Error_1 |
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 145.
Table 145 – LiveValues for PubSubDiagnosticsWriterGroupType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
ConfiguredDataSetWriters |
Mandatory |
Basic_0 |
UInt16 |
Number of configured DataSetWriters in this group |
OperationalDataSetWriters |
Mandatory |
Basic_0 |
UInt16 |
Number of DataSetWriters with state Operational |
SecurityTokenID |
Optional |
Info_2 |
UInt32 |
Currently used SecurityTokenID |
TimeToNextTokenID |
Optional |
Info_2 |
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 146.
Table 146 – 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 |
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 147.
Table 147 – Counters for PubSubDiagnosticsReaderGroupType
BrowseName |
Modelling Rule |
Diagnostics Level |
Class |
Description |
Inherited counters from PubSubDiagnosticsType |
||||
ReceivedNetworkMessages |
Mandatory |
Basic_0 |
Information_0 |
Received and processed NetworkMessages |
ReceivedInvalidNetworkMessages |
Optional |
Advanced_1 |
Error_1 |
Invalid format of NetworkMessage Header |
DecryptionErrors |
Optional |
Advanced_1 |
Error_1 |
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 148.
Table 148 – LiveValues for PubSubDiagnosticsReaderGroupType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
ConfiguredDataSetReaders |
Mandatory |
Basic_0 |
UInt16 |
Number of configured DataSetReaders in this group |
OperationalDataSetReaders |
Mandatory |
Basic_0 |
UInt16 |
Number of DataSetReaders with state Operational |
The PubSubDiagnosticsDataSetWriterType defines the diagnostic information for a PubSubDataSetWriterType Object and is formally defined in Table 149.
Table 149 – 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 |
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 150.
Table 150 – Counters for PubSubDiagnosticsDataSetWriterType
BrowseName |
Modelling Rule |
Diagnostics Level |
Class. |
Description |
Inherited counters from PubSubDiagnosticsType |
||||
FailedDataSetMessages |
Mandatory |
Basic_0 |
Error_1 |
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 151.
Table 151 – LiveValues for PubSubDiagnosticsDataSetWriterType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
MessageSequenceNumber |
Optional |
Info_2 |
UInt16 |
Sequence number of last DataSetMessage |
StatusCode |
Optional |
Info_2 |
StatusCode |
Status of last DataSetMessage |
MajorVersion |
Optional |
Info_2 |
UInt32 |
MajorVersion used for DataSet |
MinorVersion |
Optional |
Info_2 |
UInt32 |
MinorVersion used for DataSet |
The PubSubDiagnosticsDataSetReaderType defines the diagnostic information for a PubSubDataSetReaderType Object and is formally defined in Table 152.
Table 152 – 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 |
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 153.
Table 153 – Counters for PubSubDiagnosticsDataSetReaderType
BrowseName |
Modelling Rule |
Diagnostics Level |
Class. |
Description |
Inherited counters from PubSubDiagnosticsType |
||||
FailedDataSetMessages |
Mandatory |
Basic_0 |
Error_1 |
e.g. because of unknown MajorVersion |
DecryptionErrors |
Optional |
Advanced_1 |
Error_1 |
|
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 154.
Table 154 – LiveValues for PubSubDiagnosticsDataSetReaderType
BrowseName |
Modelling Rule |
Diagnostics Level |
DataType |
Description |
MessageSequenceNumber |
Optional |
Info_2 |
UInt16 |
SequenceNumber of last DataSetMessage |
StatusCode |
Optional |
Info_2 |
StatusCode |
Status of last DataSetMessage |
MajorVersion |
Optional |
Info_2 |
UInt32 |
MajorVersion of available DataSetMetaData |
MinorVersion |
Optional |
Info_2 |
UInt32 |
MinorVersion of available DataSetMetaData |
SecurityTokenID |
Optional |
Info_2 |
UInt32 |
Currently used SecurityTokenID |
TimeToNextTokenID |
Optional |
Info_2 |
Duration |
Time until the next key change is expected |