OPC和DDS之间的区别?

foo*_*ool 3 ipc communication opc data-distribution-service

我想知道OPC(开放平台通信)和DDS(数据分发服务)之间的区别.

我对这两个框架的理解是:通过机器上的通信中间件来简化复杂的网络编程.它们中的两个都用于通过消息传递在物理上分离的机器上进行程序通信.它们采用客户端 - 服务器模型作为TCP/IP套接字进行通信,但它们可以以多种多方式交换数据.此外,DDS通常用于飞机和军舰等关键系统.

如果有任何误解,或者您知道它们之间存在一些差异,请告诉我.

rip*_*... 6

(在Basil的评论之后编辑,在最初发布之前:))

我希望你的意思是OPC-UA,因为OPC被统一的架构实现所取代.有点过了,OPC只不过是Windows COM/DCOM,UA是一个完整的返工作为SOA.

DDS互操作性规范要求UDP/IP和多播用于匿名发现,而不是TCP/IP.可以使用TCP,但是还没有规范,允许不同的供应商按照他们的意愿实现它.假设一个供应商的TCP/IP传输不能与另一个供应商的TCP/IP传输一起使用(也适用于共享内存传输等,它们不可互操作).

OPC-UA使用类似HTTP的协议进行休息通信.TCP不是确定性的,因此您无法保证实时了解正在发生的事情.UDP是尽力而为(RTPS2,DDS使用的协议包括通过UDP提供可靠流量的方法,即在更高的协议级别提供可靠性),但至少您的应用程序知道数据已经/没有及时到达能做出相应的反应

默认情况下,OPC-UA是客户端/服务器(但如果您希望在嵌入式系统上实现服务器实现的开销,则可以将其设置为点对点).DDS是匿名的对等(但将其设置为客户端 - 服务器就像仅为给定主题实现一个订户一样简单).

OPC-UA旨在用于工业控制(SCADA).DDS几乎适用于任何机器到机器的连接,其中"机器"被定义为某些硬件,运行某种代码,可访问UDP/IP堆栈和足够的RAM来支持数据量/品种/速度/可变性/供应商/ v ...设备的要求.

两者完全相互脱离,并且与平台无关(硬件,操作系统,语言等),但实现方式不同.DDS将数据提升为系统的完全合格的对等方:发布者发布"数据".订户订阅"数据".它不是"发布者与订阅者交谈".

OPC-UA使用内部协议(opc-tpc://或https://)和RESTful.难以搞砸了.

OPC(基础)和OMG(开放标准体)都测试实现之间的互操作性.

QoS:DDS中的QoS本身就是一个字段.你会留下深刻的印象.你会惊讶的.当同一个主题上的两个对等体在相同的子网上使用完全相同的类型定义时,仍然不会相互交谈,你会感到震惊和困惑并且沮丧地哭泣.然后你会说,'哦.呃,'改变QoS文件中的一个设置,一切都会变得甜美和轻松.

由于OPC-UA针对的是特定用例,因此除了特定用例所需的QoS之外,不需要任何QoS.DDS功能更强大/更具QoS意识,因为它不仅限于单个用例.