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
@@ -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;