构建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# 语言开发
组态软件是一个基于窗口应用程序,实现用户界面大致有下面几种方式:
- Windows C#
- java
- ElectronJS 等基于Node,javascript的方式
- 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 可执行模型-建模工具的主要内容,如果未能解决你的问题,请参考以下文章