OPC UA 本地发现
发现服务器允许 OPC UA 客户端从单点获取有关一个或多个 OPC UA 服务器的详细信息。
有两种类型的 OPC UA 发现服务器:
- 本地发现服务器 (LDS)
- 全球发现服务器 (GDS)
本文将展示如何向 LDS 注册 OPC UA 服务器,以及 OPC UA 客户端如何使用该 LDS 连接到 OPC UA 服务器。
简介
顾名思义,本地发现服务器 (LDS) 可以与一个或多个 OPC UA 服务器在同一设备上运行。例如,可以在 PLCnext 控制设备上安装一个或多个 OPC UA 服务器,以及包含在 PLCnext Runtime 中的 OPC UA 服务器。如果该 PLCnext 控制设备上还安装了 LDS,则该设备上的所有 OPC UA 服务器都可以向 LDS 注册。然后,远程 OPC UA 客户端可以简单地查询 LDS 以获取在该 PLCnext 控制设备上运行的所有 OPC UA 服务器的详细信息,并使用这些详细信息直接连接到这些 OPC UA 服务器中的一个或多个。
有点令人困惑的是,OPC UA 服务器也可以注册到在 remote 上运行的 LDS 机器。这样,OPC UA 客户端可以使用单个 LDS 来发现在整个设备网络上运行的所有 OPC UA 服务器。
Unified Automation 的这篇文章对 OPC UA 发现服务器有很好的介绍:
https://documentation.unified-automation.com/uasdkdotnet/2.5.2/html/L2UaDiscoveryConnect.html
背景
在执行本文中的步骤之前,您应该了解:
- 基本的 OPC UA 服务器配置。
- 如何将客户端连接到 PLCnext 控制设备上的 OPC UA 服务器。
- 如何在 PLCnext 控制设备上存储和管理安全证书。
程序
对于这个例子,网络设置如下:
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 Client 机器上下载并安装 UaExpert。
找到证书
各种 OPC UA 组件——服务器、客户端和 LDS——需要相互信任以确保安全通信。信任可以通过交换公共证书来实现——即将每个组件的公共证书放在需要信任它的组件的“信任库”中。
您可以找到每个组件的公共证书,如下所示:
OPC UA 服务器
默认情况下,设备证书可以在“OPC UA-self-signed”身份存储中找到。如果您使用自己的证书,情况会有所不同。
OPC UA 服务器证书可以从 PLC 的基于 Web 的管理页面下载。然后必须将证书从 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 中,选择菜单项设置 -> 管理证书。
- 点击“将申请证书复制到...”按钮。
- 将证书保存在方便的地方。
将证书复制到信任库
将每个证书(.der 格式)复制到其他两个组件的信任存储区。
每个组件的信任库可以定位如下:
OPC UA 服务器 (PLC)
信任库是文件夹 /opt/plcnext/Security/TrustStores/Empty/trusted
LDS
信任库是文件夹 C:\ProgramData\OPC Foundation\UA\pki\trusted\certs
OPC UA 客户端 (UaExpert)
- 在 UaExpert 中,选择菜单项设置 -> 管理证书。
- 单击“打开证书位置”按钮。这是 UaExpert 的信任库。
检查所有防火墙
至少,检查 LDS 服务器上的防火墙是否允许端口 4840 上的流量。
在 PLCnext Engineer 中配置 OPC UA 服务器
在 PLCnext Engineer 中,在 OPC UA 配置窗口中:
- 检查:
- DNS 名称与之前配置的相同。
- “变量的可见性”不是 “无”。
- 启用发现注册
- 将服务器 URL 设置为
opc.tcp://mypc.mycompany.com:4840
(替换您的 LDS 机器的 DNS 名称)
将PLCnext Engineer项目写入PLC。
PLC 现在将自动尝试向 LDS 注册 OPC UA 服务器。
发现并连接到 OPC UA 服务器
- 在 UaExpert 中,单击工具栏中的 +(加号)按钮。
- 右键单击树视图的“本地”分支,然后选择“编辑发现 URL”。
- 在文本框中输入
opc.tcp://mypc.mycompany.com:4840
(替换您的 LDS 机器的 DNS 名称),然后单击“确定”。
OPC UA 服务器应出现在树的本地分支中。您现在可以使用这些详细信息以通常的方式连接到 OPC UA 服务器。
疑难解答
- LDS 日志文件位于此处:
C:\ProgramData\OPC Foundation\UA\Discovery\opcualds.log
可以在以下文件中更改 LogLevel(和许多其他参数):C:\ProgramData\OPC Foundation\UA\Discovery\ualds.ini
LogLevel = debug
提供最详细的日志记录信息。更改 LDS 设置后,可能需要通过 Windows“服务”控制台重新启动 LDS。 LDS 的显示名称是“OPC UA Local Discovery Server”。 - 请注意,LDS 可能会返回带有
.local.
的 OPC UA 服务器的 URL 附加到 DNS 名称。此 DNS 名称应可由多播 mDNS 服务器解析。如果无法解析此 DNS 名称,则包含 URL 的错误消息将出现在 UaExpert 日志窗口中。描述如何安装和配置多播 DNS 服务器以使用.local.
解析 DNS 名称超出了本教程的范围 后缀。
结论
显然,当网络上只有一个 OPC UA 服务器时,使用 LDS 并没有太多好处。但是对于包含大量 OPC UA 服务器的网络,LDS 提供了一种方便的方式来浏览和连接这些服务器。
工业技术