feat: 线圈重连后保持检测状态
- 断开时不丢 VD_FLAG,保留断开前的检测状态 - 重连时 CAPVD=0 强制 IIR 从首个有效值重新收敛 - vd1_task 首个样本直接锁定 Value,后续 IIR 正常跟踪 - 重连后: 有车→绿灯亮, 无车→绿灯灭, 自动接续
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user