From 33c268409d0a9d6e6fc08ae72027a002d9d8c117 Mon Sep 17 00:00:00 2001 From: wangfq Date: Mon, 7 Sep 2026 11:18:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(V4B):=20V4.36.26=20=E2=80=94=20=E4=BD=8EQ?= =?UTF-8?q?=20=E5=8F=91=E6=95=A3=E6=B2=BB=E7=90=86=E5=89=82=E9=87=8F?= =?UTF-8?q?=E5=8A=A0=E5=A4=A7:=20=CF=8485ms=20+=20=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E5=90=8E=20Origin=20=E5=86=BB=E7=BB=93=20500ms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户拍板方案 A (V4.36.19 仍偶发, 有改善 → 剂量中等+治本一起上) - REL_ALFA 46→30: 低Q 释放平滑 τ≈50→85ms (削抖动带宽更狠) - 带回保持 REL_BAND_LO_MULT=150(35): 触发-释放回滞 14 counts 不压缩 (防抖落) - 治本 REL_ORIGIN_FREEZE_TICKS=50: 释放确认后 Origin 均值窗冻结 500ms, 切断「释放残余→Origin 学入→释放线漂移→cycle 间发散」正反馈 - 冻结只挡均值窗; INIT_VD 清零 语法0 error, 4测试全绿; spec V2.43 / devlog V2.62 --- docs/devlog.md | 14 ++++++++++++++ docs/technical-spec.md | 3 ++- utilities/at32f421_freertos_demo/inc/TaskLoop.h | 3 ++- utilities/at32f421_freertos_demo/inc/cmcng.h | 4 ++-- utilities/at32f421_freertos_demo/src/TaskLoop.c | 13 +++++++++++-- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/docs/devlog.md b/docs/devlog.md index 95a78d9..3a7033d 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -4,6 +4,19 @@ --- +## 2026-09-04 — 低Q 发散治理剂量加大:τ85ms + 释放后 Origin 冻结 500ms(固件 V4.36.26) + +用户反馈(V4.36.19 盲测):仍会出现但较前改善 → 拍板方案 A(剂量中等 + 治本一起上)。 + +- REL_ALFA 46→30:低Q 释放平滑 τ≈50→85ms(更狠低通削抖动带宽,快离开释放延迟 ~85ms 级可接受) +- 带回保持 REL_BAND_LO_MULT=150(35 counts):触发-释放空间回滞保持 14 counts 不再压缩(防释放抖落) +- **治本项 REL_ORIGIN_FREEZE_TICKS=50**:释放确认(Car_OFF)置冻结 500ms → 无车段 Origin 均值窗 + (update_moving_average WINDOW_ORIGIN) 入口守卫跳过 → 板缓离残余无法学入 Origin → + 切断「释放残余 → Origin 漂移 → 释放线跟随 → cycle 间发散」正反馈路径 + (注:此前开打印日志"Origin 无漂移"是打印降采样屏蔽的假象,禁用打印场景发散需此冻结) +- 冻结只挡均值窗(判稳直锁/env 学习/FREEZE_TIMEOUT 兜底不受影响);INIT_VD 清零 +语法 0 error、4 测试全绿;REV 4.36.26;spec V2.43 / devlog V2.62。 + ## 2026-09-04 — 电感量三分语义修正:合理窗 18~125kHz + 下限快闪(固件 V4.36.25) 用户设计拍板(纠正 V4.36.22/23 把合理窗上限随下限推到 153/156 的偏差): @@ -1999,6 +2012,7 @@ if (dev >= dlt_ORG × 4) { | 版本 | 时间 | 说明 | |------|------|------| +| V2.62 | 2026-09-04 | V4.36.26 低Q 剂量加大: REL_ALFA 30(τ85ms) + 释放后 Origin 均值窗冻结 500ms(治本, 切断 cycle 正反馈) | | V2.61 | 2026-09-04 | V4.36.25 电感量三分: 合理窗回 125k; 125~156k 一长一短(修正误归正常); f>156k=L<24µH 快闪; recover 判据同步 | | V2.60 | 2026-09-04 | V4.36.24 L<下限双模式 COIL_UNDER_MIN_AS_OPEN: 0=仅黄灯快闪/1=完全断开(RLY释放+绿灯灭+判定停, ISR 强制 LOOP_OK+RLY 短路防抖); 恢复走 coil_monitor_recover | | V2.59 | 2026-09-04 | V4.36.23 最低电感量 25→24µH: 频率上限 156kHz; L<24µH 断开级快闪; test 156/157 | diff --git a/docs/technical-spec.md b/docs/technical-spec.md index 2819b9a..6b58f73 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -1,6 +1,6 @@ # DLD154V4B 技术规格书 -> 单路线圈车辆检测器 | 固件版本: V4.36.25 | 文档版本: V2.42 +> 单路线圈车辆检测器 | 固件版本: V4.36.26 | 文档版本: V2.43 > 本文档面向工程开发、系统集成及故障深度分析 --- @@ -831,3 +831,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的 | V2.40 | 2026-09-04 | **V4.36.23 最低电感量 25→24µH**(COIL_L_MIN_UH=24):频率上限 153→156kHz(f@24µH=156.7k);L<24µH → 断开级快闪;test 边界 156 正常/157 偏小 | | V2.41 | 2026-09-04 | **V4.36.24 L<下限 双模式宏 COIL_UNDER_MIN_AS_OPEN**:0=仅黄灯快闪(绿灯/继电器/判定照常,默认);1=视为线圈断开完全状态——ISR 强制 LOOP_OK=0(主循环断开路径+黄灯快闪)、RLY 刷新/保持短路(继电器保持释放、绿灯灭、无 5ms 抖动)、vd1_task 停;新增 coil_monitor_recover 无条件恢复监测(强制期原 coil_monitor 停摆,防换线圈后死锁,f 回窗 5s 清) | | V2.42 | 2026-09-04 | **V4.36.25 电感量三分语义修正**(用户设计拍板):合理窗恢复 18~125kHz(COIL_F_OK_MAX_KHZ=125,V4.36.22 曾误随下限推到 156);新增 COIL_L_MIN_F_KHZ=156(=24µH 下限)——f<18k 或 125k156k(L<24µH)→ coil_fault=2 快闪断开级;coil_monitor_recover 判据同步(回 18~156 解除强制,125~156 由原路径接管为一长一短);test 126→1/156→1/157→2 | +| V2.43 | 2026-09-04 | **V4.36.26 低Q 发散治理剂量加大(方案A)**:REL_ALFA 46→30(τ 50→85ms);带回保持 35(回滞 14 counts 不再压缩);新增 REL_ORIGIN_FREEZE_TICKS=50——释放确认(Car_OFF)后 Origin 均值窗冻结 500ms,切断「释放残余→Origin 学入→释放线漂移」cycle 间正反馈(治本项) | diff --git a/utilities/at32f421_freertos_demo/inc/TaskLoop.h b/utilities/at32f421_freertos_demo/inc/TaskLoop.h index a320499..0910b7a 100644 --- a/utilities/at32f421_freertos_demo/inc/TaskLoop.h +++ b/utilities/at32f421_freertos_demo/inc/TaskLoop.h @@ -36,7 +36,7 @@ *===========================================================================*/ #define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@10ms → τ≈32ms) #define RELEASE_ALFA 21 // 释放慢滤波 α = 21/256 ≈ 0.082 (@10ms → 精确τ≈117ms, V4.04: 对齐 PD132T α79@43.7ms 精确τ≈118ms; 原18→精确τ137ms偏慢) -#define REL_ALFA 46 // V4.36.19: 低Q 释放平滑 α=46/256≈0.18 (@10ms → τ≈50ms): 复刻打印降采样平均效应, 只用于低Q 释放判定抗抖 +#define REL_ALFA 30 // V4.36.19/26: 低Q 释放平滑 α=30/256≈0.117 (@10ms → τ≈85ms, 46→30): 复刻打印降采样平均效应, 只用于低Q 释放判定抗抖 (V4.36.26 加大剂量 50→85ms) #define REL_BAND_LO_MULT 150 // V4.36.19: 低Q 释放带回加宽 % (dlt_rel×1.5: 23→35@SENS3): 释放提前+σ余量, 防边界试探锁死 #define USE_SLOW_RELEASE 0 // 方案A总开关: 1=释放走慢滤波(对齐PD132T) 0=原快滤波释放 #define USE_PLANB_TABLE 1 // 方案B (V4.06): 快滤波释放 + 灵敏度表现场调校 @@ -55,6 +55,7 @@ #define ENTRY_CONFIRM_HI 3 // 高Q(f<=80k) 进入确认样本 #define ENTRY_CONFIRM_MID 4 // 中Q(80~100k) #define ENTRY_CONFIRM_LO 5 // 低Q(f>100k): 抖动大, 多样本防假进入 +#define REL_ORIGIN_FREEZE_TICKS 50 // V4.36.26: 释放后 Origin 均值窗冻结 500ms(@10ms): 切断"释放残余→Origin 学入→释放线漂移" cycle 间正反馈 (低Q 边界试探发散治本项) #define REL_CONFIRM_HI 3 // 高Q 释放确认样本 #define REL_CONFIRM_MID 4 // 中Q #define REL_CONFIRM_LO 5 // 低Q: 释放边界抖动, 多样本防输出抖落 diff --git a/utilities/at32f421_freertos_demo/inc/cmcng.h b/utilities/at32f421_freertos_demo/inc/cmcng.h index 73bc661..ce87af1 100644 --- a/utilities/at32f421_freertos_demo/inc/cmcng.h +++ b/utilities/at32f421_freertos_demo/inc/cmcng.h @@ -14,11 +14,11 @@ #define __CMCNG_H__ #define PRODUCT_MODEL "DLD154" -#define FIRMWARE_VER "4.36.25" // ..޶ (2026-09-03 : СĶֻ REV; MAIN/SUB ɲƷ) +#define FIRMWARE_VER "4.36.26" // ..޶ (2026-09-03 : СĶֻ REV; MAIN/SUB ɲƷ) #define HARDWARE_VER "3.00" #define FIRMWARE_VER_MAIN 4 #define FIRMWARE_VER_SUB 36 -#define FIRMWARE_VER_REV 25 +#define FIRMWARE_VER_REV 26 #define HARDWARE_VER_MAIN 3 #define HARDWARE_VER_SUB 0 diff --git a/utilities/at32f421_freertos_demo/src/TaskLoop.c b/utilities/at32f421_freertos_demo/src/TaskLoop.c index d8176ce..5ed884f 100644 --- a/utilities/at32f421_freertos_demo/src/TaskLoop.c +++ b/utilities/at32f421_freertos_demo/src/TaskLoop.c @@ -44,6 +44,7 @@ uint32_t loop1_CAPVD; uint32_t loop1_CAPVD_slow = 0; // 释放判定慢滤波值 (方案A) uint32_t g_rel_smooth = 0; // V4.36.19: 低Q 释放平滑值 (τ≈50ms, 复刻打印降采样平均效应) uint8_t g_q_lo = 0; // V4.36.19: 低Q 档标志 (空场 f>100kHz, update_q_confirm_need 同步) +uint16_t g_origin_freeze_tick = 0; // V4.36.26: 释放后 Origin 均值窗冻结计数 (500ms, 切断 cycle 正反馈) uint32_t loop1_Origin; uint32_t loop1_ORG_SUM; uint16_t loop1_ORG_CNT; @@ -522,6 +523,7 @@ void INIT_VD(void) g_stab_base = 0; g_rel_smooth = 0; /* V4.36.19: 低Q 释放平滑清零 */ g_q_lo = 0; /* V4.36.19: 低Q 档标志清零 */ + g_origin_freeze_tick = 0; /* V4.36.26: 释放冻结计数清零 */ loop1_CAP_OK = 0; loop1_CAPVD = 0; loop1_CAPVD_slow = 0; // 方案A: 释放慢滤波复位 @@ -1193,6 +1195,10 @@ void vd1_task(void) * 无车状态 *================================================================*/ + /* V4.36.26: 释放后冻结计时 — 挡释放瞬间残余学入 Origin (板缓离仍在感应边缘) */ + if (g_origin_freeze_tick > 0) + g_origin_freeze_tick--; + /*--- 基线跟踪(仿 TLD-110:有车时冻结) * V4.20 修复: 双向对称保护 — 负偏差(负variation)也冻结基线 * 原单边保护只挡 dev>+4×dlt, 负variation铁块(磁导率主导, CAPVD>Origin) @@ -1223,8 +1229,10 @@ void vd1_task(void) } else { g_env_recover_cnt = 0; // 目标进入确认区 → 恢复计时重来 } - update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, - &loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN); + /* V4.36.26: 释放后冻结期内 Origin 均值窗不更新 (切断 cycle 间正反馈) */ + if (g_origin_freeze_tick == 0) + update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, + &loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN); } else if (dev < 0) { g_env_wait_cnt = 0; // V4.24: 目标靠近(车方向) → 等待重来 env_resync_abort(); // V4.24: 学习中被打断 → 重算 @@ -1477,6 +1485,7 @@ void vd1_task(void) loop1_ORG_SUM = 0; Hold_CNT = 0; loop1_cnt_release = 0; + g_origin_freeze_tick = REL_ORIGIN_FREEZE_TICKS; /* V4.36.26: 释放后 Origin 均值窗冻结 */ } } else { if (loop1_cnt_release > 0) loop1_cnt_release = 0;