feat(vd960Loop): 移植 DLD154V4B V2.0-V2.5 M4 优化 — 双路 IIR + 斜率限幅 + 进入确认 + 冻结超时

V2.0: 双路 IIR (慢速 α=18/256 τ=135ms + 快速 α=0.5 τ=28ms)
      斜率限幅 MAX_SLOPE_RATE=5%
      进入确认 ENTRY_CONFIRM=3
      vTaskDelay 50→10ms (tick 加速 5×)

V2.1: CAPVD_fast 初始化修复 (==0 时首次锁定)

V2.2: 稳定期绕过 IIR 和斜率限幅,直接用 Value 收敛基线

V2.3: 基线冻结超时自动恢复 (FREEZE_TIMEOUT)

V2.4: 冻结稳定性检查 (FREEZE_STABILITY_RATE=2% 窗口)

V2.5: 冻结超时 10s (1000 tick @ 10ms)

结构体新增: loop_CAPVD_fast, loop_entry_cnt,
           loop_freeze_cnt, loop_freeze_ref
每通道独立状态,四路并行运行
This commit is contained in:
wangfq
2026-06-29 11:25:44 +08:00
parent 5a12044c1a
commit 0b951768ec
2 changed files with 128 additions and 37 deletions

View File

@@ -18,6 +18,7 @@
/*===========================================================================
* 时序参数(每 tick = 50ms由 TMR15 5ms×10 产生)
* 主循环: vTaskDelay(10ms), M4 优化
*===========================================================================*/
#define HOLD_TIME (5 * 1200) // 有限存在保持(约 5 分钟)
#define LC_HOLD_TIME (4 * 1200) // 安全复位时间(约 4 分钟)
@@ -26,11 +27,21 @@
#define PULSE_DELAY 10 // 脉冲宽度 500ms
/*===========================================================================
* 滤波参数
* 滤波参数 — M4 优化版 (V2.0+)
* tick 提升到 10ms滤波系数同步调整保持等效时间常数
*===========================================================================*/
#define ALFA_CAP1 79 // IIR 指数平滑 α = 79/256 ≈ 0.31
#define ALFA_CAP1 18 // IIR α = 18/256 ≈ 0.07 (@10ms → τ≈135ms, 等效 50ms 的 79/256)
#define ALFA_FAST 128 // 快速 IIR α = 128/256 = 0.5 (@10ms → τ≈28ms, 用于检测)
#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5%
#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值
#define STABLE_SAMPLES 128 // 稳定期样本数
/*===========================================================================
* 基线冻结超时 (V2.3~V2.5)
*===========================================================================*/
#define FREEZE_TIMEOUT 1000 // 冻结超时: ~10s @ 10ms/tick
#define FREEZE_STABILITY_RATE 2 // 稳定性窗口: 参考值的 ±2%
/*===========================================================================
* 离开检测: 1 = 平坦性三条件 (CN200910309382), 0 = cnt_release 防抖
*===========================================================================*/
@@ -91,6 +102,14 @@ typedef struct {
uint16_t loop_dlt_ORG; // 当前灵敏度阈值
uint8_t Flt_Reg; // IIR 滤波系数
/*--- M4 优化 V2.0: 快速 IIR + 进入确认 ---*/
uint32_t loop_CAPVD_fast; // 快速 IIR 值 (α=0.5, τ≈28ms)
uint8_t loop_entry_cnt; // 进入确认计数
/*--- M4 优化 V2.3~2.5: 基线冻结超时 ---*/
uint16_t loop_freeze_cnt; // 冻结持续计数
uint32_t loop_freeze_ref; // 冻结参考值
/*--- 标志位 ---*/
uint8_t loop_INI_LOOP;
uint8_t loop_CAP_OK; // 新测量数据就绪