Files
vd-analysis/docs/filter-coefficient-79-vs-64.md
T
wangfq 67fa78085b docs: filter-coefficient §4.4 同步方案A V4.04修正(RELEASE_ALFA 18→21 + 进入snap) + τ精确口径教训
- §2.2 表格加 21/256 行(精确τ/T=11.68, 偏差+4.3%)
- §4.3 单测输出更新: α21 → τ fast=30ms/slow=120ms, 释放差200ms
- §4.4 方案A V4.03→V4.04: RELEASE_ALFA 18→21(精确τ117ms对齐PD132T 118ms)
  + 进入确认 snap loop1_CAPVD_slow=loop1_CAPVD 消除HR0/2假释放
- 新增τ口径教训: α=79时产品线口径 T×256/α 高估19.6%, 跨代替换对齐必须用精确口径
2026-09-01 09:47:03 +08:00

9.1 KiB
Raw Blame History

滤波系数与时间常数详解(对触发/释放的影响)

日期:2026-08-31(v2,扩展公式推导 + 释放影响 + 方案 A 案例) 依据:M1H/PD132L/PD132T/PD136HA 参考代码 + DLD154V4B/154Pro 现行实现 + 2026-08-31 现场金属板测试 数据:确定性数学计算 + gcc 单测(DLD154V4B/tests/test_release_slow_filter.c),时间常数含产品线口径(256/α)与精确口径(ln)两套


1. 滤波系数是什么

DLD 血统参考代码(M1H → PD132L → PD132T → PD136HA → DLD154V4B)的检测通道 IIR 系数:

#define ALFA_CAP1  79   // 检测通道 IIR —— 增强滤波(响应快)
#define ALFA_CAP2  64   // 检测通道 IIR —— 普通滤波(更平滑)

滤波公式(PD132L 源码确认,Δ×Flt_Reg>>8 双向):

if (Value > CAPVD) CAPVD += (Value - CAPVD) * Flt_Reg >> 8;
else               CAPVD -= (CAPVD - Value) * Flt_Reg >> 8;

即一阶 IIRy[n] = y[n1] + α·(x[n] y[n1]),α = Flt_Reg/256,每个测量节拍执行一次。

各型号实际生效系数

型号 生效系数 说明
M1H (8051, 2008) 恒 79 ALFA_CAP2 定义了但 main 恒用 79DLD 血统源头
PD132T (8051, 2021) 拨码 SET_FLT 切换 79/64 唯一给用户开关的型号
PD136HA (M0+, 2021) 恒 64 INIT_VD 置 79,主循环强制 ALFA_CAP2SET_FLT 分支已注释
DLD154V4B / vd960Loop (M4) 恒 79 外加 5% 斜率限幅 + 进入确认 3 次(M4 优化)
DLD154Pro (RISC-V) 恒 79 @8.74ms τ≈28ms

基线通道 ALFA_ORG1/2=64 与检测通道无关:低频温漂两者都拦不住(0.5Hz 以下增益≈0dB),漂移由基线跟踪(有车冻结 + 冻结超时 + 漂移监测)处理。


2. 时间常数公式详解

2.1 离散一阶 IIR 的阶跃响应

单位阶跃输入(x=1, y[0]=0):

y[n] = 1  (1−α)^n

达到 63.2%11/e 所需样本数即时间常数:

(1−α)^n = e^(1)  →  n = 1/ln(1−α)

2.2 精确口径 vs 产品线口径

口径 公式 说明
精确 τ = T / ln(1−α) 离散系统严格解
产品线 τ = T / α 小 α 近似(ln(1−α) ≈ −α),工程口径

两口径差异(α 越大差越多):

α 精确 τ/T 产品线 τ/T 偏差
79/256 = 0.3086 2.709 3.241 +19.6%
64/256 = 0.2500 3.476 4.000 +15.1%
21/256 = 0.0820 11.68 12.19 +4.3%
18/256 = 0.0703 13.83 14.22 +2.8%
15/256 = 0.0586 16.60 17.07 +2.8%

产品线口径(256/α)简单直观,α 越大偏差越大但工程上无碍(对比用);小系数(如方案 A 的 18)两口径几乎一致。文档统一用产品线口径,标注"τ ≈ T/α"

2.3 各型号节拍下的 τ(产品线口径)

型号 测量节拍 T τ(α=79) τ(α=64)
M1H 32.8 ms 106 ms 131 ms
PD132L 27.3 ms 88 ms 109 ms
PD132T 43.7 ms 142 ms 175 ms
PD136HA 21.8 ms 71 ms 87 ms(实际生效)
DLD154V4B 10 ms 32 ms 40 ms
DLD154Pro 8.74 ms 28 ms 35 ms

3. 对触发(进入)的影响

3.1 阶跃响应越线时间

车辆进入(Origin=131072,中档 dlt=216,信号深 2×dlt=432):

采样点 α=79 输出 α=64 输出
0 131072 131072
1 130939 130964
2 130847 ← 越线 130883
3 130783 130822 ← 越线
  • 越线(进入触发)79 第 2 样本 = 20ms64 第 3 样本 = 30ms,差 10ms
  • 95% 收敛79 = 81ms64 = 104ms,差 23ms
  • 叠加进入确认 3 次(V4B)后:79 ≈ 50ms64 ≈ 60ms——确认机制本身 30ms,把滤波差异摊薄一半

3.2 触发为什么对滤波差异"不敏感"(现场观察)

  • 触发阈值(进入表 {300,60,32,21},档0 = 0.458% Δf/f
  • 金属板接近时信号深入快,滤波滞后折算成高度差小(τ 差 × 手速 ≈ 1~2mm)
  • V4B 进入确认 3 次(+30ms)进一步抵消快滤波的提前量

结论:触发手感对滤波系数不敏感,快/慢滤波在触发路径上几乎无感。


4. 对释放(离开)的影响 (本版新增,方案 A 案例)

4.1 释放是"恢复"过程,对滤波更敏感

释放判定:CAPVD 恢复到 (Origin dlt_leave) 即释放。关键差异:

  1. 释放阈值极浅(离开表 {60,32,21,14} = 进入的 20%,档0 = 0.092% Δf/f
  2. 金属板离开时,CAPVD 从"有车深度"向基线恢复,恢复速度 = f(τ)
  3. 慢滤波(大 τ)→ CAPVD 恢复慢 → 要金属板离得更远(信号恢复更多)才到阈值 → 释放高度高(晚释放)
  4. 快滤波(小 τ)→ CAPVD 几乎实时跟上 → 刚离开就恢复过阈值 → 释放高度低(早释放)

释放阈值浅是放大器CAPVD 只需恢复到基线 0.092% 以内就释放,慢滤波下这段恢复要等很久;同样 τ 差异在触发(深阈值)路径上几乎不可见,在释放(浅阈值)路径上被放大成明显高度差。

4.2 实测案例(2026-08-31PD132T 替换交付)

金属板从上往下接近触发、从下往上离开释放:

V4B(α79 @10ms PD132T(α79/64 @43.7ms
τ 32 ms 142~175 ms
触发高度 一致 ✓ 一致
释放高度 刚离开触发位置即释放 需离得更远才释放

根因:V4B CAPVD 恢复速度是 PD132T 的 4.4~5.5×,释放阈值浅(进入 20%)放大差异。

4.3 数学验证(gcc 单测 test_release_slow_filter.c

模拟:Origin=100000,离开阈值 60→dlt=91,金属板离开信号每 10ms 恢复 +80:

[tau]     fast=30ms  slow=120ms   (α79→τ22ms vs α21→τ117ms, V4.04) ✓
[release] fast=150ms slow=350ms  差 200ms ✓

V4.03 初版 α18 实测 fast=30ms slow=140ms / 差 260ms——α21 收敛到 200ms 更贴近 PD132T(见 §4.4 V4.04 修正)。

4.4 方案 A:释放慢滤波对齐(V4B V4.03 → V4.04 修正)

  • 新增独立慢滤波 loop1_CAPVD_slowRELEASE_ALFA=21 @10ms → 精确 τ≈117ms,对齐 PD132T α79 @43.7ms 精确 τ≈118msV4.03 初版 α18 精确 τ≈137ms 偏慢)
  • 离开判定用慢滤波值,进入路径不变(快滤波保触发响应)
  • 开关 USE_SLOW_RELEASE0=回退原快滤波释放)
  • V4.04 进入 snap 修正:进入确认瞬间 loop1_CAPVD_slow = loop1_CAPVD——进入线(档3 0.032%)恒深于离开线(0.021%),snap 后释放条件结构性为假,消除"定在 HR0/2 保持即释放"的进入瞬态假释放窗口(2026-09-01 仿真+现场复核)
  • 调参:若现场 PD132T SET_FLT=ON(α64 → 精确 τ≈152ms @43.7ms),RELEASE_ALFA15(精确 τ≈166ms)更贴近

τ 口径教训(2026-09-01:跨代替换对齐必须用精确口径 τ = T/ln(1−α)。α=79 时产品线口径 T×256/α 高估 19.6%——方案A 初版按产品线口径把 α18 当"对齐 PD132T 142ms",实际 PD132T 精确只有 118ms、α18 精确 137ms,反而慢 16%,导致释放偏高。α21(精确 117ms)才真正对齐。

4.5 释放/触发灵敏度对照(滤波系数影响全景)

路径 阈值深度 对滤波 τ 的敏感度 表现
触发(进入) 深(0.458% 快/慢滤波触发时机差 ~10ms,手感无感
释放(离开) 浅(0.092% τ 差 4× → 释放高度差明显(260ms 等效)
释放(确认次数) 3×10ms 固定延迟,不随 τ 变化

5. 噪声抑制(64 的卖点,数据很弱)

噪声类型 79 64 64 多压的
白噪声 RMS 7.4 dB 8.5 dB 1.1 dB
50 Hz 工频 @10ms 15.1 dB 16.9 dB 1.8 dB
10 Hz 慢拍 5.6 dB 7.5 dB 1.8 dB
5 Hz 1.5 dB 3.4 dB 1.8 dB
0.5 Hz 以下(温漂) ≈0 dB ≈0 dB 都拦不住

6. 结论与选型指南

  1. 触发路径:无脑 79——触发快 10ms、收敛快 23ms,代价仅少压 ~1dB 噪声;防误触发靠斜率限幅 + 进入确认,不在 α 上抠。
  2. 释放路径:滤波系数决定"释放手感"(本版新增)——释放阈值浅,τ 差异直接放大成释放高度差;跨代替换交付(如 PD132T→V4B)必须评估释放路径的 τ 对齐,否则触发一致、释放手感不一致。
  3. 方案 A 是"释放路径单独调 τ"的范式:进入保 79(快响应),释放独立慢滤波(复刻对手恢复速度),一个开关切换,互不干扰。
  4. PD136HA 恒 64 是保守派:SET_FLT 注释死,主动放弃响应换 1.1dB 平滑,数据看不划算。
  5. 基线通道恒 64 是另一回事:温漂两者都拦不住,靠冻结 + 漂移监测处理。

建议:检测通道进入恒 79;释放路径按交付对手的 τ 独立对齐(RELEASE_ALFA),别共用进入系数。