Skip to content

Node-RED 采集 OPC UA Server 的数据 ​

整理自《node-red 采集 opcua server 的数据》原稿。

1、准备工作 ​

  • 使用 Prosys OPC UA Simulation Server 模拟 OPC UA Server
  • 在 Node-RED 中创建 OPC UA Client,读取 Server 数据

2、安装 OPC UA 插件并配置 ​

  1. 在 Node-RED 管理调色板中安装 OPC UA 相关节点(如 node-red-contrib-opcua)。

安装插件

  1. 配置 OpcUa-Client 连接。

配置 Client

Client 参数

  1. 配置 OpcUa Item,填写点位的 NodeId。

配置 Item

NodeId

例如读取湿度:

读取湿度

  1. 用 inject 做定时触发读取。

inject 定时

完整读流程示意:

完整流程图

3、注意点:OpcUa-Client 三个输出 ​

OpcUa-Client 有三个输出端口,含义不同,调试时务必分清接哪一路。

三个输出

本例中,接在某一输出上的 debug 打印的是读取结果值:

debug 读值

4、处理值并上报 ThingsBoard ​

Node-RED 里数据多在 msg.payload 中传递。用 function 整理成平台需要的 JSON,再接 mqtt out(输入同样走 payload)。

function 处理

mqtt out

在 ThingsBoard 上确认遥测是否到达:

TB 中的数据

5、整体结构(上行) ​

上行整体结构

6、订阅 TB 的 RPC 并写回 OPC UA ​

ThingsBoard RPC 示例格式:

json
{
  "method": "write",
  "params": {
    "nodeId": "ns=3;i=1011",
    "value": 123,
    "dataType": "Double"
  }
}

说明:

  • method 可统一为 write
  • Node-RED 写 OPC UA 时认 NodeId,因此 params 里需包含:nodeId、value、dataType

流程:

  1. mqtt in 订阅设备 RPC。

订阅 RPC

  1. function 把 RPC 转成写节点需要的字段:消息中需包含 payload、topic、datatype(分别取自 RPC 参数)。

function 写参数

  1. 经 OPC UA 写节点下发。

写数据

  1. 在 Prosys Simulation Server 中确认值已变化。

Server 收到

下行整体结构:

下行整体结构