当前位置:首页 > ControlSystem > EPICS > 正文内容

EPICS 使用open62541 SDK集成OPC UA设备支持

realjinge10个月前 (01-22)EPICS317

前言:本文假设你已经在Linux系统下搭建好了EPICS的开发环境,了解Linux常用命令。

EPICS opcua module(https://github.com/epics-modules/opcua)是用于连接 OPC UA 协议的EPICS设备支持模块。该模块支持两种OPC UA Client SDK的不同实现。

UA OPC UA SDK是目前市场普遍在用的解决方案,但需要购买授权,这里就不介绍太多,感兴趣可以浏览其官方网站。

本文主要介绍使用open62541 SDK集成OPC UA设备支持,仅供学习和参考。

image.png

open62541(https://www.open62541.org/)是开源的OPC UA SDK,基于MPL v2.0开源协议。值得注意的是EPICS opcua module基于open62541 SDK的实现目前还处于开发阶段,尚不支持结构化数据。

使用open62541 SDK

  • 下载并解压 open62541 发行版。在根目录下创建一个构建目录 build 并cd进入该目录路径。

  • Open62541 的 cmake 构建默认创建一个静态库。EMBED 类型的设备支持构建需要这种类型的库(见下文)。

    要创建共享库,请构建 Open62541 库并设置 cmake 选项BUILD_SHARED_LIBS=ON

    cmake .. -DBUILD_SHARED_LIBS=ON [...]

    您可以通过在同一构建目录中运行具有不同配置的两个构建来创建这两种类型。删除中间的 CMakeCache 以获得干净的配置。

  • Open62541可以使用openssl来实现OPC UA安全性,通过设置 cmake 选项来选择它UA_ENABLE_ENCRYPTION=OPENSSL

  • 对于 Linux 构建,一般的编译选项设置是:

    cmake .. -DBUILD_SHARED_LIBS=ON \
             -DCMAKE_BUILD_TYPE=RelWithDebInfo \
             -DUA_ENABLE_ENCRYPTION=OPENSSL

    创建共享库,以及

    cmake .. -DBUILD_SHARED_LIBS=OFF \
             -DCMAKE_BUILD_TYPE=RelWithDebInfo \
             -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \
             -DUA_ENABLE_ENCRYPTION=OPENSSL

    创建静态变体。

    还有很多其他选项可用,但大多数仅影响服务器部分,与客户端的使用无关。

    对于 Open62541 版本 1.2,请设置UA_ENABLE_ENCRYPTION_OPENSSL=ON而不是上面显示的 OPENSSL 设置。您可能还必须在 file 中显式设置 Open62541 版本字符串CMakeLists.txt,因为当您不在 git 下工作时,自动检测不起作用。

  • 默认安装位置如下/usr/local通常,这是一个系统位置,因此部署模式设置(见下文)将为SYSTEM如果您想安装到其他位置,请设置选项CMAKE_INSTALL_PREFIX=/other/location在这种情况下,部署模式设置(见下文)将是PROVIDED,并且需要设置库位置。如果您想在其构建位置使用 Open62541 库,情况也是如此。库位置(在 中设置CONFIG_SITE.local)将有所$(OPEN62541)/build/bin不同$(OPEN62541)/build/bin/Release,具体取决于您的安装、操作系统和构建目录名称的选择。

  • 跑完后cmakemake再跑make install安装到系统位置需要 root 权限。

构建设备支持模块

configure子目录内或 TOP 位置上一级,创建一个文件RELEASE.local,设置EPICS_BASE为 EPICS 安装的绝对路径。

configure子目录内或 TOP 位置上一级,创建一个文件CONFIG_SITE.local,用于设置 Open62541 安装的绝对路径及其构建和部署功能(如果需要)。您还需要配置安装的其他依赖项的位置。

# Path to the Open62541 C++ installationOPEN62541 = /other/location# How the Open62541 shared libraries are deployed#   SYSTEM = shared libs are in a system location#   PROVIDED = shared libs are in $(OPEN62541_SHRLIB_DIR)#   INSTALL = shared libs are installed (copied) into this module#   EMBED = link Open62541 code statically into libopcua,#           the Open62541 libraries are not required on target systemOPEN62541_DEPLOY_MODE = PROVIDEDOPEN62541_LIB_DIR = $(OPEN62541)/libOPEN62541_SHRLIB_DIR = $(OPEN62541_LIB_DIR)# How the Open62541 libraries were builtOPEN62541_USE_CRYPTO = YES

Open62541相关配置只需在该模块中完成,该模块会创建一个CONFIG_OPCUA文件,该文件会被所有下游模块(创建IOC的模块)自动包含,以便配置始终保持一致。

EPICS opcua module支持 Linux 和 Windows 版本。

本人已在Linux系统亲测可用;并尝试在Windows系统编译部署此环境,由于缺少相关依赖,暂时未完全编译部署成功,有兴趣可亲自尝试。

扫描二维码推送至手机访问。

版权声明:本文由控制系统发布,如需转载请注明出处。

本文链接:http://cim-cs.com/?id=10

分享给朋友:
返回列表

没有更早的文章了...

下一篇:Ubuntu 22.04 EPICS 环境搭建

“EPICS 使用open62541 SDK集成OPC UA设备支持” 的相关文章

Ubuntu 22.04 EPICS 环境搭建

本次示例安装在 Ubuntu 22.04 虚拟机上,真机安装系统时需要注意 BIOS 设置及硬盘分区。此外搭建环境过程中需要接入外网,方便在线安装相关依赖。一、安装准备1、新建Ubuntu 22.04虚拟机,具体安装步骤略,注意配置虚拟机网络连接;2、设置root用户密码,开启ssh远程连接;设置r...

EPICS-----模拟输入记录(ai)

最近在使用通过StreamDevice来发送和接受字符串从而实现控制设备,对于里面的参数做一些记录。这个字段下面有这几个参数:扫描参数      2.读取并转换参数     3. 操作器显示参数     4.报警参数     5. 监控参数    6. 运行时参数一、SCAN:扫描决定了记录的处理时...

EPICS-----模拟输出(ao)

1. 介绍这个记录是将值输出到数模转换器,然后输出到硬件,这个记录支持报警限值,工程单位转换以及图形和控制限值。这个字段分为以下几个类别:扫描参数所需输出参数转换和写参数操作员显示参数警报参数2.扫描参数同ai记录3.所需输出参数模拟输出...