东北、华北、华南:景总 15869005508
西南、西北、华中:张总 15988109008
华东:李总 15868110079
1257190088
2023-03-13 智能制造之家 作者 | 天融信科技集团 赵凯锋
写在前面
前面我们介绍了工业网络的整体架构:
也介绍了PROFINET、ETHERNET/IP等工业以太网:
技术解读PROFINET、Ethernet/IP等7种主流工业以太网
同时也介绍了面向未来的工业通信—OPC UA:
C#通过OPC UA+MQTT将设备数据采集至云端-自动化工程师的数字化之路
今天我们从开发的角度体系聊一聊OPC UA的系统架构、通讯连接过程和数据传输等~
PS:对于纯做如下OPC UA简单应用配置的朋友也可以看看,利于分析通讯中的各种报错与问题:
西门子S7-1500通过OPC UA连接罗克韦尔FactoryTalk SE
一、OPC UA介绍
1.1开发背景
随着OPC 在数以千计的产品中顺利采用,今天的OPC 已经作为自动化系统之间的标准接口而应用在自动化金字塔的不同层次上,它甚至用在很多不是预先设计的领域。还有其它领域的制造商希望利用这样的一个OPC 标准,但却因为 OPC 的COM依赖性和它访问DCOM的远程访问的局限性而不能使用。
OPC UA(Unified Architecture,统一架构)的诞生是希望为现有所有的基于COM的规范,建立一个没有损失任何功能和性能的真正替代平。此外,它必须满足能够描述复杂系统的丰富和可扩展的建模能力,以及平台独立的系统接口的所有需求。
1.2使用场景
OPC UA的目的是为工厂和企业之间的数据和信息传递提供一个和平台无关的互操作标准。但是在开发的过程中,OPC UA定位准确,延伸到了工业自动化之外的范围。现在的OPC UA已经涉及楼宇自动化,安全,家庭自动化,发电,包装以及石化领域。由于OPC UA的高度可扩展的架构,对智能嵌入式设备的部署也是很好的定位。
1.3系统架构
如图1-1所示,UA服务器可以直接安装在设备上并和UA客户端进行数据通信。且UA客户端也可以直接内嵌在UA服务器中,使UA服务器之间可以进行通信。UA服务器可以通过内嵌的UA客户端获取多个控制器(UA服务器)的数据,形成一个聚合服务器,并向外提供服务。管理系统通过UA客户端提供的数据进行管理。
图1-1
二、OPC UA数据传输
2.1UA协议栈介绍
为了优化不同的用例,OPC UA规定了不同的传输机制。其第一个版本为高性能企业内部网通信定义了一个优化的二进制TCP,并为防火墙友好的互联网通信定义了一个映射,接受类似Web服务,XML、HTTP等的互联网标准的通信。这两个传输都使用同一个用于Web服务的基础消息的安全模型。抽象的通信模型不局限于特定的协议映射,它允许将来添加新的协议。目前OPC UA支持的四种通信栈如图2-1所示,本文主要讲解基于TCP的UA格式。
图2-1
2.2UA安全架构
图2-2
机密性:加密完整性:签名应用程序认证和授权:OpenSecureChannel请求和OpenSecureChannel应答中的应用程序实例证书。产品认证和授权:CreateSession应答和ActivateSession请求报文中的软件证书用户认证和授权:ActivateSession请求和ActivateSession应答报文
三、OPC UA连接建立过程
3.1连接建立
客户端创建socket之后,发送Hello报文,其中包括客户端支持的buffer大小。服务器接收报文后返回Acknowledge报文完成buffer大小协商。协商好的buffer大小会上报给SecureChannel层,其中SendBufferSize字段指定在此连接上发送的MessageChunk的最大长度。Hello/Acknowledge报文一般只能发送一次,若对端再一次接收到该报文会报错并关闭socket。如果socket创建之后,服务器很长一段时间(可配,不超过2分钟)内没有接收到Hello报文会主动关闭socket。客户端接收到Acknowledge报文后,紧接着会发送OpenSecureChannel请求报文,服务器若接受该channel会将该socket和一个SecureChannelId关联,后续服务器发送应答报文时会根据SecureChannelId决定使用哪个socket发送。客户端接收到OpenSecureChannel应答报文后也会做相同的操作。图3-1 描述了OPC UA 客户端和服务器建立连接的过程。
图3-1
3.2连接断开
客户端发送CloseSecureChannel请求报文主动关闭连接,服务器接收该报文后会释放该channel相关的所有资源,但不会发送CloseSecureChannel应答报文。如图3-2所示。
图3-2
四、OPC UA协议格式介绍
4.1UA TCP
通用的OPC UA tcp的消息格式如图4-1所示,包含一个消息头和消息体。
图4-1
消息头包含一个消息类型和消息长度,MessageSize代表的整个消息头和消息体的总长度。
MessageType类型
4.1.2 消息体
HEL:
ACK:
ERR:
4.1.3 报文示例
HEL报文:如图4-2所示
图4-2ACK报文:如图4-3所示
图4-3
4.2UA secure conversation
OPC UA安全会话的格式如图4-4所示:
图4-4
MessageType
isFinal
非对称安全头:非对称安全消息头只能用于OpenSecureChannel请求和相应,因为OpenSecureChannel是唯一使用公钥和私钥加密的服务消息。此包头共包含以下3方面:标识消息加密算法的安全策略,校验消息签名的发送方证书,加密消息证书的指纹。
对称安全头:对称安全消息头适用于除OpenSecureChannel之外的其他消息。在这种情况下,报头只包含TokenId,以标识签名和加密消息的对称密钥集。
序列头:序列头包含一个数字以标识数据块,它所在的消息体(如编码的服务消息)不能放进单个块,因此不得不拆分为多个块使用。
OPN:如图4-5所示。
图4-5MSG:如图4-6所示。
图4-6CLO:如图4-7所示。
图4-7
五、服务集
5.1Discovery Service Set
服务器使用RegisterServer服务去向发现服务器注册,提供该服务器的描述信息。客户端使用FindServers服务去查找OPC UA服务器,并获得多个服务器的描述信息。客户端向其想访问的服务器发送GetPoints请求,服务器返回其所有会话终端的描述信息。然后客户端选择一个会话终端发起OpenSecureChannel请求。
图5-1
5.2Session Service Set
会话服务集仅用于建立一个安全可靠的通信通道,而不是从一个系统传递信息到另一个系统。该服务集共有四个服务,有两个服务用于在两个程序之间通过握手方式创建一个会话,一个服务用于关闭会话,另一个服务用于取消在服务调用。
5.3NodeManagement Service Set
节点管理服务集用于定义服务以添加和删除地址空间及其之间的引用。
5.4View Service Set
客户端使用视图服务集的浏览服务在地址空间或作为地址空间子集的视图中进行导航。
5.5SecureChannel Service Set
安全通道服务集用于打开通信通道,以确保与服务器交换消息的机密性与完整性。
5.6Query Service Set
查询服务集用于向服务器发出查询,OPC UA 查询是一个通用的服务集,它提供了一个独立于存储机制的底层查询功能,可用于访问各种OPC UA 数据存储和信息管理系统。OPC UA查询允许客户端访问由服务器维护的数据,而不必了解用于内部存储的逻辑模式数据。
5.7Attribute Service Set
属性服务集用于访问属于节点的属性。
5.8Method Service Set
方法服务集表示对对象的函数调用。
5.9Monitoredltem Service Set
客户端定义监视项以订阅数据和事件。每个被监视的项标识要监视的项以及用于发送通知的订阅。要监视的项可以是任何节点属性。
5.10Subscription Service Set
订阅服务集用于向客户端报告客户端订阅的通知。
六、总结
OPC统一架构(OPC UA)是OPC基金会为过程自动化及其他领域的数据通信提供的新标准。OPC UA使用优化的UA协议,保持着传统OPC的性能,而且增加了分布式系统之间通信的安全性和可靠性。OPC基金会基于微软DCOM的OPC规范(如DA,HAD和A&E)非常成功。预计在未来当OPC UA统一了OPC规范的所有功能之后,将会取而代之。
版权所有©2023杭州美畅物联技术有限公司All Rights Reserves