亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

在 PLCnext Control 上配置 OPC UA 客户端:分步指南

固件 2023.0 包含期待已久的 OPC UA 客户端组件。PLCnext Info Center 有良好技术参考。

本教程分步指导如何在 PLCnext Control 设备配置 OPC UA 客户端以与 OPC UA 服务器交换数据。

所需条件:

配置 OPC UA 通信关键点:为安全起见,客户端和服务端必须互信。因此必须在客户端和服务端设备间交换安全证书。此过程涉及在客户端和服务端设备间切换,可能令人困惑。若有简化建议(不禁用安全检查!),欢迎评论区分享。

步骤

OPC UA 服务端设备

  1. 浏览 PLC IP 地址打开 Web 管理 (WBM) 站点。

  2. 从配置菜单选择系统服务。

  3. 激活OPC UA 服务器服务(若未启用)。

  4. 如需按应用并重启按钮。

  5. 打开 PLCnext Engineer。

  6. 用 PLCnext Control 设备模板创建新项目。

  7. 在 PLCnext Engineer 项目设置 PLC IP 地址。

  8. 在OPC UA 服务器配置页:

    • 将DNS 名称 / IP 地址设为 PLC 的 DNS 名称或 IP 地址,取决于 OPC UA 客户端将用 DNS 名称还是服务器 IP 访问。此信息将包含在 OPC UA 服务器安全证书中。若证书中此信息与服务器 URL 不匹配,许多 OPC UA 客户端将拒绝服务器证书。

    • 将变量可见性设为标记。意味着勾选 OPC 属性的变量将通过 OPC UA 服务器访问。

  9. 创建将由 OPC UA 服务器暴露的变量。确保这些变量勾选OPC复选框。下例在主程序创建两个变量。

  10. 添加逻辑在收到新输入值时改变输出变量。本例主程序执行:Server_Data_Out := Server_Data_In + 1;

  11. 编写并启动项目。注意 PLCnext Engineer 2025.0 及更高版本含"浏览"功能可用于在 OPC UA 客户端创建变量条目。若使用浏览功能,则无需用 UaExpert 获取服务器变量信息,可跳过后三步。

  12. 用 UaExpert 用 PLC 用户名密码连接 OPC UA 服务器。应见证书"不受信"警告,但无其他警告。

  13. 永久或仅本会话信任服务器证书。

  14. 为每个服务器变量记录节点 ID和命名空间名称。

  15. 再次打开服务端 PLC 的 WBM 站点。

  16. 从安全菜单选择证书认证。

  17. 选择身份存储选项卡。

  18. 从OPC UA-self-signed[服务端]身份存储下载证书。密钥对无需下载。

OPC UA 客户端设备

  1. 浏览 PLC IP 地址打开 WBM 站点。

  2. 从配置菜单选择系统服务。

  3. 激活OPC UA 客户端服务(若未启用)。

  4. 如需按应用并重启按钮。

  5. 重启完成后,重新登录 WBM 站点选择安全菜单证书认证。

  6. 选择信任存储选项卡。

  7. 将之前下载的OPC UA-self-signed[服务端]证书添加到名为OPC UA Client的信任存储。现在 OPC UA 客户端将信任 OPC UA 服务器验证身份用的安全证书。每次服务器证书变更需重复此步。

  8. 选择身份存储选项卡。

  9. 从OPC UA Client self-signed身份存储下载证书。密钥对无需下载。

OPC UA 服务端设备

  1. 打开服务端 PLC 的 WBM 站点。

  2. 从安全菜单选择证书认证。

  3. 选择信任存储选项卡。

  4. 将之前下载的OPC UA Client self-signed证书添加到名为OPC UA-configurable的信任存储。现在 OPC UA 服务器将信任 OPC UA 客户端验证身份用的安全证书。每次客户端证书变更需重复此步。

OPC UA 客户端设备

  1. 打开 PLCnext Engineer。

  2. 用 PLCnext Control 设备模板创建新项目。若同一设备作客户端和服务端,则用同一 PLCnext Engineer 项目。

  3. 在项目设置 PLC IP 地址。

  4. 仅固件 2023.6 前版本 PLC 需:在OPC UA 服务器配置页将变量可见性设为标记。为 OPC UA 客户端要求此服务端设置似怪异。固件 2023.6 及更高版本已修复。

  5. 创建将连接到 OPC UA 服务器变量的变量。仅固件 2023.6 前版本 PLC 需:确保这些变量勾选OPC复选框(固件 2023.6 或更高版本无需勾选)。下例在主程序创建两个变量。

  6. 在 OPC UA 客户端连接选项卡添加一个服务器和两个变量组,如下所示。

    服务器 URL、用户名、密码应改为适配您使用的 OPC UA 服务器。

  7. 在"订阅"变量组添加一个变量映射,如下所示。

    这自动将远程变量(OPC UA 服务器上)值传输到 PLCnext Engineer 项目本地变量。

  8. 在"写入"变量组添加一个变量映射,如下所示。

    这自动将 PLCnext Engineer 项目本地变量值传输到远程变量(OPC UA 服务器上)。

  9. 编写并启动 PLCnext Engineer 项目。

  10. 调试模式改变变量 Client_Data_out 值。值将写入 OPC UA 服务器变量 Server_Data_In。服务端将值加 1 写入 Server_Data_Out。该变量值再传输到客户端变量 Client_Data_In。

不工作?

请查看 PLCnext Info Center 底部故障排除指南。

常见问题

问:客户端能用证书/密钥认证连接 OPC UA 服务器吗?

答:目前不能。

问:OPC UA 客户端如何存储服务器密码?

答:目前 OPC UA 服务器密码以明文存储在客户端配置文件,但 PLCnext Runtime 开发者正研究更安全存储方法。

问:能获取从 OPC UA 服务器读取数据的质量信息(如状态码、时间戳)吗?

答:目前不能,抱歉。

本文于 24.03.2025 更新,包含 PLCnext Engineer 现可用的服务器浏览功能信息。

附录:基于文件配置

PLCnext Engineer 中 OPC UA 客户端配置以 XML 格式存储在控制器上。不使用 PLCnext Engineer 的应用可直接在控制器上写入 XML 配置配置 OPC UA 客户端。

本例准备的配置在以下 XML 文件表示:

  1. 默认 OPC UA 客户端设置所需更改定义在 /opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument> 
  2. OPC UA 客户端连接定义在 /opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/ clientconnections.xml:

    <?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> <ServerConnections> <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup> <GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument> 

    此文件用之前用 UaExpert 记录的命名空间和节点 ID信息指定客户端将访问哪些服务器变量。

  3. 在上述文件中修改以下以适配您的应用:

    • 元素 uax:EndpointUrl 必须包含您 OPC UA 服务器的 IP 地址(或 DNS 名称)。

    • Username 和 Password 元素必须包含 OPC UA 服务器所需凭据。

    重要:本例中 UaExpert 节点 ID 字符串含 ns=6 文本。上述 XML 文件中改为 ns=1,因"命名空间"参数 (ns) 是本地客户端命名空间列表索引。本例中从 UaExpert 复制的命名空间名称是 clientconfig.xml 中命名空间列表第一个(且唯一)命名空间。

更改 OPC UA 客户端配置文件后必须重启 PLCnext Runtime。

工业技术

  1. 金属强度大全:抗拉、屈服、硬度、密度对照表——CNC加工与设计必备
  2. CNC雕刻机六大核心应用场景:极致速度、精度与一致性
  3. 快速 PCB 打样服务的 10 大核心优势:加速创新、降低风险
  4. 多普勒雷达原理与应用全解析:从测速枪到双极化气象雷达
  5. 超越正弦波:功率电子如何塑造谐波
  6. 革命性CPU技术:同步任务与温度振荡,将能耗降至兰道尔极限千分之一
  7. 首件良率 (FPY):定义、计算与改进策略
  8. 掌握 PCB 接地:可靠电路设计的关键技术
  9. 开关柜故障决策指南:改造、翻新还是整体更换?
  10. 协作机器人助力中小制造商提效增收
  11. Fusion 360 进阶:用曲面建模驾驭复杂几何加工
  12. 构建明天:Fast Radius创新使命