RuleGo RuleGo
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • 快速入门

  • 规则链

  • 标准组件

  • 扩展组件

    • 扩展组件概述
    • 过滤器

    • 动作

    • 转换器

    • 外部的

    • ai

    • CI

    • IoT

      • IoT 组件概览
      • 输入端点

      • 协议采集

        • OPC_UA Read
        • OPC_UA Write
        • Modbus Node
        • 串口通信
        • S7 读
          • 配置
            • 点位(points)字段
          • 点位(Point)字段说明
          • 输出
          • 特性
          • Relation Type
          • 示例
        • S7 写
        • EtherNet/IP 读
        • EtherNet/IP 写
        • SNMP 读
        • SNMP 写
        • Modbus 点位读
        • Modbus 点位写
        • 通用采集读
        • IoT 写
        • IEC 104 读
        • IEC 104 写
        • FINS 读
        • FINS 写
        • MC Node
        • MC 读
        • MC 写
        • DL/T 645 Node
        • DL/T 645 读
        • DL/T 645 写
      • 时序数据库

      • 控制

      • IoT 场景示例
    • 流式计算

    • 服务发现

    • 文件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

  • 智能体框架

  • RuleGo-Server

  • 问题

目录

S7 读

x/s7Read 组件:v0.37.0+ 用于批量读取西门子 S7 系列 PLC(S7-200SMART/300/400/1200/1500)的点位数据,结果写回 msg.Data,经 Success 链转出。

需要额外引入扩展库:rulego-components-iot (opens new window)

# 配置

字段 类型 说明 默认值
server string PLC 地址,格式 host:port,ISO-on-TCP 默认端口 102 127.0.0.1:102
rack int 机架号 0
slot int CPU 槽位:S7-1200/1500/200SMART=1,S7-300/400=2 1
timeout int 请求超时时间,单位为秒 5
points []object 默认点位表;msg.Data 携带合法点位时优先使用 msg.Data []

# 点位(points)字段

字段 类型 说明 默认值
name string 点位名称(输出带上,便于下游取值) 无
addr string 西门子地址(语法见下);支持 ${msg.xx} 无
type string 数据类型,可选值见下表 无
scale float 可选,缩放因子;工程值 = 原始值 × scale + offset -
offset float 可选,偏移量 -
endian string 可选,字节序 -

# 点位(Point)字段说明

addr 字段: 使用西门子地址语法,支持 ${msg.xx} 模板变量。

  • DB 区:DB<n>.<DBX|DBB|DBW|DBD><偏移>[.位],如 DB1.DBD0、DB1.DBW2、DB1.DBX0.1
  • M/I/Q 区:字/双字地址如 MW0、MD0、IW0、QW0;位地址如 M0.1

数据类型(type)可选值:

类型 字节数 Go 输出类型 说明
BOOL 1 bool 布尔量,地址用位语法(如 DB1.DBX0.1、M0.1)
BYTE 1 byte 字节
INT 2 int16 有符号 16 位整数(大端)
WORD 2 uint16 无符号 16 位整数(大端)
DINT 4 int32 有符号 32 位整数(大端)
DWORD 4 uint32 无符号 32 位整数(大端)
REAL 4 float32 32 位浮点数(大端)
LREAL 8 float64 64 位浮点数(大端)
STRING 256 string S7 字符串(首字节为最大长度,次字节为实际长度)

# 输出

读取结果重新赋值到 msg.Data,通过 Success 链传给下一个节点,格式为数组:

字段 类型 说明
name string 点位名称
value any 读取值,类型由点位 type 决定
timestamp string 读取时间(RFC3339)
error string 错误信息,成功时为空(单个点位失败不影响其他点位)

示例数据:

[
  {"name":"温度","value":25.6,"timestamp":"2026-07-23T10:00:00Z","error":""},
  {"name":"运行","value":true,"timestamp":"2026-07-23T10:00:00Z","error":""}
]
1
2
3
4

# 特性

  • 定时采集:搭配 endpoint/schedule 定时端点前置触发,点位在下方 points 配置;按需读取可由上游节点在 msg.Data 注入点位。
  • 模板变量:addr 等点位字段均支持 ${msg.xx} / ${metadata.xx} 模板变量。
  • 动态点位优先:msg.Data 携带合法点位 JSON 列表时优先使用,否则回退到配置的 points。
  • 同链连接池:链内可通过 ref://节点ID 借用复用其他 S7 节点已建立的 TCP 连接,避免重复建连。
  • 失败重连重试:连接级失败(全部点位失败)自动重连并重试,最多 3 次(maxRetries=3);单个点位失败仅标记错误信息(error 字段),不中断整体流程。

# Relation Type

  • Success: 执行成功,把消息发送到 Success 链。
  • Failure: 执行失败,把消息发送到 Failure 链。

# 示例

{
  "ruleChain": {
    "id": "s7_read_demo",
    "name": "S7 读节点示例",
    "root": true,
    "debugMode": false
  },
  "metadata": {
    "firstNodeIndex": 0,
    "nodes": [
      {
        "type": "x/s7Read",
        "name": "读取 PLC 数据",
        "debugMode": false,
        "configuration": {
          "server": "192.168.1.100:102",
          "rack": 0,
          "slot": 1,
          "timeout": 5,
          "points": [
            {"name": "温度", "addr": "DB1.DBD0", "type": "REAL"},
            {"name": "计数", "addr": "DB1.DBD4", "type": "DINT"},
            {"name": "运行", "addr": "M10.5", "type": "BOOL"}
          ]
        }
      }
    ],
    "connections": []
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/07/29, 07:07:39
串口通信
S7 写

← 串口通信 S7 写→

Theme by Vdoing | Copyright © 2023-2026 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式