fix(DLD110SV4): 基线跟踪双向对称保护同步V4B V4.20 — 负variation铁块防Origin污染锁死
负偏差(dev>0,CAPVD>Origin)只冻结永不超时更新Origin, 对称窗口[-4×dlt,+4×dlt] 与DLD154V4B V4.20修复同构
This commit is contained in:
@@ -609,12 +609,18 @@ void vd1_task(void){
|
||||
*================================================================*/
|
||||
loop1_dlt_ORG = ((uint32_t)loop1_Origin * g_loop_sens_list.sens[g_freq_sens].sens_in) >> 16;
|
||||
{
|
||||
/* V4B V4.20 同步: 双向对称保护 — 负variation(铁块磁导率)也冻结基线
|
||||
* 原单边只挡 dev>+4×dlt, 负variation会把Origin污染抬高 → 离开时假进入 → 锁死不释放
|
||||
* 修复: ① 对称窗口 [-4×dlt, +4×dlt] ② 负偏差只冻结永不超时更新 */
|
||||
int32_t dev = (int32_t)loop1_CAPVD - (int32_t)loop1_Origin;
|
||||
if (dev < (int32_t)(loop1_dlt_ORG * 4)) {
|
||||
int32_t freeze_band = (int32_t)(loop1_dlt_ORG * 4);
|
||||
if (dev < freeze_band && dev > -freeze_band) {
|
||||
/* 对称窗口内 → 正常基线跟踪 */
|
||||
loop1_freeze_cnt = 0;
|
||||
loop1_freeze_ref = 0;
|
||||
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, &loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN);
|
||||
} else {
|
||||
/*--- CAPVD 异常偏高: 暂停跟踪, 冻结超时 + 稳定性双条件 ---*/
|
||||
} else if (dev < 0) {
|
||||
/* 正variation (疑似车) → 冻结, 保留超时兜底更新 */
|
||||
if (loop1_freeze_cnt == 0) {
|
||||
loop1_freeze_ref = loop1_CAPVD;
|
||||
} else {
|
||||
@@ -633,6 +639,15 @@ void vd1_task(void){
|
||||
}
|
||||
loop1_ORG_CNT = 0;
|
||||
loop1_ORG_SUM = 0;
|
||||
} else {
|
||||
/* 负variation (CAPVD高于Origin, 特殊铁块磁导率主导) → 只冻结, 永不更新 Origin */
|
||||
if (loop1_freeze_cnt == 0) {
|
||||
loop1_freeze_ref = loop1_CAPVD;
|
||||
}
|
||||
loop1_freeze_cnt++;
|
||||
if (loop1_freeze_cnt > FREEZE_TIMEOUT) loop1_freeze_cnt = FREEZE_TIMEOUT;
|
||||
loop1_ORG_CNT = 0;
|
||||
loop1_ORG_SUM = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user