From 9d90419ee01fddce236e2802b31a251880eac100 Mon Sep 17 00:00:00 2001 From: wangfq Date: Wed, 26 Aug 2026 17:29:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(DLD110S):=200x24=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0LOOP=5FMEASURE=5FBASE=E5=BD=92=E4=B8=80?= =?UTF-8?q?=E5=8C=96=E5=9F=BA=E6=95=B0(=E5=8D=8F=E8=AE=AEV1.1)=20=E2=80=94?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E7=AC=AC=E4=B8=89=E6=96=B9variation?= =?UTF-8?q?=E6=8D=A2=E7=AE=97=E6=94=BE=E5=A4=A74=E5=80=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c | 4 ++++ .../APP/include/cmcng.h | 3 +++ docs/ble-protocol.md | 8 ++++++- docs/devlog.md | 24 +++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c b/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c index 0ba2b37..6c8fc28 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c +++ b/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c @@ -632,6 +632,10 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) tmp_ble_buf[i++] = (g_loop_power_up_state == 0) ? 1 : ((uint8_t)(g_loop_cut_amount)); tmp_ble_buf[i++] = (uint8_t)(g_loop_cut_amount >> 8); tmp_ble_buf[i++] = g_function_mode; + /* V1.1: 追加归一化基数 LOOP_MEASURE_BASE (2^19=524288, LE), 供第三方 variation 换算 dL/L */ + tmp_ble_buf[i++] = (uint8_t)(LOOP_MEASURE_BASE); + tmp_ble_buf[i++] = (uint8_t)(LOOP_MEASURE_BASE >> 8); + tmp_ble_buf[i++] = (uint8_t)(LOOP_MEASURE_BASE >> 16); set_response_buf(&g_buf_ble_response, MAGIC_BYTE_DBN_DEFAULT, _cmd, tmp_ble_buf, i); // PRINT("\nGet_Cjq_param\n"); diff --git a/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h b/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h index 4bf1c53..7530471 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h +++ b/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h @@ -20,6 +20,9 @@ #define HARDWARE_VER_MAIN 4 #define HARDWARE_VER_SUB 1 +/* 归一化基数: variation 换算 dL/L 时除以该值 (2^19=524288, 必须与 peripheral_main.c MEASUREMENT_BASE 同步) */ +#define LOOP_MEASURE_BASE 524288L + /* 功能模式位 (direction_mode 高4位, 协议保留; 新算法不再消费) */ #define FUNCTION_A 0x01 // 二次判断 (已废弃) #define FUNCTION_B 0x02 // 二次判断增强条件判断 (已废弃) diff --git a/docs/ble-protocol.md b/docs/ble-protocol.md index d3a2cca..24cb93f 100644 --- a/docs/ble-protocol.md +++ b/docs/ble-protocol.md @@ -132,7 +132,7 @@ g_hold_time = exist_mode * 30 * 20 (600 tick ≈ 30s × exist_mode, @50ms ### 5.4 0x24 读车检器参数 -无 Data。响应 Data(8B): +无 Data。响应 Data(11B): | 偏移 | 内容 | |------|------| @@ -144,6 +144,12 @@ g_hold_time = exist_mode * 30 * 20 (600 tick ≈ 30s × exist_mode, @50ms | 5 | 线圈断开次数低字节 | | 6 | 线圈断开次数高字节 | | 7 | **g_function_mode**(注意:DLD154Pro 此处是 direction_mode) | +| 8-10 | **归一化基数 LOOP_MEASURE_BASE(3B LE,= 524288)**(V1.1 追加) | + +> ⚠ **偏移 8-10 用途(协议 V1.1,2026-08-26 追加)**:variation 换算 ΔL/L 的归一化基数。 +> 第三方应用连接后读一次 0x24 缓存该值:`Δf/f ≈ variation / LOOP_MEASURE_BASE`,`ΔL/L ≈ -2 × variation / LOOP_MEASURE_BASE`。 +> **背景**:DLD110S 的 MEASUREMENT_BASE = 524288(2^19 @60MHz),与 DLD154V4B 的 131072 不同——小程序曾照搬 131072 导致所有百分比放大 4 倍。固件显式上报后第三方无需猜测。 +> 向后兼容:老小程序只读前 8B 不受影响;新小程序读 11B。 ### 5.5 0x8A 读写灵敏度表 diff --git a/docs/devlog.md b/docs/devlog.md index 54c9ac2..20b51eb 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -2,6 +2,30 @@ > MCU: CH591R (RISC-V, BLE) @60MHz | 通道: 1 路线圈 | 调试口: UART0 (DEBUG 编译, 230400) +## 2026-08-26 — 0x24 追加归一化基数 LOOP_MEASURE_BASE(协议 V1.1) + +### 背景 + +小程序评估 DLD110S 上报数据时发现归一化基数 bug:用 DLD154V4B 的 MEASUREMENT_BASE=131072 归一化 variation,DLD110S 实为 524288(2^19 @60MHz)→ 所有百分比放大 4 倍(ΔL/L 报 8.85% 实为 2.21%)。根治方案(王工确认方案 A):**固件显式上报基数,第三方不猜**。 + +### 改动 + +| 文件 | 改动 | +|------|------| +| `APP/include/cmcng.h` | 新增 `#define LOOP_MEASURE_BASE 524288L`(注释标明必须与 peripheral_main.c MEASUREMENT_BASE 同步) | +| `APP/dbn_ble_srv.c` | 0x24 读参响应尾部追加 3B LE:`LOOP_MEASURE_BASE`(响应 8B→11B,仍单包 ≤14B,无分包) | +| `docs/ble-protocol.md` | §5.4 响应表加偏移 8-10 + 换算公式 + 背景说明(协议 V1.1) | + +### 要点 + +- **换算公式**:`Δf/f ≈ variation / LOOP_MEASURE_BASE`,`ΔL/L ≈ -2 × variation / LOOP_MEASURE_BASE` +- **向后兼容**:老小程序只读前 8B 不受影响;新小程序读 11B 拿基数 +- **零分包风险**:0x24 响应 11B data < MAX_BLE_DAT_RESPONSE_LEN=14,单包不变;0xC0 未动(加实时 Origin 需 13→16B 会触发分包,本轮不做) +- 未 bump 固件版本号(V4.20 → 用户确认 V4.30 有部分代码更新,晚点统一同步) +- 上报缺陷(0xC0 无 Origin)已确认:第三方用频率基线或本基数均可,固件暂不扩 0xC0 + +--- + ## 2026-08-26 — 环路线圈健康评估设计依据归档 + 小程序评估报告核验 ### 背景