fix: 防止异常上升污染基线 — Origin跟踪冻结保护

- CAPVD异常上升时暂停基线跟踪 (dev > dlt_ORG×4)
- 防止Xn先增大再减小导致Origin被顶到虚高
- 虚高Origin + 有车冻结 → 离开时永远无法释放
- 冻结阈值跟随灵敏度自动缩放
This commit is contained in:
wangfq
2026-06-23 18:10:29 +08:00
parent 86d09eb953
commit a83674f77b

View File

@@ -654,12 +654,24 @@ void vd1_task(void)
* 无车状态 * 无车状态
*================================================================*/ *================================================================*/
/*--- 基线跟踪(仿 TLD-110有车时冻结 ---*/ /*--- 基线跟踪(仿 TLD-110有车时冻结
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, * 额外保护: CAPVD 异常上升时暂停跟踪,防止基线被污染
&loop1_Origin, loop1_CAPVD, 100); * 否则车辆驶入时若 Xn 先增大Origin 被顶上去后无法释放 ---*/
loop1_dlt_ORG = ((uint32_t)loop1_Origin * SensTable[loop1_SensLevel]) >> 16;
{
int32_t dev = (int32_t)loop1_CAPVD - (int32_t)loop1_Origin;
if (dev < (int32_t)(loop1_dlt_ORG * 4)) {
/* CAPVD 未显著高于基线 → 安全跟踪 */
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT,
&loop1_Origin, loop1_CAPVD, 100);
} else {
/* CAPVD 异常偏高 → 冻结跟踪,重置累计 */
loop1_ORG_CNT = 0;
loop1_ORG_SUM = 0;
}
}
/*--- 进入检测 ---*/ /*--- 进入检测 ---*/
loop1_dlt_ORG = ((uint32_t)loop1_Origin * SensTable[loop1_SensLevel]) >> 16;
if (loop1_CAPVD < (loop1_Origin - loop1_dlt_ORG)) { if (loop1_CAPVD < (loop1_Origin - loop1_dlt_ORG)) {
PRINT("Car_In, Value:%d, CAPVD:%d, Origin:%d, dlt:%d\n", PRINT("Car_In, Value:%d, CAPVD:%d, Origin:%d, dlt:%d\n",