OPCUA 规范 第 1 部分:概述和概念 5:概述
原文链接:https://reference.opcfoundation.org/Core/Part1/5.1/
UA 范围
OPC UA 适用于所有工业领域的组件,例如工业传感器和执行器、控制系统、制造执行系统和企业资源规划系统,包括工业物联网 (IIoT)、机器对机器 (M2M) 以及工业 4.0 和中国 2025。这些系统旨在交换信息并为工业过程使用命令和控制。OPC UA 定义了一个通用的基础架构模型来促进这种信息交换 OPC UA 指定了以下内容:
🟢 表示结构、行为和语义的信息模型。
🟢 应用程序之间交互的消息模型。
🟢 在端点之间传输数据的通信模型。
🟢 保证系统间互操作性的一致性模型。
提到了“中国2025”,感觉没什么关系呢
概述
OPC UA 是一种独立于平台的标准,通过该标准,各种系统和设备可以通过各种类型的网络在客户端和服务器之间发送请求和响应消息或在发布者和订阅者之间发送网络消息进行通信。它支持稳健、安全的通信,可确保OPC UA 应用程序的身份并抵御攻击。
在 客户端服务器模型 中,OPC UA 定义了服务器可以提供的服务集,并且各个服务器向客户端指定它们支持的服务集。信息使用 OPC UA 定义和供应商定义的数据类型进行传递,服务器定义客户端可以动态发现的对象模型。服务器可以提供对当前和历史数据以及警报和事件的访问以通知客户端 的重要变化。OPC UA 可以映射到各种通信协议,并且可以以各种方式对数据进行编码,以权衡可移植性和效率。
除了 客户端服务器模型 之外,OPC UA 还定义了一种机制,供发布者使用 PubSub模型 将信息传输给订阅者。
很像物模型在通信协议中的实现,映射到各种通信协议,想法很好。plc4x 感觉也是这个映射思维。
设计目标
OPC UA 提供一致的集成地址空间和服务模型。这允许单个服务器将数据、警报 和事件以及历史记录集成到其地址空间中,并使用一组集成的服务提供对它们的访问。这些服务 还包括一个集成的安全模型。
OPC UA 还允许服务器为客户端提供从地址空间访问的对象的类型定义。这允许使用信息模型来描述 AddressSpace 的内容。OPC UA 允许以多种不同格式公开数据,包括二进制结构和 XML 或 JSON 文档。数据的格式可能由 OPC、其他标准组织或供应商定义。通过 AddressSpace ,客户端可以向服务器查询描述数据格式的元数据。在很多情况下,客户如果没有预先编程的数据格式知识,将能够在运行时确定格式并正确利用数据。
OPC UA 增加了对节点之间许多关系的支持,而不是仅限于单个层次结构。通过这种方式,服务器可以根据一组客户端通常希望查看数据的方式,以各种层次结构呈现数据。这种灵活性与对类型定义的支持相结合,使 OPC UA 适用于广泛的问题领域。如图2 所示,OPC UA 不仅针对 SCADA、PLC 和 DCS 接口,还作为在更高级别功能之间提供更大互操作性的一种方式。
图 2 – OPC UA 目标应用程序
OPC UA 旨在提供已发布数据的稳健性。所有 OPC 服务器的一个主要特性是能够发布数据和事件通知。OPC UA 为客户端提供 了快速检测与这些传输相关的通信故障并从中恢复的机制,而无需等待底层协议提供的长时间超时。
OPC UA 旨在支持范围广泛的服务器,从工厂车间 PLC 到企业服务器。这些服务器的特点是具有广泛的尺寸、性能、执行平台和功能能力。因此,OPC UA 定义了一套全面的能力,服务器可以实现这些能力的一个子集。为了促进互操作性,OPC UA 定义了称为 Profiles 的子集,服务器可以声称符合这些子集。然后,客户端可以发现服务器的配置文件,并根据配置文件。配置文件在 OPC 10000-7 中定义。
OPC UA 规范是分层的,以将核心设计与底层计算技术和网络传输隔离开来。这使得 OPC UA 可以根据需要映射到未来的技术,而不会否定基本设计。映射和数据编码在 OPC 10000-6 中描述。定义了三种数据编码:
🟣 XML/文本
🟣 UA 二进制
🟣 JSON
此外,还定义了几个协议:
🟠 OPC UA TCP
🟠 HTTPS
🟠 WebSockets
支持多种传输和编码的 OPC UA 应用程序将允许最终用户在部署时就性能和兼容性之间的权衡做出决定,而不是让 OPC 供应商在产品定义时确定这些权衡。
OPC UA 被设计为基于 Microsoft COM 技术的 OPC 客户端和服务器的迁移路径。在 OPC UA 的设计中已采取谨慎措施,以便 OPC COM 服务器(DA、HDA 和 A&E)公开的现有数据可以通过 OPC UA 轻松映射和公开。供应商可以选择将其产品本地迁移到 OPC UA 或使用外部包装器将 OPC COM 转换为 OPC UA,反之亦然。以前的每个 OPC 规范都定义了自己的地址空间模型和自己的一组服务。OPC UA 将以前的模型统一到具有一组服务的单个集成地址空间中。
OPC UA PubSub为 OPC UA 开辟了新的应用领域。以下是 PubSub 的一些示例用法:
🟢 控制器之间以及控制器与 HMI 之间的可配置对等通信。对等点不是直接连接的,甚至不需要知道彼此的存在。数据交换通常需要一个固定的时间窗口;它可能是点对点或多点连接。
🟢 异步工作流。例如,订单处理应用程序可以在消息队列或企业服务总线上下订单。从那里可以由一名或多名工人处理。
🟢 记录到多个系统。例如,传感器或执行器可以将日志写入监控系统、HMI、存档应用程序以供以后查询等。
🟢 代表服务或设备的 服务器可以将数据流式传输到托管在云中的应用程序。例如,后端服务器、用于系统优化和预测性维护的大数据分析。
PubSub 未绑定到特定的消息传递系统。相反,它可以映射到各种不同的系统,如两个示例所示:
🟡 使用 UDP 的 PubSub 可能非常适合用于频繁传输少量数据的生产环境。它还允许在一对一和一对多配置中进行数据交换。
🟡 使用带有 JSON 数据编码的已建立的消息传递协议(例如 ISO/IEC AMQP 1.0 协议)支持云集成路径,并允许在现代流和批处理分析系统中处理信息。
对照 1.03 版本的规范,1.04 增加了 JSON 编码支持,去掉了 SOAP / HTTP,增加了 WebSockets,OPCUA的 PubSub 实现了吗?我还没尝试过。
从 OPC DA 映射到 OPC UA,kep 是自带的,matrikon 还有一个映射软件。我一开始想的是 UA 兼容 DA,看来是映射实现。
集成模型和服务
安全模型
概述
OPC UA 安全性涉及客户端和服务器的身份验证、用户身份验证、通信的完整性和机密性以及功能声明的可验证性。它没有指定需要各种安全机制的情况。该规范至关重要,但它是由给定站点的系统设计者制定的,并且可能由其他标准指定。
相反,OPC UA 提供了一种安全模型,在 OPC 10000-2 中进行了描述,其中可以选择和配置安全措施以满足给定安装的安全需求。该模型包括安全机制和参数。在某些情况下,交换安全参数的机制已定义,但应用程序使用这些参数的方式未定义。该框架还定义了所有OPC UA 应用程序都支持的最小安全配置文件集 ,即使它们可能不会在所有安装中使用。安全配置文件 在OPC 10000-7 中定义。
发现和会话建立
应用程序级别的安全性依赖于在应用程序会话期间处于活动状态的安全通信通道,并确保交换的所有消息的完整性。这意味着用户只需在应用程序会话建立时进行一次身份验证。发现服务器和建立安全通信通道和应用程序会话的机制在 OPC 10000-4 和 OPC 10000-6 中进行了描述。OPC 10000-12 中描述了有关发现过程的其他信息。
建立会话时,客户端和服务器应用程序协商一个安全的通信通道。数字 (X.509)证书用于识别客户端和服务器。服务器进一步验证用户并授权后续请求访问服务器中的对象。
审核
OPC UA 支持在客户端和服务器审计日志之间具有可追溯性的安全审计跟踪。如果在服务器上检测到与安全相关的问题, 则可以定位和检查相关的客户端审计日志条目。OPC UA 还为服务器提供了生成事件通知的能力,这些通知将可审计事件报告给能够处理和记录它们的客户端。OPC UA 定义了可以包含在审计日志条目和审计事件通知中的安全审计参数。OPC 10000-5 定义了这些参数的数据类型。不是全部服务器和客户端提供所有审计功能。OPC 10000-7 中的配置文件指明了支持哪些功能。
传输安全
OPC UA 安全补充了大多数支持 Web 服务的平台提供的安全基础设施。
传输级安全性可用于加密和签署消息。加密和签名可防止信息泄露并保护消息的完整性。加密功能由用于在 OPC UA 应用程序之间交换消息的底层通信技术提供。 OPC 10000-7 定义了用于给定 Profile 的加密和签名算法。
集成地址空间模型
服务器向客户端提供的一组对象和相关信息称为其地址空间。OPC UA AddressSpace 将其内容表示为一组由 References 连接的 Node。
Node 的原始特征由 OPC 定义的 Attributes 描述。属性是服务器中唯一具有数据值的元素。定义属性值的数据类型可能很简单也可能很复杂。
AddressSpace 中的 Node 是根据它们的用途和意义进行分类的。NodeClasses 定义 OPC UA AddressSpace 的元数据。OPC 10000-3 定义了 OPC UA NodeClasses。
Base NodeClass 定义了所有 Node 共有的属性,允许识别、分类和命名。每个 NodeClass 都继承了这些 Attributes 并且可以另外定义自己的 Attributes。
为了促进客户端 和服务器的互操作性,OPC UA 地址空间采用分层结构,所有服务器的顶层都相同。尽管 AddressSpace 中的 Node 通常可以通过层次结构访问,但它们可能具有相互引用,从而允许 AddressSpace 表示 Node 的相互关联的网络。 AddressSpace 的模型在 OPC 10000-3 中定义。
服务器可以将地址空间子集到视图中以简化客户端访问。
集成对象模型
OPC UA 对象模型提供了一组一致的 NodeClasses,用于表示地址空间中的对象。该模型根据对象的变量、事件和方法以及它们与其他对象的关系来表示对象。 OPC 10000-3 描述了这个模型。
OPC UA 对象模型允许服务器为对象及其组件提供类型定义。类型定义可以被子类化。它们也可能是常见的,也可能是特定于系统的。ObjectTypes 可以由标准组织、供应商或最终用户定义。
此模型允许将数据、警报和事件及其历史记录集成到单个服务器中。例如,服务器能够将温度变送器表示为由温度值、一组报警参数和一组相应的报警限值组成的****对象。
集成服务
客户端和服务器之间的接口被定义为一组服务。这些服务被组织成称为服务集的逻辑分组。服务集在第6.4条中讨论并在 OPC 10000-4 中指定。
OPC UA 服务为客户端提供两种功能。它们允许客户端向服务器发出请求并接收它们的响应。它们还允许客户端订阅服务器以获取通知。服务器使用通知(Notifications)来报告诸如警报、数据值更改、事件和程序执行结果等事件。
为了提高效率, OPC UA消息(Messages)可以编码为 XML 文本或二进制格式。它们可以使用多种底层传输进行传输,例如 TCP 或 HTTP 上的 Web 服务。 服务器可以提供 OPC 10000-6 定义的不同编码和传输。
会话
OPC UA 客户端服务器交互需要有状态模型。状态信息在应用程序 Session 中维护。状态信息的示例包括订阅、用户凭证和跨越多个请求的操作的延续点。
会话被定义为客户端和服务器之间的逻辑连接。服务器可能会根据资源可用性、许可限制或其他约束来限制并发会话的数量。每个会话独立于底层通信协议。这些协议的失败不会自动导致会话终止。会话终止基于客户端或服务器请求,或基于客户端的不活动。不活动时间间隔在会话建立期间协商。