OPC和DDS的区别?
Posted
技术标签:
【中文标题】OPC和DDS的区别?【英文标题】:Differences between OPC and DDS? 【发布时间】:2016-07-18 01:08:38 【问题描述】:我想知道 OPC(开放平台通信)和 DDS(数据分发服务)之间的区别。
我对这两个框架的理解是: 机器上的通信中间件,用于简化复杂的网络编程。它们两者都用于通过消息传递在物理上分开的机器上进行程序通信。它们采用客户端-服务器模型作为 TCP/IP 套接字进行通信,但它们可以以多 2 多的方式交换数据。此外,DDS 经常用于飞机和军舰等关键系统。
如果有任何误解,或者你知道它们的一些不同之处,请告诉我。
【问题讨论】:
【参考方案1】:DDS 通常使用但不限于用于发布/订阅的 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 子句,但它不能扩展到大型系统。
【讨论】:
主题是面向实例和样本的(取决于它们是否是键控实例)。 “文档”意味着一个重量级的东西,一个实例只是一个实例,并不意味着涉及多少数据。 我会把“Select * From”的评论改头换面。 DDS 为发布者端过滤提供了 Where 子句(规模取决于供应商的实施。RTI 有一个基于云的 PoC,显示 10^^7 个单独的存在点和稀疏访问......),但 Select * From 来自在应用程序代码中(或通过使用键控实例)。【参考方案2】:(在 Basil 的 cmets 之后编辑,在初始帖子之前 :))
我希望您指的是 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。 DDS 的能力更强/对 QoS 的感知能力更强,因为它不限于单个用例。
【讨论】:
首先,感谢您的回复。正如您所说,如果DDS is much more capable/much more QoS aware, because it isn't limited to a single use-case
,为什么特定用例仍需要 OPC-UA?
也许只是因为 DDS 不允许 TCP/IP,只允许 UDP/IP?只有这个?
价值 T 美元的基础设施基于 OPC-UA。继续——说服那些用户放弃他们拥有的东西,并用一个全新的基础设施取而代之(对他们来说是新的,DDS 已经存在多年了)。不会发生在 OPC-UA 的客户端-服务器层。但它可能发生在服务器-服务器层(两个 OPC-UA 服务器相互通信),他们已经证明,当使用 DDS 完成通信通道时,这种情况非常有效。
DDS 不会阻止使用 TCP/IP 等替代传输。标准本身定义了实现之间的互操作性,将使用 UDP/IP 并且是基本要求。其他传输是可用的,具体取决于实现,是的,这些包括 TCP/IP,以及(通常)共享内存(有/没有复制)。
OPC UA 完全可以用于 M2M 通信,OPC UA 可以使用任何其他传输机制,例如 UDP(它基于您的努力),OPC 第 14 部分定义的发布-订阅模型进行通信等等是一个工作组,致力于使用 DDS 作为第 14 部分的传输,OPC UA 具有使用多播DNS(基于 UDP 的协议)的服务发现机制。以上是关于OPC和DDS的区别?的主要内容,如果未能解决你的问题,请参考以下文章