Skip to content

Node-RED S7 连接 PLC 采集数据 ​

整理自《node-red s7 连接 plc 采集数据》原稿。

1、参考文档 ​

2、安装 node-red-contrib-s7 ​

  1. 打开 Node-RED,右上角菜单 → 管理调色板 / 设置。

打开设置

  1. 搜索并安装 node-red-contrib-s7。

安装插件

  1. 安装完成后可在调色板看到 PLC / S7 相关节点。

已安装的 PLC 节点

3、配置 PLC 节点采集 ​

  1. 拖入 s7 in 节点并打开配置。

s7 in 配置

  1. 在 PLC 处点加号,新建 S7 Endpoint,填写连接参数与点位。

添加 Endpoint

连接与点位

Mode(三种模式) ​

Mode行为
单个变量选一个变量;每周期或(勾选 diff 时)变化时发一条。msg.payload 为值,msg.topic 为变量名
所有变量,每条消息一个类似单变量,但覆盖全部配置变量;注意未勾选 diff 时每周期消息量可能很大
所有变量msg.payload 为「变量名 → 值」的对象;勾选 diff 时至少一个变量变化才发送

Mode 与 Name

Mode 示意

点位配置必须对照 PLC 点表:

点位配置

点位配置续

示例点表与采集结果:

PLC 点表

4、变量寻址 ​

S7 Endpoint 上的地址写法与 TIA Portal 略有不同,以插件说明为准:
node-red-contrib-s7 变量寻址

注意:

  • PLC 字符串前有 2 个额外字节表示长度
  • JavaScript 的 Date 始终是 UTC,时间转换可用如 node-red-contrib-moment

5、上传 ThingsBoard ​

  1. 拖入 mqtt out。在 ThingsBoard 创建设备,复制设备访问令牌。
  2. 令牌用作 MQTT 的用户名(及按需密码),Topic 按平台设备遥测约定配置(常见为 v1/devices/me/telemetry)。

mqtt out

复制设备令牌

MQTT 连接

用户名填令牌

采集数据示例

6、订阅 TB 数据并下发给 PLC ​

  1. 用 mqtt in 订阅 ThingsBoard 下发的 RPC(设备侧常见 Topic 形如 v1/devices/me/rpc/request/+)。

mqtt in 订阅 RPC

  1. 在 TB 仪表板做 RPC 控件。

TB RPC 部件

  1. 先用 debug 看收到的参数。

打印 RPC

  1. 用 function 转成 s7 out 要求的格式。

function 转换

注意:s7 out 写点时往往要在节点上指定字段,且输入格式必须符合插件约定。

s7 out 配置

支持的输入格式示意:

格式一

多点位要写时,因单节点常只能绑一个点,可用多个 s7 out 或按插件「对象写」格式组织:

多点方案

格式二

格式二续

整体流结构:

整体结构 1

整体结构 2

7、更多参考 ​