我想知道OPC(开放平台通信)和DDS(数据分发服务)之间的区别。
我对这两个框架的理解是:通过机器上的通信中间件来简化复杂的网络编程。它们中的两个都用于通过消息传递在物理上分离的机器上进行程序通信。它们采用客户端 - 服务器模型作为TCP / IP套接字进行通信,但它们可以以多种多方式交换数据。此外,DDS通常用于飞机和军舰等关键系统。
如果有任何误解,或者您知道它们之间存在一些差异,请告诉我。
答案 0 :(得分:6)
(在Basil的评论之后编辑,在最初的帖子之前:))
我希望您的意思是OPC-UA,因为OPC已被统一架构实施所取代。有点划过,OPC只不过是Windows COM / DCOM,UA是一个完整的SOA返工。
DDS互操作性规范要求UDP / IP和多播用于匿名发现,而不是TCP / IP。可以使用TCP,但是还没有规范,允许不同的供应商按照他们的意愿实现它。假设一个供应商的TCP / IP传输不能与另一个供应商的TCP / IP传输一起使用(也适用于共享内存传输等,它们不可互操作)。
OPC-UA通过类似HTTP的协议使用restful通信。 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意识,因为它不仅限于单个用例。
答案 1 :(得分:2)
DDS通常使用但不限于pub / sub的UDP多播,OPC UA可以使用TCP进行点对点交互或使用UDP多播进行发布/发布。是的,DDS得到的是军事应用的开始,而OPC UA起源于过程控制和制造。
OPC基金会的DDS OPC UA第14部分介绍了如何通过DDS运行OPC UA服务。 OMG的DDS / OPC UA规范描述了如何通过DDS公开OPC UA服务器。
两者之间的区别在于OPC UA在地址空间中公开数据,而DDS使用主题公开数据。地址空间描述类型和实例及其关系。主题更加面向文档,但也包括QoS。考虑这一点的一种方法是DDS有效地提供select和from子句来访问数据,OPC UA提供select,from和where子句。确切地说,DDS也有一个where子句,但它不能扩展到大型系统。