在 PLCnext Control 上配置 OPC UA 客户端:分步指南
固件版本 2023.0 包含期待已久的 OPC UA 客户端组件。 PLCnext 信息中心包含有关此功能的良好技术参考。
本教程是分步指南,展示如何在 PLCnext 控制设备中配置 OPC UA 客户端,以便与 OPC UA 服务器交换数据。
您将需要:
- 运行固件版本 2023.0 或更高版本的 PLCnext Control 设备,充当 OPC UA 客户端。如果您需要升级 PLCnext Control 设备上的固件,可以按照信息中心中显示的步骤进行操作。
- PLCnext Engineer 版本 2023.3 或更高版本。
- OPC UA 服务器。本文使用第二个 PLCnext Control 设备作为 OPC UA 服务器,但您可以使用与托管客户端相同的 PLCnext Control 设备,或者使用(例如)在 Windows PC 上运行的任何第三方 OPC UA 服务器。对于第三方服务器,您需要弄清楚如何针对您的服务器调整下面的“服务器”步骤。
- Unified Automation 的 UaExpert,需要它来获取有关 OPC UA 服务器标签的信息,我们将在配置我们自己的 OPC UA 客户端时使用这些标签。
配置 OPC UA 通信时要记住的关键点之一是,出于安全原因,OPC UA 客户端和 OPC UA 服务器必须相互信任。因此,客户端和服务器设备之间必须交换安全证书。此过程涉及在客户端设备和服务器设备之间跳转,这可能会有点混乱。如果您对如何简化流程(不禁用安全检查!)有任何建议,请随时在评论中添加。
程序
OPC UA 服务器设备
-
浏览到 PLC 的 IP 地址,打开基于 Web 的管理 (WBM) 站点。
-
选择系统服务 配置菜单中的项目。
-
激活OPC UA服务器 服务(如果尚未启用)。
-
按应用并重新启动 如有必要,请单击按钮。
-
打开PLCnext工程师。
-
使用 PLCnext 控制设备的模板创建一个新的 PLCnext Engineer 项目。
-
在PLCnext Engineer项目中设置PLC的IP地址。
-
在OPC UA服务器上 配置页面:
-
设置DNS名称/IP地址 PLC 的 DNS 名称或 IP 地址,具体取决于 OPC UA 客户端是否使用服务器的 DNS 名称或 IP 地址访问服务器。此信息将包含在 OPC UA 服务器安全证书中。如果证书中的此信息与服务器 URL 不匹配,许多 OPC UA 客户端将拒绝服务器证书。
-
设置变量的可见性 至标记 。这意味着所有标有 OPC 属性的变量都可以通过 OPC UA 服务器访问。
-
-
创建将由 OPC UA 服务器公开的变量。确保OPC 为这些变量勾选了复选框。在下面的示例中,主程序中创建了两个变量。
-
添加逻辑以在收到新输入值时更改输出变量。在本例中,主程序执行了以下代码:
01 -
编写并启动项目。
请注意,PLCnext Engineer 版本 2025.0 及更高版本包含“浏览”功能,可用于在 OPC UA 客户端中创建变量条目。如果使用该浏览功能,则无需使用UaExpert获取服务器变量信息,并且可以跳过接下来的三个步骤。
-
使用 UaExpert 使用 PLC 用户名和密码连接到 OPC UA 服务器。您应该看到一条警告,表明证书“不受信任”,但不应有其他警告。
-
永久信任服务器证书或仅针对此会话信任服务器证书。
-
对于每个服务器变量,记下节点 ID 的名称 和命名空间 对于该变量。
-
再次打开服务器 PLC 的 WBM 站点。
-
选择证书身份验证 安全菜单中的项目。
-
选择身份存储 标签。
-
从OPC UA自签名下载证书 [服务器] 身份存储。密钥对无需下载。
OPC UA 客户端设备
-
浏览到 PLC 的 IP 地址,打开基于 Web 的管理 (WBM) 站点。
-
选择系统服务 配置菜单中的项目。
-
激活OPC UA客户端 服务(如果尚未启用)。
-
按应用并重新启动 如有必要,请单击按钮。
-
重新启动完成后,重新登录 WBM 站点并选择证书身份验证 安全菜单中的项目。
-
选择信任商店 标签。
-
添加OPC UA自签名 [服务器] 证书(之前下载)到名为 OPC UA 客户端 的信任存储区 。现在,OPC UA 客户端将信任 OPC UA 服务器使用的安全证书来验证其身份。每次服务器证书更改时都需要重复此步骤。
-
选择身份存储 标签。
-
从OPC UA客户端自签名下载证书 身份存储。密钥对无需下载。
OPC UA 服务器设备
-
浏览到 PLC 的 IP 地址,打开基于 Web 的管理 (WBM) 站点。
-
选择证书身份验证 安全菜单中的项目。
-
选择信任商店 标签。
-
添加自签名 OPC UA 客户端 证书(之前下载)到名为 OPC UA-configurable 的信任存储 。现在,OPC UA 服务器将信任 OPC UA 客户端使用的安全证书来验证其身份。每次客户端证书更改时都需要重复此步骤。
OPC UA 客户端设备
-
打开PLCnext工程师。
-
使用 PLCnext 控制设备的模板创建一个新的 PLCnext Engineer 项目。如果 OPC UA 客户端和 OPC UA 服务器使用相同的设备,则将使用相同的 PLCnext Engineer 项目。
-
在PLCnext Engineer项目中设置PLC的IP地址。
-
仅运行 2023.6 之前固件版本的 PLC 需要: 在OPC UA服务器上 配置页面,设置变量的可见性 至标记 。是的,OPC UA 客户端需要此 OPC UA 服务器设置似乎很奇怪。此问题已在固件版本 2023.6 及更高版本中修复。
-
创建将连接到 OPC UA 服务器中变量的变量。 仅运行 2023.6 之前固件版本的 PLC 需要: 确保OPC 为这些变量勾选复选框(运行固件版本 2023.6 或更高版本的 PLC 不需要勾选该复选框)。
在下面的示例中,主程序中创建了两个变量。
-
在 OPC UA 客户端连接选项卡中,添加一个服务器和两个变量组,如下所示。
应更改服务器 URL、用户名和密码以适合您正在使用的 OPC UA 服务器。
-
在“订阅”变量组中,添加一个变量映射,如下所示。
这会自动将值从远程变量(OPC UA 服务器上)传输到 PLCnext Engineer 项目中的本地变量。
-
在“Write”变量组中,添加一个变量映射,如下图。
这会自动将值从 PLCnext Engineer 项目中的本地变量传输到远程变量(在 OPC UA 服务器上)。
-
编写并启动 PLCnext Engineer 项目。
-
在调试模式下,更改变量
19的值 。该值将被写入变量27在 OPC UA 服务器上。该值将由服务器递增并写入变量30。然后该变量的值将被传输到变量42在客户端上。
它不起作用?
请查看 PLCnext 信息中心(页面底部)中的故障排除指南。
常见问题
问:客户端可以使用证书/密钥身份验证连接到 OPC UA 服务器吗?
A:不,目前不行。
问:OPC UA 客户端如何存储服务器密码?
答:目前 OPC UA 服务器密码以明文形式存储在客户端配置文件中,但 PLCnext Runtime 开发人员正在研究更安全的密码存储方法。
问:我可以获得从 OPC UA 服务器读取的数据的质量信息(例如状态代码、时间戳)吗?
A:暂时不行,抱歉。
本文于 2025 年 3 月 24 日更新,包含有关 PLCnext Engineer 中现已提供的服务器浏览功能的信息。
附录:基于文件的配置
PLCnext Engineer 中的 OPC UA 客户端配置以 XML 格式存储在控制器上。对于不使用 PLCnext Engineer 的应用程序,可以通过直接在控制器上写入 XML 配置来配置 OPC UA 客户端。
本示例中准备的配置在以下 XML 文件中表示:
-
对默认 OPC UA 客户端设置所需的任何更改均在文件
<前>00前>59中定义 : -
OPC UA 客户端连接在文件
<前>19前>69中定义 :该文件使用命名空间 和节点 ID 之前记录的信息(使用 UaExpert)用于指定客户端将访问哪些服务器变量。
-
在上面的文件中,更改以下内容以适合您的应用程序:
-
元素
76必须包含 OPC UA 服务器的 IP 地址(或 DNS 名称)。 -
84和99元素必须包含 OPC UA 服务器所需的凭据。
重要: 在此示例中,节点 ID UaExpert 中的字符串包含文本
103。在上面的 XML 文件中,已更改为116,因为“命名空间”参数(128) 是本地客户端上命名空间列表的索引 。在此示例中,命名空间 从 UaExpert 复制的名称是135中命名空间列表中的第一个(也是唯一的)命名空间 文件。 -
更改 OPC UA 客户端配置文件后,必须重新启动 PLCnext Runtime。
工业技术