fix: 稳定期内绕过斜率限幅和 IIR,直接用 Value 建立基线

根因: 首测 CAPVD=177406 是瞬态高值 (~38% 偏高),
5% 斜率限幅让 CAPVD 在 128 tick 稳定期内无法充分收敛,
100 窗口滑动平均被前半段高值污染:
  Origin=149755 vs 真实值~128688, 差值 21067 >> dlt_ORG=82

修复: 稳定期内直接将 CAPVD/CAPVD_fast 设为 raw Value,
不做斜率限幅和 IIR, 使基线 100 窗口快速收敛到真实值。
稳定期结束后恢复正常 IIR+斜率限幅用于检测。
This commit is contained in:
wangfq
2026-06-26 16:23:47 +08:00
parent e0e79db40e
commit 16090a48fa

View File

@@ -673,12 +673,16 @@ void vd1_task(void)
/*--- 2. 稳定期:只跟踪基线,不检测车辆 ---*/
if (!g_loop_stable) {
/* 稳定期内不做斜率限幅和 IIR — 直接用 Value 快速收敛到真实基线 */
loop1_CAPVD = loop1_Value;
loop1_CAPVD_fast = loop1_Value;
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT,
&loop1_Origin, loop1_CAPVD, 100);
_stable_cnt++;
if (_stable_cnt >= STABLE_SAMPLES) {
g_loop_stable = 1;
PRINT("Loop stable, Origin:%d\n", loop1_Origin);
PRINT("Loop stable, Origin:%d\\n", loop1_Origin);
}
return;
}