DYP-A17 超声波液位传感器接入指南
模型清单
可使用下列名称或 ID 在 ThinkLink 中搜索对应模型。
| 模型类型 | 名称 | id_name | 平台模型 ID |
|---|---|---|---|
| RPC | [A17 GET] 22112 | dyp_a17_get_22112 | 115860154150187009 |
| RPC | [A17 SET] 22112 | dyp_a17_set_22112 | 115860154150187008 |
| RPC | [A17 SET ALARM] 22112 | dyp_a17_set_alarm_22112 | 115861829380370432 |
| RPC | [A17 ACT] 22112 | dyp_a17_set_filter_22112 | 115860154150187010 |
| Template | DYP-A17 | 115862917407993856 | |
| Thing Model | [A17] | dyp_a17_22112 | 115859351784026112 |
| Thing Model | [DYP-22112-A17资产] 区域聚合 | dyp_a17_asset_22112 | 119677174411063307 |
| Parameter Thing Model | [A17-PARA] | dyp_a17_para_22112 | 115859352627081216 |
| Trigger | [A17] Level Alarm Trigger | dyp_a17_trigger_22112 | 115861828692504576 |
1. 传感器简介
| 项目 | 内容 |
|---|---|
| 设备名称 | A17 超声波液位(测距)传感器 |
| 型号 | DYP-A17-V1.0(RS485 受控输出型号 DYP-A17NY4W-V1.0) |
| 厂商 | 深圳市电应普科技有限公司(DYP / Best Sensor) |
| 协议类型 | Modbus-RTU(RS-485) |
| 接入方式 | EdgeBus DTU(KC21 电池版),LoRaWAN Class A |
| 业务代码 | 22112 |
| 模板名称 | DYP-A17 |
A17 采用超声波反射式测距技术,非接触测量探头到液面的距离(量程 25cm~1000cm),通过 KC21 电池版 DTU 以 Modbus-RTU 接入 ThinkLink,用于污水井/下水道液位监测,并提供高液位/溢出、低液位、传感器读数故障三类告警。
⚠️ 液位语义:A17 测量的是「探头到液面的距离」,液位越高,距离越小。因此高液位告警使用较小的距离阈值,低液位告警使用较大的距离阈值。
2. 产品特点
- 智能信号处理,盲区小,量程 25cm~1000cm,最小误差 < 1cm。
- 非接触测量,探头不接触污水,避免腐蚀、缠绕、结垢。
- 腔体防积水工艺,有效缓解探头凝露(污水井湿气重的关键)。
- 板载温度补偿(-15℃~60℃),自动修正温度偏差。
- 低功耗设计:静态电流 < 10µA、测量状态 < 15mA,配合电池版 DTU + COV 上报长期续航。
- 台阶过滤等级、探头激励强度、盲区判断值可调,适应井壁回波/井面波动等复杂工况。
- 静电防护设计,符合 IEC61000-4-2 标准。
3. 适用范围
- 污水井 / 下水道液位监测(本方案)
- 市政排水管网 / 雨水井内涝预警
- 集水坑 / 泵站液位监测
4. 采集器信息
4.1 硬件信息
| 项目 | 内容 |
|---|---|
| DTU 型号 | KC21(电池版) |
| 接口类型 | RS-485 |
| 供电方式 | 电池供电(已确认),LoRaWAN Class A |
| 设备模板 | MT-EB-BATTERY |
| 心跳周期 | 出厂/绑定默认短心跳(900s,保证调试入网);配置完成后经 SET RPC 设为 8h(28800s)省电 |
| 传感器工作电压 | DC 3.3~5.0V(静态 < 10µA,测量 < 15mA) |
⚠️ 供电兼容性提示(部署前现场核对):A17 传感器本体工作电压为 DC 3.3~5.0V。KC21 电池版 DTU 给传感器供电的输出电压须与之匹配(部分 KC21 电池版输出可选 3.3V/5V)。同类电池版超声波液位传感器已有成功接入先例,但部署前请核对 KC21 实际供电输出电压,避免供电不匹配导致传感器无法工作。
4.2 接线信息
| 引线 | 标注 | 功能 | 接 KC21(电池版) |
|---|---|---|---|
| ① | VCC | 3.3~5V 电源 | KC21 VCC 输出(核对电压) |
| ② | GND | 电源地 | KC21 GND |
| ③ | RX | RS485-B(反相端) | KC21 RS485-B |
| ④ | TX | RS485-A(同相端) | KC21 RS485-A |
注意:A17 的 ③RX = 485-B、④TX = 485-A,A/B 对应关系勿接反。
5. 数据采集
通过 Modbus-RTU(FC03 读保持寄存器,CRC-16,默认地址 0x01,9600/8/N/1,高字节在前)读取以下数据点:
0x0100处理值距离(滤波后稳定值)→ 液位主遥测,告警判据0x0101实时值距离(单次实时距离,响应 130ms)→ COV 触发源0x0102环境温度
5.1 寄存器定义
| 寄存器地址 | 项目 | 数据类型 | 读写 | 说明 |
|---|---|---|---|---|
| 0x0100 | 处理值距离 | uint16BE(mm) | R | 多次测距滤波后稳定值,响应 0.9~2.5s(本方案采集,告警判据——滤波稳定) |
| 0x0101 | 实时值距离 | uint16BE(mm) | R | 单次实时距离,响应 130ms(本方案采集,COV 触发源——最快、溢出早期预警;噪声较大,不用于告警) |
| 0x0102 | 环境温度 | int16BE(0.1℃) | R | 模组内部温度,分辨率 0.5℃(本方案采集) |
| 0x0200 | 从机地址 | uint16BE | R/W | 0x01~0xFE,默认 0x01 |
| 0x0201 | 波特率 | uint16BE | R/W | 默认 0x03=9600 |
| 0x0210 | 盲区判断值 | uint16BE(cm) | R/W | 25~100,默认 25;影响盲区内稳定性 |
| 0x0211 | 台阶过滤等级 | uint16BE | R/W | 0~5,默认 4;越高过滤越强(井面波动/凝露场景需调) |
| 0x0212 | 探头激励强度 | uint16BE | R/W | 5~15,默认 10 |
| 0x0213 | 小角度模式 | uint16BE | R/W | 0 常规 / 1 小角度,默认 0 |
5.2 通讯报文示例
读处理值距离:主 01 03 01 00 00 01 85 F6 → 从 01 03 02 02 F2 38 A1(0x02F2=754mm)
读温度: 主 01 03 01 02 00 01 24 36 → 从 01 03 02 01 2C B8 09(0x012C=30.0℃)
写台阶过滤: 主 01 06 02 11 00 03 98 76 → 从 01 06 02 11 00 03 98 76(台阶过滤=3级)6. EdgeBus 模型
6.1 EB 配置参数
| 参数 | 值 |
|---|---|
| name | dyp-a17 |
| port | 22 |
| version | 0x87 |
| dataType | 0x12 |
| upPeriodIndex | 70(上传周期 app_70) |
| periodIndex | 74(采集周期 app_74) |
| indexAPP | 150(Modbus 地址 app_150) |
| COV | 开启,distance_realtime(实时值距离 0x0101,covAppIndex 110 / cov_distance) |
| 串口 | 9600 / 8 / NONE / 1 |
| Battery | true(Class A) |
| BzType / BzVersion | 22112 / 2 |
6.2 EB 代码
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";
// DYP-A17 超声波液位(测距)传感器 · Modbus-RTU FC03
// 0x0100 处理值距离 (uint16BE, mm) ← 告警判据(滤波稳定),每帧上报
// 0x0101 实时值距离 (uint16BE, mm) ← COV 上报触发源(130ms 响应,溢出早预警),阈值 app_110(cov_distance)
// 0x0102 环境温度 (int16BE, 0.1℃)
// 采集周期 app_74 / 上传周期 app_70 / Modbus 地址 app_150
// 2026-06-07 amend:加回 0x0101 实时值并把 COV 由 0x0100 移到 0x0101;BzVersion 1→2。
const eventInfo: UserConfUPItem[] = [
{
name: "dyp-a17", port: 22, version: "0x87", dataType: "0x12", upPeriodIndex: 70,
quInfo: [
{
protocol: "modbus", addr: "0x01", code: "0x03", periodIndex: 74,
indexAPP: 150, indexCMD: 0, copySize: 1,
listVal: [
{ start: "0x0100", end: "0x0100" },
{ start: "0x0101", end: "0x0101", covType: "Uint16BE", covAppIndex: 110 },
{ start: "0x0102", end: "0x0102" }
]
}
]
}
];
let otaConfig = getOtaConfig({
BaudRate: 9600,
StopBits: 1,
DataBits: 8,
Checkbit: CheckbitEnum.NONE,
Battery: true, // 电池供电,Class A
ConfirmDuty: 60,
BzType: 22112,
BzVersion: 2
});
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.3 说明
- 1 个查询事件:FC03 读寄存器 0x0100(处理值距离)、0x0101(实时值距离)、0x0102(温度)三个数据点。
- COV 上报:在 distance_realtime(实时值距离 0x0101)启用 COV,阈值取自 app_110(cov_distance);实时距离响应最快(130ms),溢出早期预警更及时,液位变化 ≥ 阈值即时上报,兼顾电池省电。实时值噪声较大,井面波动剧烈时可适当调高阈值;告警仍以稳定的处理值距离(0x0100)为判据。
- 采集/上传周期分离:采集周期 app_74,上传周期 app_70(COV 上报窗口上限)。
- 上行帧布局:标准 DTU 6 字节头 + distance(index 6-7,uint16BE)+ distance_realtime(index 8-9,uint16BE)+ temperature(index 10-11,int16BE),dataLen = 12。
- Modbus 地址动态注入:app_150(indexAPP)。
7. 物模型
7.1 物模型基本信息
| 类型 | 显示名 | id Name |
|---|---|---|
| 遥测物模型 | [A17] | dyp_a17_22112 |
| 参数物模型 | [A17-PARA] | dyp_a17_para_22112 |
7.2 上行帧结构
frameInfo:port 22,dataLen 12,rssi true,battery 4,tagList [{index:0,tag:0x87},{index:1,tag:0x12}]
| index | 字段 | 类型 | 单位 | 系数 |
|---|---|---|---|---|
| 6 | distance | uint16BE | mm | 1 |
| 8 | distance_realtime | uint16BE | mm | 1 |
| 10 | temperature | int16BE | ℃ | 0.1 |
7.3 物模型脚本
遥测物模型 dyp_a17_22112.js、参数物模型 dyp_a17_para_22112.js 见 thinklink/thingModel/。
8. 第三方平台数据订阅
8.1 MQTT Topic
/v32/{Organization Account}/tkl/up/telemetry/{eui}8.2 上报示例数据
{
"eui": "0102030405060708",
"active_time": "2026-06-06T08:35:48.000Z",
"thingModelId": "115859351784026112",
"thingModelIdName": "dyp_a17_22112",
"telemetry_data": {
"snr": 12.5,
"rssi": -68,
"battery": 3.55,
"distance": 754,
"distance_realtime": 752,
"temperature": 23.5
}
}9. RPC
9.1 RPC 名称
| 类型 | 显示名 | id Name |
|---|---|---|
| 参数设置 | [A17 SET] 22112 | dyp_a17_set_22112 |
| 参数读取 | [A17 GET] 22112 | dyp_a17_get_22112 |
| 设备寄存器调整(变体) | [A17 ACT] 22112 | dyp_a17_set_filter_22112 |
| 告警阈值配置 | [A17 SET ALARM] 22112 | dyp_a17_set_alarm_22112 |
9.2 参数定义
| 参数 | 槽位/寄存器 | 名称 | 单位 | 类型 | 默认 | 说明 |
|---|---|---|---|---|---|---|
| period_up | app_70 | 上传周期 | s | uint32LE | 3600 | 数据上报云端间隔(COV 上报窗口上限) |
| period_read | app_74 | 采集周期 | s | uint32LE | 300 | DTU 轮询传感器间隔 |
| cov_distance | app_110 | COV 距离阈值 | mm | int16BE | 50 | 实时距离(0x0101)变化 ≥ 该值即时上报;实时值噪声较大,井面波动剧烈时可调高 |
| period_heart | app_40 | 心跳周期 | s | uint32LE | 28800 | 电池省电默认 8h(出厂短心跳仅用于调试) |
| addr_modbus | app_150 | Modbus 地址 | — | uint8 | 1 | DTU 查询目标地址 |
| step_filter | 0x0211 | 台阶过滤等级 | — | uint16 | 4 | 透明 FC06 写设备寄存器(井面凝露/波动时调高) |
| blind_zone | 0x0210 | 盲区判断值 | cm | uint16 | 25 | 透明 FC06 写设备寄存器 |
9.3 RPC 说明
- dyp_a17_set_22112:一次下发上传/采集周期、COV 阈值、Modbus 地址、心跳周期(PTL-D01 port 214)。电池设备心跳保持 ≥1h(默认 8h)省电。
- dyp_a17_get_22112:读取上述 DTU app 参数当前值。
- dyp_a17_set_filter_22112(变体):下拉选「台阶过滤等级 / 盲区判断值」,透明通道 FC06 写设备寄存器,echo 校验后回写 shared_attrs。每次仅调整一项,当前值自动回填。
- dyp_a17_set_alarm_22112:按井体配置告警阈值(写 server_attrs.alarm_config,供告警触发器读取)。
RPC 完整脚本见 thinklink/rpc/。
10. 告警
告警触发器 dyp_a17_trigger_22112([A17] Level Alarm Trigger)在每帧遥测后评估,阈值取自 server_attrs.alarm_config(经 dyp_a17_set_alarm_22112 RPC 按井体配置;未配置时使用安全默认)。
| 告警 | 条件(距离语义) | 默认阈值 | 级别 |
|---|---|---|---|
| 高液位 / 溢出 | distance ≤ high_level_dist(液面逼近探头) | 300mm | high |
| 低液位 | distance ≥ low_level_dist(井近空) | 8000mm | mid |
| 传感器读数故障 | distance 异常(< 250mm 盲区 / ≥ 10000mm 超量程 / = 0) | — | mid |
- 距离阈值带 50mm 迟滞死区,防止阈值附近震荡误报。
- 使用前先调用 dyp_a17_set_alarm_22112 配置阈值,并在设备分组中设置通知群。
- 失联(无数据上报)由平台离线告警机制处理(触发器仅在上行时评估,无法检测「无上行」)。
11. 模板选择
在 ThinkLink 平台中按以下方式查找模板:
- 模板名称:DYP-A17
- 业务代码:22112(超声波液位传感器)
12. 补充说明
- 厂家默认:从机地址 0x01,波特率 9600,盲区 25cm,台阶过滤 4 级,探头激励 10。
- 修改从机地址:FC06 写 0x0200;修改波特率:FC06 写 0x0201(重启生效)。
- 污水井湿气重、温差大时探头易凝露积水,影响超声波信号;A17 防积水工艺可缓解,必要时通过 dyp_a17_set_filter_22112 调高台阶过滤等级。