Skip to the content.

快速开始 - 多从属设备轮询

5 分钟快速开始

1️⃣ 配置文件

创建 config.yaml

server:
  port: 8080
storage:
  path: "gateway.db"

devices:
  - id: "gateway-1"
    name: "Modbus TCP Gateway"
    protocol: "modbus-tcp"
    interval: 2s
    enable: true
    config:
      url: "tcp://127.0.0.1:502"
    
    slaves:
      - slave_id: 1
        enable: true
        points:
          - id: "temp1"
            address: "40001"
            datatype: "int16"
            readwrite: "RW"
            scale: 0.1
            offset: 0
      
      - slave_id: 6
        enable: true
        points:
          - id: "temp6"
            address: "40001"
            datatype: "int16"
            readwrite: "RW"
            scale: 0.1
            offset: 0

2️⃣ 编译

cd edge-gateway
go build ./cmd/main.go

3️⃣ 运行

./main -config config.yaml

4️⃣ 查看日志

Device gateway-1 using multi-slave mode (2 slaves)
Switched to slave_id: 1
Switched to slave_id: 6

配置对比

旧格式(单设备)

devices:
  - id: "dev1"
    config:
      slave_id: 1
    points:
      - id: "p1"
        address: "40001"

新格式(多从属)

devices:
  - id: "dev1"
    config:
      # 移除 slave_id
    slaves:
      - slave_id: 1
        points:
          - id: "p1"
            address: "40001"
      - slave_id: 6
        points:
          - id: "p2"
            address: "40001"

关键参数

参数 说明 示例
slaves 从属设备列表 []
slave_id Modbus Unit ID 1, 6, 10
enable 启用/禁用该 Slave true, false
points 该 Slave 的点位列表 []

性能

常见场景

场景1:多个温度传感器

slaves:
  - slave_id: 1
    points:
      - id: "temp1"
        address: "40001"
        scale: 0.1
  - slave_id: 2
    points:
      - id: "temp2"
        address: "40001"
        scale: 0.1

场景2:混合设备

slaves:
  - slave_id: 1  # 温度传感器
    points:
      - id: "temp"
        address: "40001"
      - id: "humidity"
        address: "40002"
  
  - slave_id: 10  # 压力表
    points:
      - id: "pressure"
        address: "40001"

场景3:有条件的启用

slaves:
  - slave_id: 1
    enable: true  # 启用
    points: [...]
  
  - slave_id: 6
    enable: false  # 禁用(跳过)
    points: [...]

故障排查

问题:数据为 0

原因:Scale 和 Offset 配置错误

解决

scale: 1.0    # 不要设置为 0
offset: 0     # 如需偏移才设置

问题:连接失败

原因:URL 或 Slave ID 错误

检查清单

问题:某个 Slave 无法读取

解决

下一步


Happy coding! 🚀