OPC 10000-14: OPC Unified Architecture

Part 14: PubSub

Release 1.04
2018-02-06

Copyright (c) 2019 OPC Foundation
Generated on 11/13/2019 12:37:01 PM.

This document is subject to the license terms described here.

This document is a copy of the original which can be found here.

Table of Contents

1 Scope

2 Normative references

3 Terms, definitions and conventions
    3.1 Terms and definitions
    3.2 Abbreviations and symbols

4 Overview
    4.1 Fields of application
    4.2 Abstraction layers
    4.3 Decoupling by use of middleware
    4.4 Synergy of models

5 PubSub Concepts
    5.1 Introduction
    5.2 DataSet
        5.2.1 General
        5.2.2 DataSetClass
        5.2.3 DataSetMetaData
    5.3 Messages
        5.3.1 General
        5.3.2 DataSetMessage field
        5.3.3 DataSetMessage
        5.3.4 NetworkMessage
        5.3.5 Message Security
        5.3.6 Transport Security
        5.3.7 SecurityGroup
    5.4 Entities
        5.4.1 Publisher
            5.4.1.1 General
            5.4.1.2 Message sending
        5.4.2 Subscriber
            5.4.2.1 General
            5.4.2.2 Message reception
        5.4.3 Security Key Service
            5.4.3.1 General
            5.4.3.2 SecurityGroup Management
            5.4.3.3 Key Acquisition Handshakes
            5.4.3.4 Authorization Services and Security Key Service
        5.4.4 Message Oriented Middleware
            5.4.4.1 General
            5.4.4.2 Broker-less Middleware
                5.4.4.2.1 General
                5.4.4.2.2 Broker-less model with OPC UA UDP
            5.4.4.3 Broker-based Middleware
                5.4.4.3.1 General
                5.4.4.3.2 Broker-based model

6 PubSub Communication Parameters
    6.1 Overview
    6.2 Common Configuration Parameters
        6.2.1 PubSubState State Machine
        6.2.2 PublishedDataSet Parameters
            6.2.2.1 DataSetMetaData
                6.2.2.1.1 General
                6.2.2.1.2 DataSetMetaDataType
                6.2.2.1.3 FieldMetaData
                6.2.2.1.4 DataSetFieldFlags
                6.2.2.1.5 ConfigurationVersionDataType
            6.2.2.2 DataSetClassId
            6.2.2.3 ExtensionFields
            6.2.2.4 PublishedDataSetDataType
            6.2.2.5 PublishedDataSetSourceDataType
            6.2.2.6 Published Data Items
                6.2.2.6.1 PublishedData
                6.2.2.6.2 PublishedDataItemsDataType
            6.2.2.7 Published Events
                6.2.2.7.1 EventNotifier
                6.2.2.7.2 SelectedFields
                6.2.2.7.3 Filter
                6.2.2.7.4 PublishedEventsDataType
        6.2.3 DataSetWriter Parameters
            6.2.3.1 DataSetWriterId
            6.2.3.2 DataSetFieldContentMask
            6.2.3.3 KeyFrameCount
            6.2.3.4 DataSetWriterProperties
            6.2.3.5 DataSetWriter Structure
                6.2.3.5.1 DataSetWriterDataType
                6.2.3.5.2 DataSetWriterTransportDataType
                6.2.3.5.3 DataSetWriterMessageDataType
        6.2.4 Shared PubSubGroup Parameters
            6.2.4.1 General
            6.2.4.2 SecurityMode
            6.2.4.3 SecurityGroupId
            6.2.4.4 SecurityKeyServices
            6.2.4.5 MaxNetworkMessageSize
            6.2.4.6 GroupProperties
            6.2.4.7 PubSubGroup Structure
        6.2.5 WriterGroup Parameters
            6.2.5.1 WriterGroupId
            6.2.5.2 PublishingInterval
            6.2.5.3 KeepAliveTime
            6.2.5.4 Priority
            6.2.5.5 LocaleIds
            6.2.5.6 WriterGroup Structures
                6.2.5.6.1 WriterGroupDataType
                6.2.5.6.2 WriterGroupTransportDataType
                6.2.5.6.3 WriterGroupMessageDataType
        6.2.6 PubSubConnection Parameters
            6.2.6.1 PublisherId
            6.2.6.2 TransportProfileUri
            6.2.6.3 Address
            6.2.6.4 ConnectionProperties
            6.2.6.5 PubSubConnection Structure
                6.2.6.5.1 PubSubConnectionDataType
                6.2.6.5.2 ConnectionTransportDataType
                6.2.6.5.3 NetworkAddressDataType
                6.2.6.5.4 NetworkAddressUrlDataType
        6.2.7 ReaderGroup Parameters
            6.2.7.1 General
            6.2.7.2 ReaderGroup Structures
                6.2.7.2.1 ReaderGroupDataType
                6.2.7.2.2 ReaderGroupTransportDataType
                6.2.7.2.3 ReaderGroupMessageDataType
        6.2.8 DataSetReader Parameters
            6.2.8.1 PublisherId
            6.2.8.2 WriterGroupId
            6.2.8.3 DataSetWriterId
            6.2.8.4 DataSetMetaData
            6.2.8.5 DataSetFieldContentMask
            6.2.8.6 MessageReceiveTimeout
            6.2.8.7 SecurityMode
            6.2.8.8 SecurityGroupId
            6.2.8.9 SecurityKeyServices
            6.2.8.10 DataSetReaderProperties
            6.2.8.11 DataSetReader Structure
                6.2.8.11.1 DataSetReaderDataType
                6.2.8.11.2 DataSetReaderTransportDataType
                6.2.8.11.3 DataSetReaderMessageDataType
        6.2.9 SubscribedDataSet Parameters
            6.2.9.1 SubscribedDataSetDataType
            6.2.9.2 TargetVariables
                6.2.9.2.1 General
                6.2.9.2.2 TargetVariablesDataType
                6.2.9.2.3 FieldTargetDataType
                6.2.9.2.4 OverrideValueHandling
            6.2.9.3 SubscribedDataSetMirror
                6.2.9.3.1 ParentNodeName
                6.2.9.3.2 RolePermissions
                6.2.9.3.3 SubscribedDataSetMirrorDataType
        6.2.10 Information flow and status handling
        6.2.11 PubSubConfigurationDataType
    6.3 Message Mapping Configuration Parameters
        6.3.1 UADP Message Mapping
            6.3.1.1 UADP NetworkMessage Writer
                6.3.1.1.1 Relationship of Timing Parameters
                6.3.1.1.2 GroupVersion
                6.3.1.1.3 DataSetOrdering
                6.3.1.1.4 NetworkMessageContentMask
                6.3.1.1.5 SamplingOffset
                6.3.1.1.6 PublishingOffset
                6.3.1.1.7 UadpWriterGroupMessageDataType Structure
            6.3.1.2 UADP DataSetMessage Writer
                6.3.1.2.1 General
                6.3.1.2.2 DataSetMessageContentMask
                6.3.1.2.3 ConfiguredSize
                6.3.1.2.4 NetworkMessageNumber
                6.3.1.2.5 DataSetOffset
                6.3.1.2.6 UadpDataSetWriterMessageDataType Structure
            6.3.1.3 UADP DataSetMessage Reader
                6.3.1.3.1 GroupVersion
                6.3.1.3.2 NetworkMessageNumber
                6.3.1.3.3 DataSetOffset
                6.3.1.3.4 DataSetClassId
                6.3.1.3.5 NetworkMessageContentMask
                6.3.1.3.6 DataSetMessageContentMask
                6.3.1.3.7 PublishingInterval
                6.3.1.3.8 ReceiveOffset
                6.3.1.3.9 ProcessingOffset
                6.3.1.3.10 UadpDataSetReaderMessageDataType
        6.3.2 JSON Message Mapping
            6.3.2.1 JSON NetworkMessage Writer
                6.3.2.1.1 NetworkMessageContentMask
                6.3.2.1.2 JsonWriterGroupMessageDataType Structure
            6.3.2.2 JSON DataSetMessage Writer
                6.3.2.2.1 DataSetMessageContentMask
                6.3.2.2.2 JsonDataSetWriterMessageDataType Structure
            6.3.2.3 JSON DataSetMessage Reader
                6.3.2.3.1 NetworkMessageContentMask
                6.3.2.3.2 DataSetMessageContentMask
                6.3.2.3.3 JsonDataSetReaderMessageDataType Structure
    6.4 Transport Protocol Mapping Configuration Parameters
        6.4.1 Datagram Transport Protocol
            6.4.1.1 Datagram PubSubConnection
                6.4.1.1.1 DiscoveryAddress
                6.4.1.1.2 DatagramConnectionTransportDataType Structure
            6.4.1.2 Datagram WriterGroup
                6.4.1.2.1 MessageRepeatCount
                6.4.1.2.2 MessageRepeatDelay
                6.4.1.2.3 DatagramWriterGroupTransportDataType Structure
            6.4.1.3 Datagram DataSetWriter Parameters
            6.4.1.4 Datagram DataSetReader
        6.4.2 Broker Transport Protocol
            6.4.2.1 Broker PubSubConnection
                6.4.2.1.1 ResourceUri
                6.4.2.1.2 AuthenticationProfileUri
                6.4.2.1.3 BrokerConnectionTransportDataType Structure
            6.4.2.2 Broker WriterGroup
                6.4.2.2.1 QueueName
                6.4.2.2.2 ResourceUri
                6.4.2.2.3 AuthenticationProfileUri
                6.4.2.2.4 RequestedDeliveryGuarantee
                6.4.2.2.5 BrokerTransportQualityOfService Enumeration
                6.4.2.2.6 BrokerWriterGroupTransportDataType Structure
            6.4.2.3 Broker DataSetWriter
                6.4.2.3.1 QueueName
                6.4.2.3.2 ResourceUri
                6.4.2.3.3 AuthenticationProfileUri
                6.4.2.3.4 RequestedDeliveryGuarantee
                6.4.2.3.5 MetaDataQueueName
                6.4.2.3.6 MetaDataUpdateTime
                6.4.2.3.7 BrokerDataSetWriterTransportDataType Structure
            6.4.2.4 Broker DataSetReader
                6.4.2.4.1 QueueName
                6.4.2.4.2 ResourceUri
                6.4.2.4.3 AuthenticationProfileUri
                6.4.2.4.4 RequestedDeliveryGuarantee
                6.4.2.4.5 MetaDataQueueName
                6.4.2.4.6 BrokerDataSetReaderTransportDataType Structure

7 PubSub Mappings
    7.1 General
    7.2 Message Mappings
        7.2.1 General
        7.2.2 UADP Message Mapping
            7.2.2.1 General
            7.2.2.2 NetworkMessage
                7.2.2.2.1 General
                7.2.2.2.2 NetworkMessage Layout
                7.2.2.2.3 UADP Message Security
                    7.2.2.2.3.1 General
                    7.2.2.2.3.2 AES-CTR
                7.2.2.2.4 UADP Chunk NetworkMessage
            7.2.2.3 DataSetMessage
                7.2.2.3.1 General
                7.2.2.3.2 DataSet Payload Header
                7.2.2.3.3 DataSet Payload
                7.2.2.3.4 DataSetMessage Header
                7.2.2.3.5 Data Key Frame DataSetMessage
                7.2.2.3.6 Data Delta Frame DataSetMessage
                7.2.2.3.7 Event DataSetMessage
                7.2.2.3.8 KeepAlive Message
            7.2.2.4 Discovery Messages
                7.2.2.4.1 UADP Discovery Request NetworkMessage
                    7.2.2.4.1.1 General
                    7.2.2.4.1.2 Traffic Reduction
                    7.2.2.4.1.3 Discovery Request Header
                    7.2.2.4.1.4 Publisher Information Request Message
                7.2.2.4.2 UADP Discovery Response NetworkMessage
                    7.2.2.4.2.1 General
                    7.2.2.4.2.2 Discovery Response Header
                    7.2.2.4.2.3 Publisher Endpoints Message
                    7.2.2.4.2.4 DataSetMetaData Message
                    7.2.2.4.2.5 DataSetWriter Configuration Message
        7.2.3 JSON Message Mapping
            7.2.3.1 General
            7.2.3.2 NetworkMessage
            7.2.3.3 DataSetMessage
            7.2.3.4 Discovery Messages
                7.2.3.4.1 General
                7.2.3.4.2 DataSetMetaData
    7.3 Transport Protocol Mappings
        7.3.1 General
        7.3.2 OPC UA UDP
        7.3.3 OPC UA Ethernet
        7.3.4 AMQP
            7.3.4.1 General
            7.3.4.2 Address
            7.3.4.3 Authentication
            7.3.4.4 Connection Properties
            7.3.4.5 RequestedDeliveryGuarantee
            7.3.4.6 Transport Limits and Keep Alive
            7.3.4.7 Message Header
            7.3.4.8 Message Body
                7.3.4.8.1 JSON
                7.3.4.8.2 UADP
        7.3.5 MQTT
            7.3.5.1 General
            7.3.5.2 Address
            7.3.5.3 Authentication
            7.3.5.4 ConnectionProperties
            7.3.5.5 RequestedDeliveryGuarantee
            7.3.5.6 Transport Limits and Keep Alive
            7.3.5.7 Message Header
            7.3.5.8 Message Body
                7.3.5.8.1 JSON
                7.3.5.8.2 UADP

8 PubSub Security Key Service Model
    8.1 Overview
    8.2 PublishSubscribe Object
    8.3 PubSubKeyServiceType
    8.4 GetSecurityKeys Method
    8.5 GetSecurityGroup Method
    8.6 SecurityGroupType
    8.7 SecurityGroupFolderType
    8.8 AddSecurityGroup Method
    8.9 RemoveSecurityGroup Method

9 PubSub Configuration Model
    9.1 Common Configuration Model
        9.1.1 General
        9.1.2 Configuration behaviours
        9.1.3 Types for the PublishSubscribe Object
            9.1.3.1 Overview
            9.1.3.2 PublishSubscribeType
            9.1.3.3 SetSecurityKeys
            9.1.3.4 AddConnection Method
            9.1.3.5 RemoveConnection Method
            9.1.3.6 HasPubSubConnection
        9.1.4 Published DataSet Model
            9.1.4.1 Overview
            9.1.4.2 Published DataSet
                9.1.4.2.1 PublishedDataSetType
                9.1.4.2.2 ExtensionFieldsType
                9.1.4.2.3 AddExtensionField Method
                9.1.4.2.4 RemoveExtensionField Method
                9.1.4.2.5 DataSetToWriter
            9.1.4.3 Published Data Items
                9.1.4.3.1 PublishedDataItemsType
                9.1.4.3.2 AddVariables Method
                9.1.4.3.3 RemoveVariables Method
            9.1.4.4 Published Events
                9.1.4.4.1 PublishedEventsType
                9.1.4.4.2 ModifyFieldSelection Method
            9.1.4.5 DataSet Folder
                9.1.4.5.1 DataSetFolderType
                9.1.4.5.2 AddPublishedDataItems Method
                9.1.4.5.3 AddPublishedEvents Method
                9.1.4.5.4 AddPublishedDataItemsTemplate Method
                9.1.4.5.5 AddPublishedEventsTemplate Method
                9.1.4.5.6 RemovePublishedDataSet Method
                9.1.4.5.7 AddDataSetFolder Method
                9.1.4.5.8 RemoveDataSetFolder Method
        9.1.5 Connection Model
            9.1.5.1 Overview
            9.1.5.2 PubSubConnectionType
            9.1.5.3 AddWriterGroup Method
            9.1.5.4 AddReaderGroup Method
            9.1.5.5 RemoveGroup Method
            9.1.5.6 ConnectionTransportType
        9.1.6 Group Model
            9.1.6.1 Overview
            9.1.6.2 PubSubGroupType
            9.1.6.3 WriterGroupType
            9.1.6.4 AddDataSetWriter Method
            9.1.6.5 RemoveDataSetWriter Method
            9.1.6.6 HasDataSetWriter
            9.1.6.7 WriterGroupTransportType
            9.1.6.8 WriterGroupMessageType
            9.1.6.9 ReaderGroupType
            9.1.6.10 AddDataSetReader Method
            9.1.6.11 RemoveDataSetReader Method
            9.1.6.12 HasDataSetReader
            9.1.6.13 ReaderGroupTransportType
            9.1.6.14 ReaderGroupMessageType
        9.1.7 DataSetWriter Model
            9.1.7.1 Overview
            9.1.7.2 DataSetWriterType
            9.1.7.3 DataSetWriterTransportType
            9.1.7.4 DataSetWriterMessageType
        9.1.8 DataSetReader Model
            9.1.8.1 Overview
            9.1.8.2 DataSetReaderType
            9.1.8.3 DataSetReaderTransportType
            9.1.8.4 DataSetReaderMessageType
            9.1.8.5 CreateTargetVariables Method
            9.1.8.6 CreateDataSetMirror Method
        9.1.9 Subscribed DataSet Model
            9.1.9.1 SubscribedDataSetType
            9.1.9.2 TargetVariablesType
            9.1.9.3 AddTargetVariables Method
            9.1.9.4 RemoveTargetVariables Method
            9.1.9.5 SubscribedDataSetMirrorType
        9.1.10 PubSub Status Object
            9.1.10.1 PubSubStatusType
            9.1.10.2 Enable Method
            9.1.10.3 Disable Method
            9.1.10.4 Status Object
        9.1.11 PubSub Diagnostics Objects
            9.1.11.1 General
            9.1.11.2 PubSubDiagnosticsType
            9.1.11.3 Reset Method
            9.1.11.4 DiagnosticsLevel
            9.1.11.5 PubSubDiagnosticsCounterType
            9.1.11.6 PubSubDiagnosticsCounterClassification
            9.1.11.7 PubSubDiagnosticsRootType
            9.1.11.8 PubSubDiagnosticsConnectionType
            9.1.11.9 PubSubDiagnosticsWriterGroupType
            9.1.11.10 PubSubDiagnosticsReaderGroupType
            9.1.11.11 PubSubDiagnosticsDataSetWriterType
            9.1.11.12 PubSubDiagnosticsDataSetReaderType
        9.1.12 PubSub Status Events
            9.1.12.1 PubSubStatusEventType
            9.1.12.2 PubSubTransportLimitsExceedEventType
            9.1.12.3 PubSubCommunicationFailureEventType
    9.2 Message Mapping Configuration Model
        9.2.1 UADP Message Mapping
            9.2.1.1 UadpWriterGroupMessageType
            9.2.1.2 UadpDataSetWriterMessageType
            9.2.1.3 UadpDataSetReaderMessageType
        9.2.2 JSON Message Mapping
            9.2.2.1 JsonWriterGroupMessageType
            9.2.2.2 JsonDataSetWriterMessageType
            9.2.2.3 JsonDataSetReaderMessageType
    9.3 Transport Protocol Mapping Configuration Model
        9.3.1 Datagram Transport Protocol Mapping
            9.3.1.1 DatagramConnectionTransportType
            9.3.1.2 DatagramWriterGroupTransportType
            9.3.1.3 DatagramDataSetWriterTransportType
            9.3.1.4 DatagramDataSetReaderTransportType
        9.3.2 Broker Transport Protocol Mapping
            9.3.2.1 BrokerConnectionTransportType
            9.3.2.2 BrokerWriterGroupTransportType
            9.3.2.3 BrokerDataSetWriterTransportType
            9.3.2.4 BrokerDataSetReaderTransportType

Annex A (normative) Common Types
    A.1 DataType Schema Header Structures
        A.1.1 DataTypeSchemaHeader
        A.1.2 DataTypeDescription
        A.1.3 StructureDescription
        A.1.4 EnumDescription
        A.1.5 SimpleTypeDescription
    A.2 UABinaryFileDataType
    A.3 NetworkAddress Model
        A.3.1 NetworkAddressType
        A.3.2 NetworkAddressUrlType

Annex B (informative) Client Server vs. Publish Subscribe
    B.1 Overview
    B.2 Client Server Subscriptions
    B.3 Publish-Subscribe
    B.4 Synergy of models