前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >再深入看看OPC UA的协议架构

再深入看看OPC UA的协议架构

作者头像
Hello工控
发布于 2025-04-16 06:34:26
发布于 2025-04-16 06:34:26
24900
代码可运行
举报
文章被收录于专栏:Hello工控Hello工控
运行总次数:0
代码可运行

我们基本上对OPC UA进行了比较详细的了解,但是对内部的具体的协议内容没有进行介绍。

当然,我们整理了来自OPC Foundation的关于OPC UA的完整的说明,大家有兴趣可以自行文末领取链接下载:

那我们这期对协议内部架构再深入分享下。

OPC UA消息

每个 OPC UA 消息都以一个三字节 ASCII 码开始,该码构建了消息类型。四种主要消息类型是:

  • HEL: Hello message(HEL:Hello消息)
  • OPN:OpenSecureChannel message(OPN:打开安全通道消息)
  • MSG:A generic message container (secured with the channel’s keys)(MSG:一个通用消息容器(使用通道的密钥进行加密))
  • CLO: CloseSecureChannel message(CLO:关闭安全通道消息)

第一条消息是 HEL 消息。HEL 消息包含初始化连接的基本参数,例如客户端希望连接到的 URL 以及客户端期望接收的最大消息大小。HEL 消息通常随后是 OPN 请求。下图是使用 Wireshark 分析的一个 HEL 消息,展示了传递的不同参数:

OPN 通过连接打开一个安全通道,如果一切顺利,服务器会响应一个 SecureChannelID。现在客户端和服务器可以通过打开的通道交换 MSG 类型消息。单个客户端可以打开多个通道,这些通道通过它们唯一的 SecureChannelID 来识别。

接下来,客户端和服务器可以通过通道进行通信。例如,常用的消息是浏览,客户端使用它从服务器检索节点树。

最后,会话以 CLO 消息结束,该消息终止会话。

下图是一个典型的 OPC UA 数据包序列流示例,用于监控项目值:

实际上,客户端将通过端点 URL 连接到 OPC UA 服务器。OPC UA 端点 URL 是一个由四部分组成的格式化文本字符串

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
方案:必须是 opc.tcp 或 opc.https

举例:

位与字节:OPC UA 协议结构解析

再让我们看看一个单独的 MSG 消息类型。它由基本头和正文构成。

标题(Header):

消息头 MSG 包含有关消息的基本信息,例如其类型(MSG)、长度以及其 SecureChannel 的信息。在 MSG 头部传递的其它重要信息包括 IsFinal 标志,该标志指示消息是否完整(F-完整)或只是一个单独的数据块(C-数据块),该数据块是正在发送的其它数据块系列的一部分,形成整个消息。这有助于各方重新组装大的 OPC UA 消息。

正文(Body):

OPC UA 定义了一系列服务(如浏览、读取请求、写入请求等),每个服务都有其独特的结构。这定义了请求结构,指定了如何使用 OPC 的内置类型构建对这一服务的请求。消息体由请求构建而成,指定了客户端希望访问的服务(例如,读取请求是 ns=0,i=631)。随后是针对特定服务定义的结构其余部分。

传输(Transport):

OPC UA 传输层负责在 OPC UA 客户端和服务器之间通过不同的通信协议进行数据的物理传输。传输层在网络层之上运行,负责建立、维护和终止客户端与服务器之间的连接。

OPC UA 规范定义了多个传输协议,可用于在客户端和服务器之间传输数据。这些协议包括 TCP、HTTPS 等。 OPC 服务器可以暴露多个具有不同传输层的端点。例如,服务器可以为同一服务器同时拥有 TCP 和 HTTPS 端点。

值得注意的是,传输协议不会直接影响发送的底层 OPC 数据结构。公开 HTTPS 端点的 OPC UA 服务器可以选择通过安全连接发送常规的 OPC UA 二进制、XMLJSON 格式消息

暴露的端点通过 URI 方案进行标识。TCP 端点以 opc.tcp://<主机名>:<端口>开头,而 HTTPS 端点以 opc.https://<主机名>:<端口>或 http://<主机名>:<端口>开头。

会话和安全 (Session and Security):

在会话初始化期间,使用 OpenSecureChannel 请求在已打开的连接之上创建一个 SecureChannel。在此请求期间,客户端和服务器就共享的安全模式达成一致,该模式将指示在此通道中使用的安全机制。安全模式可以是 None(无)、Sign(签名)或 SignAndEncrypt(签名并加密)。

根据所选的安全模式,服务器和客户端将展示各自的证书,在双方接受彼此的证书和身份后,通道将打开。对于每个 OPC-UA 服务器,存在一个受信任的证书列表,指定它信任哪些客户端以及它接受哪些连接。在过去,发现了漏洞,允许恶意客户端绕过此证书信任检查,这可能允许未经授权的客户端访问他们无权访问的服务器。

OPC UA 安全结构:

在 SecureChannel 初始化过程中,如果选择的 SecurityMode 启用了加密,客户端和服务器将交换用于后续消息加密过程的对称密钥。为了安全地分发对称密钥,将执行非对称密钥交换,使用服务器和客户端的证书和公钥。

OPC UA对称性加密和非对称性加密???

SecureChannel 支持不同的加密算法用于密钥交换和对称加密、密钥长度,甚至不同的哈希算法用于消息签名

在决定共享安全策略并依赖于服务器设置的情况下,服务器可能要求客户端使用用户名-密码对或证书进行身份验证。如果服务器配置中启用了匿名登录,则服务器将不会对用户进行身份验证。这特别不推荐,通常应避免。下表是安全的所有选项:

关于OPC UA安全,可以参考:

OPC UA的安全性不容忽视!!!

图片
图片

分享链接

OPCUA相关文件资料具体的下载链接如下:

通过网盘分享的文件:8-OPC UA链接: https://pan.baidu.com/s/12Zs-Ij86q_QIrnZx9om1Jw

提取码:关注公众号后,直接发消息【opcua】获取。

参考链接:

  1. https://reference.opcfoundation.org/Core/Part4/v104/docs/7.10
  2. https://claroty.com/team82/research/opc-ua-deep-dive-part-3-exploring-the-opc-ua-protocol
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OPC报文详解
OPC (OLE for Process Control) 是一种工业通讯协议的标准,用于实现不同制造商的设备和系统之间的数据交换。它主要用于工业自动化系统中。OPC标准有几个不同的规范,包括OPC DA (Data Access)、OPC UA (Unified Architecture)、OPC HDA (Historical Data Access) 等。
杜衡老师
2024/03/27
1.1K0
OPC报文详解
OPC 统一架构 – 主要技术特点
OPC统一架构的主要目标之一是为过程控制和管理系统的集成提供一致的机制。假设它应该是健壮的,并且实现应该是独立于平台的。在本节中,我将研究用作OPC UA标准开发基础的技术和范式,并讨论它们对最终结果的影响。
科控物联
2022/06/13
1.5K0
OPC UA对称性加密和非对称性加密???
如果您曾经在OPC UA客户端和OPC UA服务器之间配置过OPC UA连接-您可能熟悉OPC UA证书。OPC UA使用X.509证书标准,该标准定义了标准公钥格式,并在OPC UA中用于三个主要功能:
Hello工控
2025/04/02
850
OPC UA对称性加密和非对称性加密???
OPC UA的安全性不容忽视!!!
无论哪种通信协议,特别涉及到外网数据交互,那么通信的安全性就不易忽视了!轻则导致设备报警,重则丢失数据,造成严重的经济损失。所以安全性对于通信而言,至关重要!
Hello工控
2025/03/31
2020
OPC UA的安全性不容忽视!!!
聊聊越来越火的OPC DA 和 OPC UA 的标准
OPC(Open Platform Communications,以前称为 OLE for Process Control)是一组软件技术,为控制各种设备和交换数据提供单一、统一的接口。OPC 规范由国际非营利组织 OPC 基金会制定,该组织于 1994 年由领先的工业自动化产品制造商制定。创建 OPC 的目标是为工程师提供一个通用接口来控制各种设备。
剑指工控
2021/11/04
9.9K0
聊聊越来越火的OPC DA 和 OPC UA 的标准
工业物联网协议对比:MQTT Sparkplug vs OPC-UA
工业系统需要确保数据的无缝交换,因此对于高效、安全的通信协议具有极高的依赖性。MQTT Sparkplug 和 OPC UA 是两个经常被提到的工业协议。本文将全面比较 MQTT Sparkplug 和 OPC UA 以及它们的衍生版本,帮助您更清楚地了解哪种协议更适合您的需求。
EMQ映云科技
2023/07/06
8630
工业物联网协议对比:MQTT Sparkplug vs OPC-UA
在 .NET 中使用 OPC UA 协议
OPC UA(OPC Unified Architecture,开放平台通信统一架构)是 OPC 基金会应用在自动化技术的机器对机器网络传输协定。OPC UA 不依赖于特定的操作系统或平台,可以在 Windows、Mac、Linux 等多种系统上运行,而传统的 OPC(如 OPC DA)通常只能在 Windows 上使用。该协议提供了一个更为先进、安全和灵活的解决方案,适用于现代工业自动化和物联网环境中的设备间通信。
张高兴
2025/05/21
1270
在 .NET 中使用 OPC UA 协议
我所了解的OPC UA
OPC UA是一种工业通讯协议,从2008年发展到今天,现在在业界已经非常的流行了。本文旨在介绍一些OPC UA的概念,分享一些相关经验,希望对从事OPC UA相关工作的朋友有帮助。
剑指工控
2021/11/09
4.9K0
为什么说现在所有的PLC或者PAC都必须要支持OPC UA协议!!!
为什么要通信?一台设备的系统,可以简单,也可以复杂,但是涉及到的开关、按钮、传感器,或者视觉系统及上位机系统等等,那怎么实现数据及命令的交互,所以通信十分重要。
Hello工控
2025/03/14
1810
为什么说现在所有的PLC或者PAC都必须要支持OPC UA协议!!!
PCS 7通过OpenPCS 7站组件实现OPC UA通讯
OPC UA(OPC Unified Architecture)是指OPC统一体系架构,是一种基于服务的、跨越平台的解决方案。
剑指工控
2021/11/09
1.7K0
PCS 7通过OpenPCS 7站组件实现OPC UA通讯
Siemens TIA使用OPC UA完成2台PLC通讯
在这篇文章中,通过将 S7-1500 设置为具有专用服务器接口和用户身份验证的 OPC UA 服务器来学习如何使用 OPC UA 在两个 PLC 之间进行通信。
剑指工控
2022/06/06
5.7K0
Siemens TIA使用OPC UA完成2台PLC通讯
OPC UA 技术及Kepware通道冗余配置
OPC统一架构(OPC Unified Architecture)将各个OPC Classic规范的所有功能集成到一个可扩展的框架中,独立于平台并且面向服务。
剑指工控
2021/11/09
2.8K0
OPC UA 技术及Kepware通道冗余配置
轻松通过OPC UA协议访问西门子1500数据
OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地 解决了硬件设备间的互通性问题, 在企业层面的通信标准化是同样需要的。OPC UA之前的访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的弱点。加上传统OPC技术不够灵活、平台局限等问题的逐渐凸显, OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法 — OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范 (OPC DA)、OPC历史数据访问规范 (OPC HDA)、 OPC 报警事件访问规范 (OPC A&E) 和OPC安全协议 (OPC Security) 的不同方面, 但在其基础之上进行了功能扩展。
剑指工控
2021/11/09
3.6K0
轻松通过OPC UA协议访问西门子1500数据
S7-1500 OPC UA服务器2_安全通道自签署证书
"S7-1500 作为OPC UA 服务器快速组态:本视频旨在帮助用户了解在实际使用过程中,考虑到数据安全性及用户身份认证的情况,如何组态S7-1500的 OPC UA 服务器功能,以实现其和OPC UA客户端的数据交换任务。 此视频中:OPC UA 客户端使用UA Expert软件。OPC UA服务器的端口号使用默认的4840;设置安全策略,证书类型为自签署证书,需进行服务器及客户端证书的导入导出;启用用户身份认证,需输入用户名密码。
科控物联
2022/03/29
2.5K0
S7-1500 OPC UA服务器2_安全通道自签署证书
S7-1200 作为OPC UA 服务器
使用 TIA STEP7 V16 软件,创建S7-1200 CPU版本为V4.4的站点,如图1所示。
科控物联
2022/03/29
6.3K0
S7-1200 作为OPC UA 服务器
你知道吗?OPC UA除了C/S模型,还有Pub/Sub模型!
简称:OPC UA C/S模型。当然除了这个模型,还有扩展的Pub/Sub模型,我们这期重点分享下Pub/Sub发布/订阅模式。
Hello工控
2025/03/31
1290
你知道吗?OPC UA除了C/S模型,还有Pub/Sub模型!
PackML over OPC UA
OPC UA是一种开放的、跨平台的工业通信标准,旨在实现不同设备、系统之间的无缝数据交换。
Hello工控
2025/04/23
920
PackML over OPC UA
S7-1200 OPC UA 服务器配置方法
OPC UA 方法是“远程过程调用”的实现,为不同通信节点之间的交互提供了有效机制。该机制提供作业确认和反馈值,因此用户无需再编程握手机制。
科控物联
2022/03/29
10.1K1
S7-1200 OPC UA 服务器配置方法
OPC UA还是MQTT???
我们现在的工业自动化领域,对于设备的互联互通越来越多了,另外,IT和OT的融合也越来越密切了。
Hello工控
2025/04/19
2120
OPC UA还是MQTT???
Profinet 和 OPC UA
PROFINET和OPC UA是自动化和过程工业中两种常见的协议,它们在某些方面有所重叠,理解在网络的特定部分使用哪种协议可能会令人困惑。
Hello工控
2024/09/06
2460
Profinet 和 OPC UA
相关推荐
OPC报文详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验