跳到主要内容

OPCUA Server

背景

OPC UA(Unified Architecture) 标准是 OPC 基金会 2006 年推出的一个新的工业软件应用 接口规范, 是企业软件架构的一个全新方向。 OPC UA 的主要目标是建立更丰富的数据模型 与平台的独立性,以及提高工厂底层和企业系统之间的集成支持。
l  现有 OPC 规范的不足:
1) 缺少跨平台通用性。由于 COM /DCOM 对Microsoft 平台的依赖性,使得 OPC-COM 接口很难被应用到其它平台上。
2) 较难与 Intemet应用程序集成。由于网络防火墙会过滤掉大多数基于 COM 传输的数 据,因此 OPC-COM 不能与 Intemet应用程序进行交互。 DCOM 不适用于 Internet 环境, 它不支持通过 Internet访问对象;
3) COM 产生的传输报文复杂,并且由于防火墙的存在,在 Internet 上发送 COM 报文 非常困难。
4) 较难与企业应用程序连接。企业应用程序需要实时的工业现场数据,这些数据通常
来自具有 OPC-COM 接口的服务器。 但是这些上层应用程序大多没有与 OPC-C0M 服务 器交互的 OPC-COM 接口,因而不能进行连接。
 
促使 OPC UA 出现的主要因素:
1)工业应用软件正转向 Microsoft.NET ;
2)客户端软件需要一个集成的 API 集成现有 OPC规范及各自独立的 API ;
3)客户端软件需要对数据语义进行识别;
4)客户对服务器安全性、可靠性等性能方面更高的要求。
 
针对上述因素和现有
OPC 的不足,新规范 OPC UA 主要通过以下方法来解决:
1) OPC UA 的消息采用 WSDL 定义,实现了规范的平台无关性;
2) OPC UA 定义了一套集成的服务,解决了现有 OPC 规范在应用时服务重叠的问题;
3) OPC UA 采用了集成的地址空间,增加对象语义识别功能,并实现了对信息模型的
支持;
4) 另外, OPC UA 采用冗余技术、安全模型等一系列机制,提高了安全性、可靠性等
方面的性能。
虽然我们可以用 OPC XML-Data Access 规范,并结合 SOAP、WSDL 等 Web Services 技
术,能弥补上述缺陷,但是由于规范本身的问题,其在可互操作性、安全性、可靠性等方面
仍不能满足用户的需求。为此, OPC 基金会推出新一代 OPC 规范—— OPC UA 。
 

功能描述

支持和算盘Link连接,并且实时更新数据。
支持被OPCUA客户端连接,并且数据被OPCUA客户端读取。

开发目标

目标是开发出一个稳定,支持多客户端连接的一个OPC UA服务端端,并且在平台上面能够稳定运行,OPC UA的协议数据传输。

开发过程

OPCUA服务端采用开源、稳定的opcua协议栈open62541来实现
 
协议栈特性:
 

| open62541 implements the OPC UA binary protocol stack as well as a client and server SDK. The final server binaries can be well under 100kb, depending on the selected features and the size of the information model.
- Communication Stack
- - OPC UA binary protocol

  • OPC UA JSON encoding
  • Secure communication with encrypted messages
  • Exchangeable network layer (plugin) for using custom networking APIs (e.g. on embedded targets)
  • Support for generating data types from standard XML definitions
    - Server
    - - Support for all OPC UA node types
  • Access control for individual nodes
  • Support for generating server-side information models from standard XML definitions (nodesets)
  • Support for adding and removing nodes and references also at runtime.
  • Support for inheritance and instantiation of object- and variable-types (custom constructor/destructor, instantiation of child nodes)
  • Support for subscriptions/monitoreditems (data change notifications and events)
    - Client
    - - All OPC UA services supported
  • Asynchronous service requests
  • Background handling of subscriptions
    - Publish/Subscribe
    - - UADP Binary protocol with UDP-multicast or Ethernet communication
  • PubSub JSON encoding
    | | --- |

 
协议栈体积小,用户多,是一个比较理想的选择。基于opcua库实现了一套opcua的服务端协议组件。协议组件的架构如图所示: 这里的suanpan-link包括数据采集模块,比如opcda,opchda,三菱PLC等。
在开发过程中,编写了后端代码,并且最后生成一个二进制文件。将这个二进制文件使用docker的方式打包,最后上传到平台进行测试使用。
 

测试平台搭建

首先在算盘平台上拖入OPCUA Server到模板上,和其他的数据采集组件连接,如图所示: 在OPC接入组件( 算盘Link)上,配置好OPC的点位,使得opcua server可以对外提供数据。配置好的结果如图所示:  
然后在客户端机器上安装OPCUA客户端,安装好之后打开

测试流程

在OPCUA的客户端上面填写OPCUA组件的地址,并且连接:
   
可以看到这里可以成功监控OPC组件配置的点位信息。  
 

测试结果分析

功能测试

对于OPCUA Server来说,已经具备了OPCUA协议数据提供的基本功能,在平台上作为一个单元,与其他模块连接成一个模板发挥作用,给外部的控制设备提供数据来源