feat(V4B): V4.36.32 — 释放后分级补偿: 仿 PD132T 慢采样等效
用户对比 PD132T: 采样慢→Origin 学习慢→无释放漂移问题 机理确认: update_moving_average 满窗替换(500样本/5s), 10ms 快采样窗装得快 → 释放后板缓离残余(低 CAPVD)≥5s 会整窗拉低 Origin - 全冻结 1s: REL_ORIGIN_FREEZE_TICKS 50→100 (残余样本完全不进窗) - 降权低速补偿 2s: ORIGIN_LOWLEARN_TICKS=200 + MULT=5 (窗500→2500=25s, 速率1/5 ≈132T等效) - 递减: 冻结结束才递减降权; Car_OFF 两处预置; 均值窗 window 分阶段; INIT 清零 EMA/B3 vac_ref 零影响; 全宏可调 语法0 error, 4测试全绿; spec V2.48 / devlog V2.67
This commit is contained in:
@@ -61,7 +61,10 @@
|
||||
#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_ORIGIN_FREEZE_TICKS 100 // V4.36.26/32: 释放后 Origin 全冻结 1000ms — 残余缓离窗口不入均值窗
|
||||
#define ORIGIN_LOWLEARN_TICKS 200 // V4.36.32: 冻结后降权低速补偿期 2000ms: 残余低值样本权重降 ×1/MULT
|
||||
// 仿 PD132T 慢采样等效(10ms 快采样让 5s 窗装得快, 残余易拉低 Origin; 慢学更稳)
|
||||
#define ORIGIN_LOWLEARN_MULT 5 // V4.36.32: 降权期均值窗放大 500→2500 样本(25s 窗), 学习速率 1/5
|
||||
#define REL_CONFIRM_HI 3 // 高Q 释放确认样本
|
||||
#define REL_CONFIRM_MID 4 // 中Q
|
||||
#define REL_CONFIRM_LO 5 // 低Q: 释放边界抖动, 多样本防输出抖落
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#define __CMCNG_H__
|
||||
|
||||
#define PRODUCT_MODEL "DLD154"
|
||||
#define FIRMWARE_VER "4.36.31" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
|
||||
#define FIRMWARE_VER "4.36.32" // 主.子.修订 (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 31
|
||||
#define FIRMWARE_VER_REV 32
|
||||
#define HARDWARE_VER_MAIN 3
|
||||
#define HARDWARE_VER_SUB 0
|
||||
|
||||
|
||||
@@ -44,7 +44,8 @@ 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 正反馈)
|
||||
uint16_t g_origin_freeze_tick = 0; // V4.36.26/32: 释放后 Origin 全冻结计数 (1s)
|
||||
uint16_t g_origin_lowlearn_tick = 0; // V4.36.32: 冻结后降权低速补偿计数 (2s, 残余低值降权学入)
|
||||
uint16_t g_rel_band_cnt = 0; // V4.36.30: 低Q 环带超时兜底计数 (离开触发深度持续 2.5s → 强制释放)
|
||||
uint32_t g_vacuum_ema = 0; // V4.36.31: 真空 EMA 基线 (B3: 释放/触发参考与锚错 Origin 解耦)
|
||||
uint32_t loop1_Origin;
|
||||
@@ -537,6 +538,7 @@ void INIT_VD(void)
|
||||
g_origin_freeze_tick = 0; /* V4.36.26: 释放冻结计数清零 */
|
||||
g_rel_band_cnt = 0; /* V4.36.30: 环带兜底计数清零 */
|
||||
g_vacuum_ema = 0; /* V4.36.31: 真空 EMA 清零 (判稳后重建) */
|
||||
g_origin_lowlearn_tick = 0; /* V4.36.32: 降权期计数清零 */
|
||||
loop1_CAP_OK = 0;
|
||||
loop1_CAPVD = 0;
|
||||
loop1_CAPVD_slow = 0; // 方案A: 释放慢滤波复位
|
||||
@@ -1212,6 +1214,8 @@ void vd1_task(void)
|
||||
/* V4.36.26: 释放后冻结计时 — 挡释放瞬间残余学入 Origin (板缓离仍在感应边缘) */
|
||||
if (g_origin_freeze_tick > 0)
|
||||
g_origin_freeze_tick--;
|
||||
else if (g_origin_lowlearn_tick > 0) /* V4.36.32: 冻结结束 → 降权期开始递减 */
|
||||
g_origin_lowlearn_tick--;
|
||||
|
||||
/*--- 基线跟踪(仿 TLD-110:有车时冻结)
|
||||
* V4.20 修复: 双向对称保护 — 负偏差(负variation)也冻结基线
|
||||
@@ -1245,8 +1249,11 @@ void vd1_task(void)
|
||||
}
|
||||
/* V4.36.26: 释放后冻结期内 Origin 均值窗不更新 (切断 cycle 间正反馈) */
|
||||
if (g_origin_freeze_tick == 0) {
|
||||
uint16_t _win = WINDOW_ORIGIN;
|
||||
if (g_origin_lowlearn_tick > 0) /* V4.36.32: 降权期放大窗(500→2500=25s) */
|
||||
_win = (uint16_t)((uint32_t)WINDOW_ORIGIN * ORIGIN_LOWLEARN_MULT);
|
||||
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT,
|
||||
&loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN);
|
||||
&loop1_Origin, loop1_CAPVD, _win);
|
||||
/* V4.36.31: 真空 EMA 同步更新 (同条件同守卫; α=128 τ≈1.28s) */
|
||||
if (g_vacuum_ema == 0)
|
||||
g_vacuum_ema = loop1_CAPVD;
|
||||
@@ -1508,6 +1515,7 @@ void vd1_task(void)
|
||||
Hold_CNT = 0;
|
||||
loop1_cnt_release = 0;
|
||||
g_origin_freeze_tick = REL_ORIGIN_FREEZE_TICKS; /* V4.36.26: 释放后 Origin 均值窗冻结 */
|
||||
g_origin_lowlearn_tick = ORIGIN_LOWLEARN_TICKS; /* V4.36.32: 冻结后降权期预置 */
|
||||
}
|
||||
} else {
|
||||
if (loop1_cnt_release > 0) loop1_cnt_release = 0;
|
||||
@@ -1534,6 +1542,7 @@ void vd1_task(void)
|
||||
Hold_CNT = 0;
|
||||
loop1_cnt_release = 0;
|
||||
g_origin_freeze_tick = REL_ORIGIN_FREEZE_TICKS;
|
||||
g_origin_lowlearn_tick = ORIGIN_LOWLEARN_TICKS; /* V4.36.32: 冻结后降权期预置 */
|
||||
}
|
||||
} else {
|
||||
g_rel_band_cnt = 0;
|
||||
|
||||
Reference in New Issue
Block a user