构建OPC UA 可执行模型-建模工具

Posted 姚家湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建OPC UA 可执行模型-建模工具相关的知识,希望对你有一定的参考价值。

        组态程序是用户构建OPC UA 应用系统的关键工具,尽管我们看到由UaModeler这种OPCUA 建模工具, 但是使用这种工具需要大量OPC UA 信息模型的技术细节,使用起来实在是麻烦了。笔者认为这样的工具只能用于学术研究和测试。工程中需要使用更加有效的建模工具。

        在与业内专家讨论中,许多人提到Plug & Production 的概念。希望能够实现设备之间连接一根网线,它们就能够协同工作、要实现这个目标,仅仅依靠OPC UA 模型是不够的,它还是太底层。需要使用OPC UA 建模工具构建更高层的模型。在这里,我们使用OPC UA 构建了类似IEC61499 功能块的信息模型。

  基于功能块信息模型实现分布式系统的建模,同时,它隐藏了OPCUA 的底层细节,用户在功能块层建立系统模型。建模工作的效率大大提高,模型层次越高,建模工作就越简单。

OPCUA 建模工具的基本要求

1 使用方便,符合工程设计习惯

2 隐藏OPC UA 的技术细节

3 支持模型库/功能块库

4 能够实现可执行模型的建模

5 动态部署,实时监控功能

建模工具的实现

        我们正在开发一个实现上述目标的分布式 OPC UA 控制系统的建模软件的雏形-OPCUA Tools。下面介绍这个项目的基本情况。

基于Window VS C# 语言开发

组态软件是一个基于窗口应用程序,实现用户界面大致有下面几种方式:

  1. Windows C#
  2. java
  3. ElectronJS 等基于Node,javascript的方式
  4. QT C语言

     在前一阶段,我们曾经采用Electron JS 平台开发了一个OPC UA Tools。这次我们采用了Windows C#。主要原因是基于ElectionJS 构建程序的效率不高。而且开发的窗口更像Web 网页,与传统·Window 窗口软件不同·,而在自动控制行业,大多数组态程序是基于windows 窗口开发的。为了使用户习惯保持一致,我们这次决定使用C# 开发OPCUA Tools。

OPC UA  协议的实现

     采用哪一种OPC UA 协议栈是一个比较纠结的问题。目前比较流行的开源程序是open62541。它是基于C99 开发的。我们在设备端的运行时采用了这个开源程序。open61541 能够在windows VS 中编译。但是C++ 的open62541 如何与C# 的窗口软件相结合呢?理论上我们可采用DLL  的方式建立两种语言的连接。但是windows 中实现一个DLL 似乎也并不轻松,问题一大堆、网络上问的人很大,真正实现的却没有发现。国外程序员建议采用“松耦合”的方式实现C# 与C 语言程序的通信。具体地就是使用TCP/IP,或者UDP 协议相互通信。经过分析,笔者觉得这种方式是不错的选择,它不仅能够实现C# 与OPC UA 协议栈程序的通信,也能够应用于Web Server 的协议栈,以及其它应用软件的接口,这种松耦合架构也符合Docker 容器化,微服务应用程序架构。因此我们选择这种程序架构。开发了一个OPCUA Hub 。

OPC UA 也能够应用其它应用程序的OPC UA 接口,例如Web Server,数据库等等,也可以部署在Docker 容器中,作为微服务。 

OPC UA Hub 的应用接口

        OPC UA Hub 实现了OPCUA 服务器与应用程序之间的信息接口,在具体实现中,我们采用了RPC 远程过程调用的方式实现:

XML-RPC 接口

<Method Name="AddDouble">
<Arguments>
<Argument Name="arg1" Type="Double">12.6<Argument>
<Argument Name="arg1" Type="Double">12.6<Argument>
</Arguments>
</Method>

返回信息

返回消息分为两种,一种是PRC 返回的结果,另一种是告警(Alarm)信息

<Message Type="Result">
<Arguments>
<Argument Type="Double">26.6</Argument>
</Arguements>
</Message>

RPC API

基本的RPC调用

  • 下载文件 LoadFile

     文件包括:功能块网络,动态库,功能块类型。

  • 启动 Start

    设备开始执行功能块网络。

  • 停止 Stop

设备停止功能块网络。

  • 读数据 ReadVariable
  • 读多个数据 ReadVariables
  • 写数据 WriteVariable

结束语

本文介绍了一个OPC UA 系统的建模工具的技术方案。使用微软公司的VS C#开发,并且使用松耦合方式的OPC UA 接口程序(OPC UA Hub)。OPC UA Hub 与建模工具之间采用了XML-RPC 通信方式。

从本文开始,我们将逐步介绍OPC UA 信息模型的应用程序开发的一些做法,特别是执行模块的构建和运行。

下一篇文章将介绍另一个热门话题基于OPC UA 的工业4.0 管理壳,以及如何实现PLug and Produce 的方法。感兴趣的读者可交流。

以上是关于构建OPC UA 可执行模型-建模工具的主要内容,如果未能解决你的问题,请参考以下文章

构建OPC UA 可执行模型

构建OPC UA 可执行模型

构建OPC UA 可执行模型

OPC UA 与IEC61499 深度融合

使用OPC UA 封装IEC61499模型

替代 OPC-UA [关闭]