Node-RED S7 连接 PLC 采集数据
整理自《node-red s7 连接 plc 采集数据》原稿。
1、参考文档
2、安装 node-red-contrib-s7
- 打开 Node-RED,右上角菜单 → 管理调色板 / 设置。

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

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

3、配置 PLC 节点采集
- 拖入 s7 in 节点并打开配置。

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


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


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


示例点表与采集结果:

4、变量寻址
S7 Endpoint 上的地址写法与 TIA Portal 略有不同,以插件说明为准:
node-red-contrib-s7 变量寻址
注意:
- PLC 字符串前有 2 个额外字节表示长度
- JavaScript 的
Date始终是 UTC,时间转换可用如node-red-contrib-moment
5、上传 ThingsBoard
- 拖入 mqtt out。在 ThingsBoard 创建设备,复制设备访问令牌。
- 令牌用作 MQTT 的用户名(及按需密码),Topic 按平台设备遥测约定配置(常见为
v1/devices/me/telemetry)。





6、订阅 TB 数据并下发给 PLC
- 用 mqtt in 订阅 ThingsBoard 下发的 RPC(设备侧常见 Topic 形如
v1/devices/me/rpc/request/+)。

- 在 TB 仪表板做 RPC 控件。

- 先用 debug 看收到的参数。

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

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

支持的输入格式示意:

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



整体流结构:


