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:
@@ -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; // 新测量数据就绪
|
||||
|
||||
Reference in New Issue
Block a user