From 33baa13b76bad83cddcdb19acf3d00cf4103dfaa Mon Sep 17 00:00:00 2001 From: wangfq Date: Mon, 29 Jun 2026 10:30:20 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20devlog=20=E2=80=94=20V2.4=20=E5=86=BB?= =?UTF-8?q?=E7=BB=93=E8=B6=85=E6=97=B6=E7=A8=B3=E5=AE=9A=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/devlog.md | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/docs/devlog.md b/docs/devlog.md index 6765da0..c7e6692 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -437,45 +437,39 @@ if (!g_loop_stable) { ### 问题 -V1.5 引入的 Origin 污染保护机制在 CAPVD 异常偏高时**永久冻结**基线。如果线圈因环境变化(温度漂移、器件老化、更换线圈)稳定在新的频率值,Origin 永远不会更新 → 绿灯常亮、永久误判有车。只有 MCU 复位才能恢复。 +V1.5 引入的 Origin 污染保护机制在 CAPVD 异常偏高时**永久冻结**基线。如果线圈因环境变化(温度漂移、器件老化、更换线圈)稳定在新的频率值,Origin 永远不会更新 → 绿灯常亮、永久误判有车。 ### 方案 -在冻结路径上增加**超时自动恢复机制**: +在冻结路径上增加**超时自动恢复 + 稳定性验证**: ```c -#define FREEZE_TIMEOUT 3000 // ~30s @ 10ms/tick +#define FREEZE_TIMEOUT 3000 // ~30s @ 10ms/tick +#define FREEZE_STABILITY_RATE 2 // 稳定性窗口: 参考值的 ±2% if (dev >= dlt_ORG × 4) { - loop1_freeze_cnt++; - if (loop1_freeze_cnt >= FREEZE_TIMEOUT) { - // 超时: 持续偏高但稳定 → 环境变化,接受新基线 - loop1_Origin = loop1_CAPVD; // 直接更新为新常态值 - loop1_freeze_cnt = 0; - // 重置累计,后续正常滑动平均跟踪 - } else { - // 未超时: 继续冻结(防车辆驶入时的 Xn 先增尖峰) + if (freeze_cnt == 0) + freeze_ref = CAPVD; // 记录冻结起始值 + else if (|CAPVD - freeze_ref| > freeze_ref × 2%) + reset(freeze_cnt, freeze_ref); // 波动过大 → 重新计时 + + freeze_cnt++; + if (freeze_cnt >= 3000) { + Origin = CAPVD; // 连续30s稳定在±2%窗口内 → 接受 } } ``` ### 行为表格 -| 场景 | CAPVD 行为 | 冻结计数 | 结果 | -|------|-----------|---------|------| -| 车辆驶入(Xn 先增) | 偏高 2~3s 后下降 | < 3000 → 清零 | 正常冻结保护 ✓ | -| 温度漂移 | 缓慢爬升到新值并稳定 | > 3000 → 超时 | Origin 更新到新值 ✓ | -| 更换线圈 | 瞬间跳到新频率 | > 3000 → 超时 | Origin 更新到新值 ✓ | -| EMI 间歇干扰 | 偏高后恢复 | 恢复时清零 | 正常冻结保护 ✓ | +| 场景 | CAPVD 行为 | 稳定性检查 | 结果 | +|------|-----------|-----------|------| +| 车辆驶入(Xn 先增) | 偏高 2~3s 后下降 | 中途恢复 → `freeze_cnt` 清零 | 正常冻结保护 ✓ | +| 温度漂移 | 缓慢爬升到新值并稳定 | 爬升阶段频繁重置;稳定后连续 30s | Origin 更新 ✓ | +| 更换线圈 | 瞬间跳到新频率 | 稳定后连续 30s | Origin 更新 ✓ | +| 车辆缓慢驶入(CAPVD 持续爬升) | 持续偏高且不断上升 | 每超出 ±2% 就重置 → 永远到不了 30s | **不触发更新** ✓ | -### 冻结计数重置时机 - -| 触发条件 | 操作 | -|---------|------| -| `dev < dlt_ORG × 4`(CAPVD 回到正常范围) | `freeze_cnt = 0`,恢复跟踪 | -| 超时触发(Origin 强制更新后) | `freeze_cnt = 0` | -| 车辆进入(`loop1_VD_FLAG = 1`) | `freeze_cnt = 0` | -| `INIT_VD()`(上电/安全复位) | `freeze_cnt = 0` | +最后一行是关键:如果没有稳定性检查,车辆缓慢驶入时 CAPVD 持续偏高 30s 也会触发 Origin 更新——这是错误的。 --- @@ -483,6 +477,7 @@ if (dev >= dlt_ORG × 4) { | 版本 | 时间 | 说明 | |------|------|------| +| V2.4 | 2026-06-29 | 冻结超时增加稳定性检查: CAPVD 需连续 30s 稳定在 ±2% 窗口内 | | V2.3 | 2026-06-29 | 基线冻结超时: 持续偏高30s后强制更新 Origin,防止环境变化死锁 | |------|------|------| | V2.2 | 2026-06-26 | 稳定期绕过 IIR/斜率限幅,用 Value 直接收敛基线 |