foool
foool

Reputation: 1552

Differences between OPC and DDS?

I want to know the differences between OPC (Open Platform Communication) and DDS (Data Distribution Service).

My understanding of these two frameworks is : Communication middlewares over machines for simplifying complex network programming. Both of two them are used for communication of programs over physically separate machines by message passing. They adopt a client-server model to communicate as TCP/IP socket, but they can exchange data in a multi-2-multi way. Additionally, DDS is often used in critical system as airplanes and military ships.

If there any misunderstandings ,or you know some differences of them, please let me know.

Upvotes: 3

Views: 3567

Answers (2)

rip...
rip...

Reputation: 1024

(edited after Basil's comments, before initial post :) )

I expect you mean OPC-UA, as OPC is superseded by the unified architecture implementation. Little crossed over, OPC is little more than Windows COM/DCOM, UA is a complete rework as an SOA.

The DDS interoperability specification requires UDP/IP, and multicast for anonymous discovery, not TCP/IP. TCP can be used, but there is no specification yet, allowing the different vendors to implement it however they want. Assume that one vendor's TCP/IP transport is not going to work with another vendor's TCP/IP transport (also applies to shared memory transports, etc. They are not interoperable).

OPC-UA uses restful communications over the HTTP-like protocols. TCP is not deterministic, so you can not guarantee real-time awareness of what is happening. UDP is best effort (RTPS2, the protocol that DDS uses includes methods to provide reliable traffic over UDP, i.e., reliability is provided at a higher protocol level), but at least your applications know that the data has/has not arrived in time and can react accordingly.

OPC-UA is by default client/server (but can be set up as peer-to-peer if you want the overhead of the server implementation on an embedded system). DDS is anonymous peer-to-peer (but setting it up as client-server is as simple as only implementing one subscriber for a given Topic).

OPC-UA is aimed at industrial control (SCADA). DDS is suitable for just about any machine-to-machine connection, where "machine" is defined as some bit of hardware, running some sort of code, that has access to a UDP/IP stack and sufficient RAM to support the data volume/variety/velocity/variability/vendor/v... requirements of the device.

Both are fully disconnected from each other, and are platform independent (hardware, os, language, etc), but achieve this differently. DDS promotes the data to a fully-qualified peer of the system: A publisher publishes "data". A subscriber subscribes to "data". It is -not- "a publisher talks to a subscriber".

OPC-UA uses an internal protocol (opc-tpc:// or https://) and RESTful. Difficult to screw that up.

Both OPC (foundation) and OMG (open standards body) test for interoperability between implementations.

QoS: QoS in DDS is a field unto itself. You will be impressed. You will be amazed. You will be appalled and confused and cry in frustration when two peers, on the same Topic, using the exact same Type definition, on the same sub-net, still won't talk to each other. Then you will say, 'oh. duh,' change one setting in the QoS file and everything will be sweetness and light again.

Because OPC-UA is aimed at a specific use-case, there isn't the need for any QoS other than what that specific use-case requires. DDS is much more capable/much more QoS aware, because it isn't limited to a single use-case.

Upvotes: 6

Basil
Basil

Reputation: 21

DDS typically uses, but is not limited to UDP multicast for pub/sub and OPC UA can use TCP for point to point interactions or UDP multicast for pub/sub. Yes, DDS got is start for military applications while OPC UA originated in process control and manufacturing.

The OPC Foundation's DDS OPC UA Part 14 describes how to run OPC UA services over DDS. The OMG's DDS/OPC UA spec describes how to expose an OPC UA server via DDS.

The difference between the two is that OPC UA exposes data in an address space and DDS exposes data using topics. An address space describes the types and instances and their relationship. A topic is more document oriented but also includes QoS. One way to think about this is that DDS effectively provides a select and from clause to access data and OPC UA provide a select, from, and where clause. To be precise DDS also has a where clause, but it does not scale to large systems.

Upvotes: 2

Related Questions