解释OPC UA PubSub模式
14.12.2021
我在OPC Day Finland 2021 论坛上谈论了OPC UA PubSub。该演讲和幻灯片可在 YouTube 上看到,但我决定也写一篇博文来探讨这一新功能。这个话题很重要,需要更多的关注,这样我们才能正确地理解它。
我对这篇文章的定义如下:
- OPC UA 客户端/服务器模式 – 简略介绍来提醒读者传统的 OPC UA 通信模式
- OPC UA 发布端/订阅端模式 – 这种新模式是什么,优势是什么
- PubSub 场景 – 优势在哪里
- PubSub 演示 – 我们自己是如何尝试的
- 结论
我已经添加了演示文稿的截图,如果您想听到我解释的话,您可以点击图片进入视频中的那个部分。视频中有动画,希望有助于将复杂的主题分解为几个更容易理解的部分。
1. OPC UA 客户端/服务器模式
客户端/服务器模式是 OPC UA 中传统的通信模式。它基于这样一种想法,即有一个被动的服务器组件,为充当客户端的其他应用程序提供数据。客户端应用程序可以通过一些标准化服务从服务器访问数据和信息。
客户端必须做的第一件事就是打开与服务器的连接。它需要一个连接地址,然后(跳过一些细节)创建到服务器的会话。会话包含一个安全上下文,其中包括可选的加密和身份验证参数,用于标识服务器中的客户端应用程序和用户。客户端还可以识别服务器,并决定是否允许与之通信。
会话建立后,客户端应用程序可以从服务器请求一些标准服务。这些服务包括:
- 连接并创建会话
- 浏览地址空间 - 了解服务器上的可用内容
- 读取-变量值或元数据
- 写入-变量值-有时甚至元数据
- 通话方法
- 读取历史记录-变量和事件
- 关闭会话并断开连接
最后,当客户端完成工作时,将关闭会话并断开连接。
客户端/服务器订阅
客户端/服务器模型还包含订阅模型。在这个模型中,每个客户端都可以创建任意数量的服务器订阅。每个订阅都可以包括变量和 EventNotifier(设置了 EventNotifier 属性的对象节点)的 MonitoredItems。
创建订阅后,客户端将开始向服务器调用Publish方法,服务器将以 NotificationMessages 响应。NotificationMessage 可能包含数据更改和事件,这与 MonitoredItems 的类型有关。
客户端/服务器模式的优缺点
客户端/服务器模式已经被成功地应用于典型的 SCADA 场景,当不同应用程序之间的连接数量不是很高时,这个模式能够完美地执行任务。如果您有数十台或数百台设备(即服务器)需要持续连接,或者有类似数量的客户端需要连接到任何服务器,那么您可能最终会遇到资源问题,因为每个连接和订阅都需要内部管理,它们会在网络中造成单独的流量。
传统上,OPC UA 的设计不支持任何确定性通信或不可靠网络上的通信。但它支持同步服务调用,这些调用可以立即收到结果或对操作的确认,这对应用程序来说非常重要。
安全性也很灵活,您可以为每个应用程序和用户定义规则,如果需要,甚至可以为每个变量定义规则。
2. 发布端/订阅端模式
PubSub 模式与客户端/服务器模式截然不同,但在 OPC UA 环境中,两者有相似之处。
在 PubSub 模式中,我们有一个发布端组件,它可以定义包含变量或 EventNotifiers 的数据集。然后,发布端会发布分别包含数据更改或事件的 DataSetMessages。因此,传输的数据类似于客户端/服务器订阅。只是它的排列方式有所不同。
这些信息被发布到一个网络中,用户可以在那里收听并过滤他们需要的信息。
因此,与客户端/服务器模式中的订阅相反,发送方在数据集中定义要发送的内容,而不是接收方。除此以外,DatasetMessages 中的数据与 NotificationMessages 中的数据基本相同(尽管格式不同)。
该模型可以扩展,因为理论上可以有任意数量的发布端和订阅端。它们都连接到同一个网络,但彼此不连接,这是对客户端/服务器模型的主要改进。
PubSub 网络
OPC UA 为 PubSub 定义了两种不同的网络类型。
-
本地网络 - 可以使用 UDP 广播(或在某些情况下单播)或以太网 APL。消息是优化的二进制 UADP,这在 OPC UA 规范中定义。因此,只有 OPC UA 用户可以解释这些消息。
-
消息队列代理 - 实际上可以是 MQTT 或 AMQP 代理。在这种情况下,消息通常使用 JSON 消息格式,尽管 UADP 可以用于提高性能。OPC 基金会为消息定义了一个标准的内容结构,但基本上任何 JSON 订阅服务器都可以解释它们。
PubSub 安全性
PubSub 的安全性比客户端/服务器中的安全性要复杂一些,而且规范没有那么细致。
在本地网络中,您将需要一个额外的组件,即安全密钥服务器,所有发布端和订阅端都要与其连接,安全密钥服务器为它们提供共享密钥,以便它们可以对消息进行加密和解密。该模式没有身份验证,除非密钥服务器对应用程序进行身份验证。
在代理网络中,安全性基于 SSL/TLS,代理除了可以为传输启用 SSL/TLS,还可以定义应用程序级身份验证。
在这两种安全模式中,没有为某个数据项定制的规则,可被用于某些订阅端从某些发布端接收数据。原则上,对于每个可以加入网络的订阅端和发布端,这些安全模式要么全有,要么全无。
PubSub 优缺点
PubSub 模型解决了可扩展性问题。 MQTT 在许多(非 OPC UA)应用程序中已经非常流行和成功,在这些应用程序中,您需要通过不可靠的连接将数千个数据提供商(如小型传感器或远程仪表)连接到中央监控。很多行业已经提出了新的想法,如何在更大的背景下实际使用。现在,OPC UA 为消息内容添加了一些标准格式,并提供了将 OPC UA 数据映射到其中的标准方法,这应该是有益的。新的标准化仍在进行中,例如,丰富的 OPC UA 信息模型如何以最佳方式映射到 MQTT,目前尚不明确。
另一方面,OPC UA 使用 PubSub 模式在本地网络中实现非常快速的通信,一旦网络通过以太网 TSN 和 APL 技术变得确定和快速,我们就可以预见通过 OPC UA PubSub 进行实时通信的可能性。这就是 OPC UA 现场级通信(FLC)计划的全部内容,也是新的现场交换(FX)规范可以提供的内容。
3. PubSub 场景
世界正在慢慢地从以著名的自动化金字塔为基础的工业 3.0 发展到工业 4.0。在工业 4.0 中,工厂中的所有组件都连接到生产网络。此外,产品本身也可以携带有关自身的信息,可以从世界任何地方访问生产信息。客户端/服务器模式非常适合旧世界,那里的智能组件(即计算机)数量和连接很少。在新的世界中,当产生和消费共享网络信息的组件数量急剧增加时,连接问题可能会爆发。PubSub 模式应该更适合新世界,但至少在现时,我们仍将使用这两种模式来互补。
实际上,在大多数情况下,PubSub 模式可以并且将与客户端/服务器模式相结合。这允许将发布服务端添加到服务器,将订阅端添加到客户端,或添加任何其他组合。
最初设想的两个主要 PubSub 运用场景是同步服务器和边缘到云场景。
在同步服务器场景中,我们有两个或多个 OPC UA 服务器,它们在地址空间中相互镜像数据。UDP 广播在本地网络中尤其适用,通过实时网络,该场景可被用于分布式控制,尽管它仍然缺乏适当的方法调用接口。
4. PubSub 演示
我们已经创建了三个关于 PubSub 的公开演示:
您可以从链接的博客帖子中查看详细信息。该视频还为您提供了对这些使用场景的概述。
5. 结论
因此,我们仍然需要 OPC UA 客户端/服务器模式,以便能够在典型的 SCADA 场景中“同步”通信。
PubSub 模型实现了更好的可扩展性,并提高了通信性能,这使其成为实时通信的良好候选择,并能够在 OPC UA 现场级通信(FLC)计划和新的现场交换(FX)标准中发挥重要作用。
Georg Biehler 在 OPC Day Finland 2021 发表了一篇关于 OPC UA 现场交流(FX)的精彩演讲,您感兴趣的话可以查阅!

Jouni Aro
Chief Technology Officer
Email: jouni.aro@prosysopc.com
Expertise and responsibility areas: OPC & OPC UA product development, project work and customer support
Prosys OPC Ltd
Prosys OPC是OPC和OPC UA软件领域中拥有20年技术经验的行业佼佼者。 OPC和OPC UA(Unified Architecture)是工业和高科技公司使用的通信标准。
最新博客文章
如何在生产分析项目中取得成功
工业4.0分析项目将在未来几年内成为显著增长的业务。阅读如何绕过最常见的陷阱以及成功交付项目。
Prosys OPC UA Forge为什么是工业4.0工厂的重要组成部分
如今,边缘计算应用程序提供了比OPC UA聚合服务器更广泛的功能。事实上,它是工业4.0工厂的主要组成部分。"
Prosys OPC UA Forge介绍
关于Prosys OPC UA Forge的第一篇博文。本文介绍了Forge软件的主要特点和功能。