Skip to content

汇中 SCL-61D 超声水表对接

模型清单

可使用下列名称或 ID 在 ThinkLink 中搜索对应模型。

模型类型名称id_name平台模型 ID
RPC[SCL-61D GET] 23111scl61d_get_23111110312230444077061
RPC[SCL-61D SET] 23111scl61d_set_23111110312286060548101
TemplateSCL-61D110312390112841733
Thing Model[SCL-61D]scl61d_23111110311140134752261
Thing Model[HZ-23111-SCL-61D资产] 区域聚合scl61d_asset_23111119677189950959619
Parameter Thing Model[SCL-61D-PARA]scl61d_para_23111110311197902901253

本文档描述汇中仪表 SCL-61D5/6 超声水表通过 KC21 采集设备,基于 Modbus RTU + EB 协议接入 ThinkLink 平台的完整方案。内容包括:

  • 设备接线与通信参数
  • ThinkLink 平台使用方法
  • 数据上报与第三方订阅方式
  • EB 高级对接实现(EBHelper / 物模型 / RPC)

第 1 部分:用户使用说明


2. 对接设备信息(SCL-61D 超声水表)

2.1 基本信息

项目内容
品牌汇中仪表(HUIZHONG)
型号SCL-61D5 / SCL-61D6
设备类型超声水表
供电方式内置电池(自供电,无需外部供电

2.2 通信参数(RS485 / Modbus RTU)

参数项配置
通信协议Modbus RTU
波特率9600 bps
数据位8
校验位无校验(NONE)
停止位1
设备地址范围0x01–0xFA
功能码0x03(读保持寄存器)

2.3 数据寄存器

寄存器地址数据内容单位字节数数据类型
0x0000–0x0001瞬时流量0.001 m³/h4Float Inverse(FloatLE)
0x0002–0x0003正累积流量0.1 m³4Long Inverse(Uint32LE)
0x0004–0x0005正累积运行时间h4Long Inverse(Uint32LE)
0x0006–0x0007负累积流量0.1 m³4Long Inverse 带正负号(Int32LE)
0x0008–0x0009负累积运行时间h4Long Inverse 带正负号(Int32LE)
0x000A–0x000B水温4Float Inverse(FloatLE)
0x000C–0x000D压力0.001 MPa4Float Inverse(FloatLE)
0x000E仪表信息/诊断码2Hex

仪表信息高字节固定为 0,低字节为诊断信息代码(JD),0x00 表示正常。详见附录。

2.4 接线说明

KC21 线缆连接到水表
蓝色(RS485 A)RS485 A
白色(RS485 B)RS485 B
黑色(GND)GND

⚠️ 注意:

  • SCL-61D 内置电池自供电,KC21 红/棕色电源线不接水表
  • 无需前导码唤醒:SCL-61D 为标准 Modbus RTU 协议,直接发送查询命令即可

3. 采集设备信息(KC21)

3.1 基本信息

项目内容
设备型号KC21(A1 版本,内置 10800 mA 电池)
供电方式内置电池
对外供电能力15V(本方案不使用,水表自供电)

3.2 KC21 接线说明

线缆颜色含义
红色 / 棕色电源 +(本方案不接
黑色电源 − / GND
蓝色RS485 A
白色RS485 B

4.1 添加设备

  1. 登录 ThinkLink 平台
  2. 进入 设备管理 → 新增设备
  3. 搜索并选择模板 HZ-BATTERY-23111
  4. 完成设备创建

4.2 参数配置(抄表周期 & 地址)

路径:设备管理选择设备配置RPC

选择 RPC:[EB SET] easy para

参数名含义说明
period抄表周期单位:秒,建议 900(15 分钟)
addr水表 Modbus 地址出厂默认 0x01,可按需修改

参数修改后,设备下次上线时自动生效。

4.3 第三方平台数据订阅

MQTT Topic

/v32/{Organization Account}/tkl/up/telemetry/{eui}

上报示例数据

json
{
    "eui": "6353012af10a9331",
    "active_time": "2026-05-21T08:00:00.000Z",
    "thingModelId": "scl61d_23111",
    "thingModelIdName": "scl61d_23111",
    "telemetry_data": {
        "snr": 12.5,
        "rssi": -55,
        "battery": 3.6,
        "instant_flow": -1.955,
        "pos_total_flow": 155.2,
        "pos_run_time": 1360,
        "neg_total_flow": -13.1,
        "neg_run_time": 7,
        "temperature": 29.00,
        "pressure": 0.9150,
        "meter_info": 0,
        "update_time": 1747814400000
    }
}

第 2 部分:高级对接说明


5. 数据采集实现(EBHelper)

5.1 通信协议

项目内容
协议类型Modbus RTU
实现方式EBHelper
BzType23111
单次查询范围0x0000–0x000E(15 个寄存器,一次读取全部数据)

5.2 OTA 配置参数

javascript
let otaConfig = getOtaConfig({
    BaudRate: 9600,
    StopBits: 1,
    DataBits: 8,
    Checkbit: CheckbitEnum.NONE,
    Battery: true,
    ConfirmDuty: 60,
    BzType: 23111,
    BzVersion: 1
})

5.3 EB 代码

typescript
import { Buffer } from "buffer";
import { buildOtaFile } from "@EBSDK/run";
import { EBModel } from "@EBSDK/EBCompiler/EBModel/EBModel";
import { EventInfoItem } from "@EBSDK/EBCompiler/plugins/EBHelper";
import type { UserConfUPItem } from "@EBSDK/EBCompiler/plugins/EBHelper";
import { CheckbitEnum, getOtaConfig } from "@EBSDK/otaConfig";

// SCL-61D5/6 超声水表,Modbus RTU,一次读取 0x0000-0x000E(15个寄存器)
// KC21 电池供电;水表自供电,KC21 不对水表供电
// 无前导码:标准 Modbus RTU,不需要 preamble

const eventInfo: UserConfUPItem[] = [
    {
        name: "water",
        port: 22,
        version: "0x83",
        dataType: "0x32",
        upPeriod: "10y",
        upPeriodIndex: 70,
        quInfo: [
            {
                protocol: "modbus",
                addr: "0x01",
                code: "0x03",
                periodIndex: 70,
                indexAPP: 150, indexCMD: 0, copySize: 1,
                payIndex: 3, ackAddrIndex: 0,
                isLast: true,
                listVal: [
                    { start: "0x0000", end: "0x0001" }, // 瞬时流量 FloatCDAB (FloatLE)
                    { start: "0x0002", end: "0x0003" }, // 正累积流量 UintCDAB (Uint32LE)
                    { start: "0x0004", end: "0x0005" }, // 正累积运行时间 UintCDAB (Uint32LE)
                    { start: "0x0006", end: "0x0007" }, // 负累积流量 IntCDAB (Int32LE)
                    { start: "0x0008", end: "0x0009" }, // 负累积运行时间 IntCDAB (Int32LE)
                    { start: "0x000A", end: "0x000B" }, // 水温 FloatCDAB (FloatLE)
                    { start: "0x000C", end: "0x000D" }, // 压力 FloatCDAB (FloatLE)
                    { start: "0x000E", end: "0x000E" }, // 仪表信息/诊断码 Uint16LE
                ]
            }
        ]
    }
]

let otaConfig = getOtaConfig({
    BaudRate: 9600,
    StopBits: 1,
    DataBits: 8,
    Checkbit: CheckbitEnum.NONE,
    Battery: true,
    ConfirmDuty: 60,
    BzType: 23111,
    BzVersion: 1
})

const MODBUS_TT = (ebModel: EBModel) => {
    for (let i = 0; i < eventInfo.length; i++) {
        let event = new EventInfoItem(eventInfo[i]);
        event.upEventSetup()
        event.eventInstall()
    }
    return JSON.stringify(ebModel, null, 2)
}

buildOtaFile(import.meta.url, otaConfig, MODBUS_TT)

6. 物模型解析说明

6.1 上行帧结构

端口号:22

采用 EBHelper 标准帧结构(单次查询 15 个寄存器 = 30 字节数据):

字段名偏移长度(Bytes)含义
version01协议版本号,固定 0x83
dataType11固定 0x32
covStatus21保留字节
status31查询事件状态
battery41电池电量
addr51子设备 Modbus 地址
instant_flow64瞬时流量,FloatCDAB(FloatLE)
pos_total_flow104正累积流量,UintCDAB(Uint32LE)
pos_run_time144正累积运行时间,UintCDAB
neg_total_flow184负累积流量,IntCDAB(Int32LE)
neg_run_time224负累积运行时间,IntCDAB
temperature264水温,FloatCDAB
pressure304压力,FloatCDAB
meter_info342仪表信息/诊断码,Uint16LE

总帧长:36 字节

6.2 物模型信息

项目内容
物模型名称SCL-61D
ThingModel ID Namescl61d_23111
事件名称water

6.3 字段映射

字段名含义单位换算
instant_flow瞬时流量m³/h原始值 × 0.001
pos_total_flow正累积流量原始值 × 0.1
pos_run_time正累积运行时间h
neg_total_flow负累积流量原始值 × 0.1
neg_run_time负累积运行时间h
temperature水温
pressure压力MPa原始值 × 0.001
meter_info仪表诊断码0x00 = 正常
batteryKC21 电池电量
rssi信号强度dBm
snr信噪比dB

6.4 RPC 参数修改

  • RPC 名称[EB SET] easy para
  • ID Nameeb_set_easy_para
地址含义
app_70抄读周期(period,秒)
app_150水表 Modbus 地址(addr)

附录:诊断信息代码说明(meter_info 低字节 JD)

诊断码含义
0x00正常
JD & 0x0F = 0x01电池电压低于 3.37V,需更换电池
JD & 0x0F = 0x02空管或换能器故障,无测量信号
JD & 0x0F = 0x03代码 01 和 02 同时发生
JD & 0x0F = 0x04电池电压低于 3.3V,必须更换电池
JD & 0x0F = 0x05计算器和换能器之间通讯故障
JD & 0x0F = 0x06E2PROM 损坏
JD & 0x10 = 0x10供水温度传感器故障或供水温度低于 2℃
JD & 0x20 = 0x20供水温度超出 150℃
JD & 0x40 = 0x40回水温度传感器故障或回水温度低于 2℃
JD & 0x80 = 0x80回水温度超出 150℃

总结

  • 本方案实现了 SCL-61D 超声水表 → KC21 → EB → ThinkLink 的完整闭环
  • 支持:远程参数配置、周期性全量数据采集(8 个字段)、标准 MQTT 对接第三方平台
  • 物模型:scl61d_23111
  • RPC 参数修改:eb_set_easy_para
  • 模板:HZ-BATTERY-23111
  • 架构稳定、低功耗,适用于水务计量与管网监测场景