feat: 线圈重连后保持检测状态

- 断开时不丢 VD_FLAG,保留断开前的检测状态
- 重连时 CAPVD=0 强制 IIR 从首个有效值重新收敛
- vd1_task 首个样本直接锁定 Value,后续 IIR 正常跟踪
- 重连后: 有车→绿灯亮, 无车→绿灯灭, 自动接续
This commit is contained in:
wangfq
2026-06-23 15:45:45 +08:00
parent 69bb28cf58
commit 3b2c4dea87

View File

@@ -596,7 +596,12 @@ void vd1_task(void)
if (loop1_Origin == 0) return; if (loop1_Origin == 0) return;
/*--- 1. IIR 一阶低通滤波 ---*/ /*--- 1. IIR 一阶低通滤波 ---*/
loop1_CAPVD = get_flt_value(loop1_Value, loop1_CAPVD); /* 重连后 CAPVD=0跳过 IIR直接锁定首个有效值 */
if (loop1_CAPVD == 0) {
loop1_CAPVD = loop1_Value;
} else {
loop1_CAPVD = get_flt_value(loop1_Value, loop1_CAPVD);
}
/*--- 2. 稳定期:只跟踪基线,不检测车辆 ---*/ /*--- 2. 稳定期:只跟踪基线,不检测车辆 ---*/
if (!g_loop_stable) { if (!g_loop_stable) {
@@ -692,6 +697,7 @@ void loop_task_function(void *pvParameters)
if (!loop1_LOOP_OK0) { if (!loop1_LOOP_OK0) {
loop1_LOOP_OK0 = 1; loop1_LOOP_OK0 = 1;
g_disconnect_active = 0; // 重连,清除断开标记 g_disconnect_active = 0; // 重连,清除断开标记
loop1_CAPVD = 0; // 强制 IIR 从首个有效值重新收敛
} }
if (loop1_CAP_OK) { if (loop1_CAP_OK) {
@@ -710,7 +716,7 @@ void loop_task_function(void *pvParameters)
} }
} else { } else {
/*--- 线圈断开 ---*/ /*--- 线圈断开 ---*/
loop1_VD_FLAG = 0; /* 注意: 不清除 loop1_VD_FLAG,保留断开前的检测状态 */
RLY1_OFF; RLY1_OFF;
RLY2_OFF; RLY2_OFF;