使用 OPC UA 本地发现服务器实现高效服务器注册与客户端连接
发现服务器允许 OPC UA 客户端从单一点获取一个或多个 OPC UA 服务器的详细信息。
OPC UA 发现服务器有两类:
- 本地发现服务器 (LDS)
- 全局发现服务器 (GDS)
本文展示如何将 OPC UA 服务器注册到 LDS,以及 OPC UA 客户端如何使用该 LDS 连接到 OPC UA 服务器。
简介
顾名思义,本地发现服务器 (LDS) 可运行在与一个或多个 OPC UA 服务器相同的设备上。例如,可在 PLCnext Control 设备上安装一个或多个 OPC UA 服务器,随 PLCnext Runtime 包含的 OPC UA 服务器一起。若该 PLCnext Control 设备上也安装了 LDS,则该设备上的所有 OPC UA 服务器均可向 LDS 注册。随后,远程 OPC UA 客户端只需查询 LDS 即可获取该 PLCnext Control 设备上运行的所有 OPC UA 服务器详情,并使用这些详情直接连接到一个或多个 OPC UA 服务器。
有些令人困惑的是,OPC UA 服务器也可注册到运行在 远程 机器上的 LDS。这样,单个 LDS 可供 OPC UA 客户端发现整个网络设备上运行的所有 OPC UA 服务器。
OPC UA 发现服务器的良好介绍见 Unified Automation 此文:
https://documentation.unified-automation.com/uasdkdotnet/2.5.2/html/L2UaDiscoveryConnect.html
背景
按以下步骤操作前,您应了解:
- 基本 OPC UA 服务器配置。
- 如何连接客户端到 PLCnext Control 设备上的 OPC UA 服务器。
- 安全证书在 PLCnext Control 设备上的存储和管理方式。
过程
本例网络设置如下:
OPC UA Server: AXC F 2152 FW 2020.6.1 IP address: 192.168.1.10 DNS name: axc-f-2152-1 Local Discovery Server: Windows 10 PC IP address: 192.168.1.42 DNS name: mypc.mycompany.com OPC UA Client: Debian 10 PC IP address: 192.168.1.3
全文将使用这些 IP 和 DNS 名称,但您应根据自己的应用修改。
设置 DNS 名称
若网络无 DNS 服务器,编辑每台设备的 hosts 文件。
hosts 文件位于:
- Windows:
C:\Windows\System32\drivers\etc\ - Linux:
/etc/
添加以下新 DNS 条目(替换为您应用的 IP 和 DNS 名):
在 PLC 上,添加 LDS:
192.168.1.42 mypc.mycompany.com
在 LDS 机器上,添加 PLC:
192.168.1.10 axc-f-2152-1
在 OPC UA 客户端机器上,添加 LDS 和 PLC:
192.168.1.42 mypc.mycompany.com 192.168.1.10 axc-f-2152-1
通过 ping 您设置的 DNS 名称(而非 IP 地址)验证所有条目正确性。
安装本地发现服务器
OPC 基金会以 Windows 可执行文件形式提供本地发现服务器。注册后可从此页面免费下载:
https://opcfoundation.org/developer-tools/samples-and-tools-unified-architecture/local-discovery-server-lds/
下载并在 Windows 机器上安装此 LDS。
安装 OPC UA 客户端
本例使用 Unified Automation 的 UaExpert:
https://www.unified-automation.com/products/development-tools/uaexpert.html
在 OPC UA 客户端机器下载安装 UaExpert。
定位证书
各 OPC UA 组件——服务器、客户端和 LDS——需相互信任以确保安全通信。信任通过交换公共证书实现——即将各组件的公共证书放入需信任它的组件的“信任存储”中。
各组件公共证书位置如下:
OPC UA 服务器
设备证书默认在 “OPC UA-self-signed” Identity store 中。若使用自己的证书则不同。
可从 PLC 的基于 Web 的管理页面下载 OPC UA 服务器证书。证书须从 PEM 格式转为 DER 格式供其他组件使用。有大量免费工具可转换,包括 openssl linux 命令行工具。bash 命令示例:
openssl x509 -outform der -in OPC\ UA-self-signed_certificate.crt -out uaserver.der
LDS 服务器
默认 LDS 证书位于:
C:\ProgramData\OPC Foundation\UA\pki\own\certs\ualdscert.der
OPC UA 客户端
- 在 UaExpert 中,选择菜单 Settings -> Manage Certificates。
- 点击 “Copy Application Certificate To…” 按钮。
- 将证书保存到方便位置。
将证书复制到信任存储
将每个证书(.der 格式)复制到其他两个组件的信任存储。
各组件信任存储位置如下:
OPC UA 服务器 (PLC)
信任存储为文件夹 /opt/plcnext/Security/TrustStores/Empty/trusted
LDS
信任存储为文件夹 C:\ProgramData\OPC Foundation\UA\pki\trusted\certs
OPC UA 客户端 (UaExpert)
- 在 UaExpert 中,选择菜单 Settings -> Manage Certificates。
- 点击 “Open Certificate Location” 按钮。这是 UaExpert 的信任存储。
检查所有防火墙
至少检查 LDS 服务器防火墙是否允许 4840 端口流量。
在 PLCnext Engineer 中配置 OPC UA 服务器
在 PLCnext Engineer 的 OPC UA 配置窗口:
- 检查:
- DNS 名称与之前配置的相同。
- “变量可见性” 不 为 “None”。
- 启用发现注册
- 将服务器 URL 设为
opc.tcp://mypc.mycompany.com:4840(替换为您的 LDS 机器 DNS 名称)
将 PLCnext Engineer 项目写入 PLC。
PLC 将自动尝试向 LDS 注册 OPC UA 服务器。
发现并连接到 OPC UA 服务器
- 在 UaExpert 中,点击工具栏 + (加号) 按钮。
- 右键点击树视图 “Local” 分支,选择 “Edit Discovery URL”。
- 在文本框输入
opc.tcp://mypc.mycompany.com:4840(替换为您的 LDS 机器 DNS 名称),点击 OK。
OPC UA 服务器应出现在树的 Local 分支。现可使用这些详情按常规方式连接到 OPC UA 服务器。
故障排除
- LDS 日志文件位于:
C:\ProgramData\OPC Foundation\UA\Discovery\opcualds.log可在以下文件更改 LogLevel(及许多其他参数):C:\ProgramData\OPC Foundation\UA\Discovery\ualds.iniLogLevel = debug提供最详细日志信息。更改 LDS 设置后,可能需通过 Windows “服务”控制台重启 LDS。LDS 显示名为 “OPC UA Local Discovery Server”。 - 注意 LDS 返回的 OPC UA 服务器 URL 可能在 DNS 名称后附加
.local.。此 DNS 名称应可由多播 mDNS 服务器解析。若无法解析,UaExpert 日志窗口将出现包含 URL 的错误信息。安装配置多播 DNS 服务器解析带.local.后缀的 DNS 名称超出本教程范围。
结论
显然,网络中仅有一个 OPC UA 服务器时使用 LDS 收益不大。但对于包含大量 OPC UA 服务器的网络,LDS 提供了浏览和连接这些服务器的便捷方式。
工业技术