跳到主要内容

OPC UA 客户端

插件用途

连接 OPC UA 服务端的采集驱动

选择入口

进入“开发配置 → 采集配置”,创建设备并在“采集插件”中选择“OPC UA 客户端”。

支持的通道和数据类型

通道类型配置前检查
插件内置连接连接参数在设备动态属性中配置,不使用公共 TCP、UDP 或串口通道参数。

可选数据类型: 对象(由协议节点或载荷决定)

插件参数

OPC UA 客户端在设备属性中直接维护会话,不使用普通 TCP、UDP 或串口通道字段;失败重试、写优先等采集公共属性仍按采集配置配置。

连接配置

参数说明
连接Url默认:opc.tcp://127.0.0.1:49320;填写:文本输入。设置建立连接时使用的连接Url。

连接 URL 必须是服务端实际发布的 OPC UA Endpoint(包括协议、主机、端口和必要路径),不能只填写主机或浏览器 URL。

安全认证

参数说明
登录账号填写:文本输入。设置身份校验或安全连接使用的登录账号。
登录密码填写:文本输入。设置身份校验或安全连接使用的登录密码。
安全策略默认:否;填写:开关。控制“安全策略”功能是否启用。
接受不受信任证书默认:否;填写:开关。控制“接受不受信任证书”功能是否启用。
证书填写:证书选择。设置身份校验或安全连接使用的证书。

启用“安全策略”后,客户端按服务端 Endpoint 的安全策略建立加密会话;“接受不受信任证书”仅适用于首次联调,生产环境应改为在证书管理/服务端信任列表中建立信任链。

订阅配置

参数说明
数据变化触发条件默认:1;填写:下拉选择。设置当前插件使用的数据变化触发条件。
激活订阅默认:是;填写:开关。控制“激活订阅”功能是否启用。

协议参数

参数说明
名称标识默认:ThingsGateway_OPC_UA_Master;填写:文本输入。设置协议通信使用的名称标识。
加载服务端数据类型默认:是;填写:开关。控制“加载服务端数据类型”功能是否启用。

数据格式

参数说明
是否使用SourceTime默认:是;填写:开关。控制“是否使用SourceTime”功能是否启用。

运行参数

参数说明
更新频率默认:1000;填写:数字输入。设置插件运行时使用的更新频率。
心跳频率默认:3000;填写:数字输入。设置插件运行时使用的心跳频率。

变量配置

参数说明
死区默认:0;填写:数字输入。设置当前目标对该变量使用的死区。

打包规则

参数说明
最大组大小默认:500;填写:数字输入。设置单次读写或组包使用的最大组大小。

“数据变化触发条件”可选 StatusStatusValueStatusValueTimestamp:分别在状态变化、状态或值变化、状态/值/时间戳变化时触发订阅回调。需要时间戳变化也触发时选择最后一项。

地址规则

普通变量

普通采集变量的地址填写 OPC UA NodeId,例如 ns=2;s=Channel1.Temperature。建议先在设备调试页浏览并读取节点,再复制完整的命名空间和标识符。

OPC UA 方法变量

需要让外部系统调用 OPC UA 服务端方法时,先在当前设备下创建一个专用变量,再按下表配置。

配置项填写要求
变量名称使用能表达控制动作的名称,例如“启动方法”或“配方切换方法”。外部 RPC 使用该名称定位方法变量。
其他方法选择 CallMethodByNodeIdAsync,页面显示名称为“调用 OPC UA 方法”。
变量地址填写 ["对象节点Id","方法节点Id"] 格式的标准 JSON 数组,例如 ["ns=2;s=Machine1","ns=2;s=Machine1.Start"]。第一个元素必须是提供方法的对象节点,第二个元素必须是方法节点。
读写权限选择“只写”。控制方法不应进入周期采集,否则可能被重复触发。
RPC写使能开启。关闭后,Web API、MQTT 等外部入口会拒绝调用。
写入检查关闭。方法调用不是可回读点位,应通过 RPC 返回结果和设备状态确认执行结果。

保存变量后,外部 RPC 的变量值按 OPC UA 方法 InputArguments 的顺序填写。最外层数组表示“参数列表”:

方法输入RPC 变量值
无输入参数[]
一个标量参数[123]
两个参数[123, "start"]
一个数组参数[[1, 2, 3]]

客户端会读取服务端方法的标准 InputArguments 元数据,并把 JSON 值转换为声明的数据类型。服务端返回的所有输出参数按顺序组成 JSON 数组;没有输出参数时返回空数组。

远程控制安全

方法变量应只绑定已经过现场确认的控制方法。为集成账号仅授予必要的变量写入权限,并在联调阶段使用不会影响生产的对象和参数。

外部 RPC 调用

Web API

调用变量写入接口 /api/gatewaywritevariablecontroller/setvariablevalue,请求体按“设备名称 → 方法变量名称 → 输入参数数组”组织:

{
"OPC设备": {
"启动方法": [123, "start"]
}
}

接口会先检查变量是否存在、是否为只写或可写、是否允许 RPC 写入以及设备是否暂停,再调用 OPC UA 方法。响应中该变量的 Content 是服务端输出参数数组;失败时查看 ErrorMessage、RPC 日志和设备日志。

MQTT 等入口

MQTT RPC 和其它已经接入变量 RPC 服务的入口使用同一个方法变量。外部消息经过目标的 RPC Topic 或脚本解析后,只要最终得到相同的“设备名称、变量名称、JSON 参数数组”,就会执行同一个 OPC UA 方法。Topic、认证和响应规则见反向 RPC 详解

设备调试

进入“开发配置 → 采集配置”,选择当前设备后点击“更多功能”并打开“调试”。

协议调试 · OpcUaClient

OPC UA 客户端 协议调试 · OpcUaClient

功能作用
浏览节点展开 OPC UA 地址空间,查看 NodeId、显示名称、数据类型、值、状态码和时间戳。
读取/写入节点单独读取选中节点;写入会修改服务端点值。
导出 Excel把勾选节点导出为变量配置文件。
导入变量把勾选节点直接导入当前设备变量。
订阅管理按 NodeId 列表创建、查看或取消订阅组。

调试要点

先浏览节点并读取值,再建立订阅;导入变量后复核 NodeId、数据类型和采集周期,写入只在点位允许时执行。

验证重点

  1. 浏览到一个已知 NodeId,读取当前值并确认状态码正常。
  2. 在服务端改变该测试节点,确认调试页读取结果或订阅值同步更新。
  3. 导入少量测试节点后,核对 NodeId、数据类型、当前值和时间戳。
  4. 启用订阅时,确认更新频率、死区和最大组大小符合现场要求;需要服务端时间时核对 SourceTime。
  5. 节点写入只在服务端明确允许的测试节点上执行,写入后重新读取确认结果。
  6. 方法调用先使用无生产影响的测试方法,确认对象节点、方法节点和输入参数数量正确。
  7. 分别通过变量写入弹窗和目标外部 RPC 入口调用一次,核对输出参数、RPC 日志和服务端执行结果。

排障差异

  • 无法连接或浏览节点:检查连接 URL、账号密码、安全策略、应用证书和服务端信任列表。
  • 提示证书不受信任:优先把客户端证书加入服务端信任列表;不要在生产环境长期依赖“接受不受信任证书”。
  • 能浏览但读取状态码异常:核对 NodeId、服务端节点权限和数据质量。
  • 订阅没有更新:检查“激活订阅”、更新频率、数据变化触发条件、死区和订阅组节点数量。
  • 导入后类型不正确:开启“加载服务端数据类型”,重新浏览并核对自定义类型映射后再导入。
  • 特殊方法列表中没有“调用 OPC UA 方法”:确认设备使用当前版本的 OPC UA 客户端插件,并在更新程序后重启 GatewayRuntime。
  • 提示输入参数数量不正确:确认 RPC 值的最外层是参数列表;方法只有一个数组参数时必须使用双层数组,例如 [[1, 2, 3]]
  • 提示参数类型不匹配:核对服务端方法的 InputArguments 数据类型和值阶,并确认服务端公开了标准输入参数元数据。
  • 提示方法无效或不可执行:核对对象节点与方法节点是否属于同一对象、当前用户是否有执行权限,以及服务端方法的 Executable 状态。
  • 方法被周期性重复触发:把方法变量的读写权限改为“只写”,不要将控制方法配置为可读变量。
  • 外部 RPC 被拒绝:检查方法变量是否允许 RPC 写入、设备是否暂停、集成账号是否有变量写入权限。

相关操作