Files
vd-analysis/docs/filter-coefficient-79-vs-64.md
T
wangfq fc243c010c docs(measurement): 测量节拍是区间 —— 周期累积法的窗口量化(用户提出)+ 全仓回灌
- 新文件 docs/measurement-window-quantization.md:窗长 = ⌊BASE/Xn₀⌋·Xn₁ tick(LPCNT 整数除法 + 学习后冻结)
  · 标称 BASE/f_cap(10.92/21.85ms)是【上限】,实际 = 标称 ×(BASE−r₀)/BASE × f₀/f_now
  · 站点偏差:100kHz −0.39%(PD132T 10.88ms / PD136HA 21.76ms)、60kHz −2.34%、带内最差 −6.20%(Xn₀=2049)
  · 深占压(频偏 −5%)窗再 +5.3%;"检测阈值"量级(≤0.46%)可忽略
  ·  Δf/f 口径不受影响:Value/Origin = Xn₁/Xn₀ 精确(余数完全约掉)—— 灵敏度/交付结论全部保持
  · ⚠ 新发现:loop1_LPCNT 为 INT8U(≤255),同族靠 406<Xn<2050 保证 ≤80;
    PD136HA 该窗口已注释 ⇒ Xn<129 时 8 位截断 ⇒ 异常线圈可能报"堵车"而非"故障"(建议恢复或加钳位)
- 新增 tools/window_calc.py(内置六型号参数,实跑验证文档全部数字)
- 回灌:cross-model 总表(新增脚注 + 测频路线说明 + 待补证1条)、PD132T↔PD136HA 对比报告(§0/§3.1/§3.2/§4.3)、
  两份交付对齐报告("测量窗列 = 标称上限" + 区间脚注)、filter-coefficient 专题(M1H 8.19ms 勘误 + τ 复算 + 脚注)、
  README(新增"专题文档"段 + 目录树)
- 表格校验 0 异常
2026-09-11 09:25:49 +08:00

11 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 8.19 ms(⚠ 2026-09-11 勘误) 26.5 ms 32.8 ms
PD132L 27.3 ms 88 ms 109 ms
PD132T 10.88 ms100kHz 站点;标称上限 10.92 35.3 ms 43.5 ms
PD136HA 21.76 ms100kHz 站点;标称上限 21.85 70.5 ms 87.0 ms(实际生效)
DLD154V4B 10 ms 32 ms 40 ms
DLD154Pro 8.74 ms 28 ms 35 ms

表中 T 是"标称上限"2026-09-11 补):实际测量窗 = ⌊BASE/Xn₀⌋·Xn₀/f_cap,按站点线圈频率浮动 0 ~ 6.2%100kHz 站点 0.39%),深占压再 +5%;τ 按同一因子缩放(本表未逐一改写,读数时按百分比折算即可)。公式与数值表见 measurement-window-quantization.md


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 @10.92ms,勘误)
τ(产品线口径) 32 ms 35~44 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 → 精确 τ≈117msV4.03 初版 α18 精确 τ≈137ms 偏慢)
    • 2026-09-11 勘误:原依据「对齐 PD132T α79 @43.7ms ⇒ τ≈118ms」不成立 —— PD132T 捕获时钟实为 3MHz ⇒ 节拍 10.92ms ⇒ 精确 τ(α79) = 29.6ms。即 V4B 慢滤波(117ms)实际比 PD132T 慢约 4×,属「以慢换稳」的实调结果而非对齐结果;现场表现与此相符(V4B 释放更晚、金属板工况复测已通过)⇒ 是否回调由现场复测定(建议先实测 PD132T 侧真实节拍)
  • 离开判定用慢滤波值,进入路径不变(快滤波保触发响应)
  • 开关 USE_SLOW_RELEASE0=回退原快滤波释放)
  • V4.04 进入 snap 修正:进入确认瞬间 loop1_CAPVD_slow = loop1_CAPVD——进入线(档3 0.032%)恒深于离开线(0.021%),snap 后释放条件结构性为假,消除"定在 HR0/2 保持即释放"的进入瞬态假释放窗口(2026-09-01 仿真+现场复核)
  • 调参(2026-09-11 勘误后重算):若现场 PD132T SET_FLT=ON(α64 → 精确 τ≈38.0ms @10.92ms),对齐值改为 RELEASE_ALFA=59(精确 τ≈38ms @10ms);旧稿「调 15」基于 43.7ms 节拍,已作废

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

2026-09-11 追加勘误:上述「α21 对齐 PD132T 118ms」的整体前提已失效 —— PD132T 节拍不是 43.7ms 而是 10.92ms(捕获时钟 3MHz),其精确 τ(α79) 只有 29.6ms。⇒ V4B 现役 α21117ms)比 PD132T 慢约 4×,「慢 16% 导致释放偏高」的推理链需按新节拍重做。固件暂不动:现场(金属板/慢速抬板)复测在 α21 下已通过,且「释放更晚」与观察一致 —— 是否重调请以现场实测 PD132T 节拍为准。

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),别共用进入系数。