feat(V4B): V4.36.26 — 低Q 发散治理剂量加大: τ85ms + 释放后 Origin 冻结 500ms

用户拍板方案 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
This commit is contained in:
wangfq
2026-09-07 11:18:15 +08:00
parent e0b86e9f6e
commit 33c268409d
5 changed files with 31 additions and 6 deletions
+14
View File
@@ -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=15035 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.26spec 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 |
+2 -1
View File
@@ -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→156kHzf@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~125kHzCOIL_F_OK_MAX_KHZ=125V4.36.22 曾误随下限推到 156);新增 COIL_L_MIN_F_KHZ=156=24µH 下限)——f<18k 或 125k<f≤156k → coil_fault=1 一长一短(出窗但高于下限);f>156kL<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 间正反馈(治本项) |
@@ -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: 释放边界抖动, 多样本防输出抖落
+2 -2
View File
@@ -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
@@ -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;