fix: 防止异常上升污染基线 — Origin跟踪冻结保护
- CAPVD异常上升时暂停基线跟踪 (dev > dlt_ORG×4) - 防止Xn先增大再减小导致Origin被顶到虚高 - 虚高Origin + 有车冻结 → 离开时永远无法释放 - 冻结阈值跟随灵敏度自动缩放
This commit is contained in:
@@ -654,12 +654,24 @@ void vd1_task(void)
|
||||
* 无车状态
|
||||
*================================================================*/
|
||||
|
||||
/*--- 基线跟踪(仿 TLD-110:有车时冻结) ---*/
|
||||
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT,
|
||||
&loop1_Origin, loop1_CAPVD, 100);
|
||||
/*--- 基线跟踪(仿 TLD-110:有车时冻结)
|
||||
* 额外保护: CAPVD 异常上升时暂停跟踪,防止基线被污染
|
||||
* 否则车辆驶入时若 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)) {
|
||||
PRINT("Car_In, Value:%d, CAPVD:%d, Origin:%d, dlt:%d\n",
|
||||
|
||||
Reference in New Issue
Block a user