docs(analysis): 滤波系数与时间常数详解 v2 — 公式推导 + 触发/释放双影响 + 方案A案例

2026-08-31 更新 filter-coefficient-79-vs-64.md:
- §2 时间常数公式详解: 离散 IIR 阶跃响应推导, 精确口径(-T/ln(1-α)) vs
  产品线口径(T/α)对比表(α越大偏差越大, 小系数几乎一致)
- §4 释放影响(新增): 释放=恢复过程, 阈值浅(进入20%)放大τ差异;
  V4B τ32ms vs PD132T τ142~175ms → 释放高度差实测案例
- 数学验证: gcc 单测 fast=150ms/slow=410ms 差260ms
- 方案A范式: 进入保79快响应, 释放独立慢滤波(RELEASE_ALFA=18 τ≈142ms)对齐对手
- §6 结论: 释放路径按交付对手的τ独立对齐, 别共用进入系数

同步: cross-model-comparison 引用标注 v2
This commit is contained in:
wangfq
2026-08-31 18:14:18 +08:00
parent c8ccb37e6a
commit bbb5496860
2 changed files with 134 additions and 39 deletions
+1 -1
View File
@@ -41,7 +41,7 @@
| **基线更新周期** | **3.28 s**100 窗) | **2.73 s** | **4.37 s** | **5.59 s**256 窗) | **5 s**500 窗) | **4.37 s**500 窗) | | **基线更新周期** | **3.28 s**100 窗) | **2.73 s** | **4.37 s** | **5.59 s**256 窗) | **5 s**500 窗) | **4.37 s**500 窗) |
| IIR 时间常数 τ | 106 ms | 88 ms / 109 ms | 142 ms | 87 ms | 32 ms | **28 ms** | | IIR 时间常数 τ | 106 ms | 88 ms / 109 ms | 142 ms | 87 ms | 32 ms | **28 ms** |
> IIR 系数 79/64 的量化对比(α/τ/阶跃响应/噪声抑制/单频衰减/模拟验证)见 [filter-coefficient-79-vs-64.md](filter-coefficient-79-vs-64.md)2026-08-28 新增)。 > IIR 系数 79/64 的量化对比(α/τ/阶跃响应/噪声抑制/单频衰减/模拟验证)见 [filter-coefficient-79-vs-64.md](filter-coefficient-79-vs-64.md)2026-08-28 新增**2026-08-31 v2 扩展:时间常数公式详解 + 释放路径影响 + 方案 A 案例**)。
> ⚠ 时序数值:DLD154Pro 为 60MHz 实测配置(8.74ms 测量节拍);DLD154V4B 为实测/代码确认(10ms tick τ=32ms);其余基于 12MHz 晶振假设推导(测量节拍 = BASE/捕获时钟),**待现场验证**。归一化基数三代三变(32768→131072→524288):V4B 是参考型号 32768 的 4 倍 → 测量窗 2.18ms 快 15×、精度高 4 倍;154Pro 是 V4B 的 4 倍(60MHz 下 8.74ms 软件测量节拍)。 > ⚠ 时序数值:DLD154Pro 为 60MHz 实测配置(8.74ms 测量节拍);DLD154V4B 为实测/代码确认(10ms tick τ=32ms);其余基于 12MHz 晶振假设推导(测量节拍 = BASE/捕获时钟),**待现场验证**。归一化基数三代三变(32768→131072→524288):V4B 是参考型号 32768 的 4 倍 → 测量窗 2.18ms 快 15×、精度高 4 倍;154Pro 是 V4B 的 4 倍(60MHz 下 8.74ms 软件测量节拍)。
+133 -38
View File
@@ -1,17 +1,18 @@
# 滤波系数 79 vs 64 专题分析(ALFA_CAP1 / ALFA_CAP2 # 滤波系数与时间常数详解(对触发/释放的影响
> 日期:2026-08-28 依据:`M1H/PD132L/PD132T/PD136HA` 参考代码 + `DLD154V4B/154Pro` 现行实现 > 日期:2026-08-31(v2,扩展公式推导 + 释放影响 + 方案 A 案例)
> 据:确定性数学计算 + 白噪声模拟(seed=42),**非现场实测**;时间常数含产品线口径(256/α)与精确口径(ln)两套。 > 据:`M1H/PD132L/PD132T/PD136HA` 参考代码 + `DLD154V4B/154Pro` 现行实现 + 2026-08-31 现场金属板测试
> 数据:确定性数学计算 + gcc 单测(`DLD154V4B/tests/test_release_slow_filter.c`),时间常数含产品线口径(256/α)与精确口径(ln)两套
## 1. 背景:79/64 是什么 ---
DLD 血统参考代码(M1H → PD132L → PD132T → PD136HA → DLD154V4B)的 `MAIN.h` 定义四个滤波系数: ## 1. 滤波系数是什么
DLD 血统参考代码(M1H → PD132L → PD132T → PD136HA → DLD154V4B)的检测通道 IIR 系数:
```c ```c
#define ALFA_CAP1 79 // 检测通道 IIR —— 增强滤波(响应快) #define ALFA_CAP1 79 // 检测通道 IIR —— 增强滤波(响应快)
#define ALFA_CAP2 64 // 检测通道 IIR —— 普通滤波(更平滑) #define ALFA_CAP2 64 // 检测通道 IIR —— 普通滤波(更平滑)
#define ALFA_ORG1 64 // 基线通道 IIR
#define ALFA_ORG2 64 // 基线通道 IIR
``` ```
滤波公式(PD132L 源码确认,`Δ×Flt_Reg>>8` 双向): 滤波公式(PD132L 源码确认,`Δ×Flt_Reg>>8` 双向):
@@ -21,42 +22,74 @@ if (Value > CAPVD) CAPVD += (Value - CAPVD) * Flt_Reg >> 8;
else CAPVD -= (CAPVD - Value) * Flt_Reg >> 8; else CAPVD -= (CAPVD - Value) * Flt_Reg >> 8;
``` ```
即一阶 IIR`y = y_prev + α(x y_prev)`**α = Flt_Reg/256**,每测量节拍执行一次。 即一阶 IIR**`y[n] = y[n1] + α·(x[n] y[n1])`,α = Flt_Reg/256**,每测量节拍执行一次。
## 2. 各型号实际生效系数(不是全都用 79 ### 各型号实际生效系数
| 型号 | 生效系数 | 说明 | | 型号 | 生效系数 | 说明 |
|------|---------|------| |------|---------|------|
| M1H (8051, 2008) | **恒 79** | ALFA_CAP2 定义了但 main 恒用 79DLD 血统源头 | | M1H (8051, 2008) | **恒 79** | ALFA_CAP2 定义了但 main 恒用 79DLD 血统源头 |
| PD132T (8051, 2021) | 拨码 SET_FLT 切换 79/64 | 唯一给用户开关的型号 | | PD132T (8051, 2021) | 拨码 SET_FLT 切换 79/64 | 唯一给用户开关的型号 |
| PD136HA (M0+, 2021) | **恒 64** | INIT_VD 置 79主循环 CAP_OK 分支强制 `Flt_Reg = ALFA_CAP2`SET_FLT 分支已注释 | | PD136HA (M0+, 2021) | **恒 64** | INIT_VD 置 79,主循环强制 ALFA_CAP2SET_FLT 分支已注释 |
| DLD154V4B / vd960Loop (M4) | **恒 79** | 外加 5% 斜率限幅 + 进入确认 3 次(M4 优化) | | DLD154V4B / vd960Loop (M4) | **恒 79** | 外加 5% 斜率限幅 + 进入确认 3 次(M4 优化) |
| DLD154Pro (RISC-V) | **恒 79** @8.74ms | τ≈28ms | | DLD154Pro (RISC-V) | **恒 79** @8.74ms | τ≈28ms |
> 基线通道 ALFA_ORG1/2=64 与检测通道无关:低频温漂两者都拦不住(0.5Hz 以下增益≈0dB),漂移由基线跟踪(有车冻结 + 冻结超时 + 漂移监测)处理,不靠检测 IIR > 基线通道 ALFA_ORG1/2=64 与检测通道无关:低频温漂两者都拦不住(0.5Hz 以下增益≈0dB),漂移由基线跟踪(有车冻结 + 冻结超时 + 漂移监测)处理。
## 3. 系数与时间常数 ---
| 指标 | α=79/256 | α=64/256 | ## 2. 时间常数公式详解
|------|---------|---------|
| α | 0.3086 | 0.2500 |
| τ @10ms(产品线口径 256/α) | **32.4 ms** | **40.0 ms** |
| τ @10ms(精确 ln 口径) | 27.1 ms | 34.8 ms |
| τ @8.74ms154Pro 节拍) | 28.3 ms | 35.0 ms |
| 等效记忆窗口 | 3.24 样本 | 4.00 样本 |
各型号节拍下的 τ 对照(产品线口径): ### 2.1 离散一阶 IIR 的阶跃响应
| 型号 | 测量节拍 | τ(79) | τ(64) | 单位阶跃输入(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% |
| 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 | | M1H | 32.8 ms | 106 ms | 131 ms |
| PD132L | 27.3 ms | 88 ms | 109 ms | | PD132L | 27.3 ms | 88 ms | 109 ms |
| PD132T | 43.7 ms | 142 ms | 175 ms | | PD132T | 43.7 ms | **142 ms** | **175 ms** |
| PD136HA | 21.8 ms | 71 ms | **87 ms(实际生效)** | | PD136HA | 21.8 ms | 71 ms | 87 ms(实际生效) |
| DLD154V4B | 10 ms | **32 ms** | 40 ms | | DLD154V4B | 10 ms | **32 ms** | 40 ms |
| DLD154Pro | 8.74 ms | **28 ms** | 35 ms | | DLD154Pro | 8.74 ms | 28 ms | 35 ms |
## 4. 阶跃响应(车辆进入,Origin=131072,中档 dlt=216,信号深 2×dlt=432 ---
## 3. 对触发(进入)的影响
### 3.1 阶跃响应越线时间
车辆进入(Origin=131072,中档 dlt=216,信号深 2×dlt=432):
| 采样点 | α=79 输出 | α=64 输出 | | 采样点 | α=79 输出 | α=64 输出 |
|--------|----------|----------| |--------|----------|----------|
@@ -65,27 +98,89 @@ else CAPVD -= (CAPVD - Value) * Flt_Reg >> 8;
| 2 | **130847 ← 越线** | 130883 | | 2 | **130847 ← 越线** | 130883 |
| 3 | 130783 | **130822 ← 越线** | | 3 | 130783 | **130822 ← 越线** |
- **越线(进入触发)**:79 第 2 样本 = **20ms**64 第 3 样本 = **30ms****差 10ms** - **越线(进入触发)**:79 第 2 样本 = **20ms**64 第 3 样本 = **30ms**,差 10ms
- **95% 收敛**79 = 81ms64 = 104ms**差 23ms** - **95% 收敛**79 = 81ms64 = 104ms,差 23ms
- 叠加进入确认 3 次(V4B)后:79 ≈ 50ms64 ≈ 60ms——确认机制本身 30ms,把滤波差异摊薄一半 - 叠加进入确认 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=140ms (α79→τ32ms vs α18→τ142ms) ✓
[release] fast=150ms slow=410ms 差 260ms ✓
```
### 4.4 方案 A:释放慢滤波对齐(V4B V4.03)
- 新增独立慢滤波 `loop1_CAPVD_slow`**RELEASE_ALFA=18** @10ms → τ≈142ms,复刻 PD132T α79 @43.7ms 恢复速度)
- 离开判定用慢滤波值,进入路径不变(快滤波保触发响应)
- 开关 `USE_SLOW_RELEASE`0=回退原快滤波释放)
- 调参:若现场 PD132T SET_FLT=ON(α64 → τ≈175ms),`RELEASE_ALFA`**15**(τ≈170ms
### 4.5 释放/触发灵敏度对照(滤波系数影响全景)
| 路径 | 阈值深度 | 对滤波 τ 的敏感度 | 表现 |
|------|---------|------------------|------|
| 触发(进入) | 深(0.458%) | **低** | 快/慢滤波触发时机差 ~10ms,手感无感 |
| 释放(离开) | 浅(0.092%) | **高** | τ 差 4× → 释放高度差明显(260ms 等效) |
| 释放(确认次数) | — | 中 | 3×10ms 固定延迟,不随 τ 变化 |
---
## 5. 噪声抑制(64 的卖点,数据很弱) ## 5. 噪声抑制(64 的卖点,数据很弱)
| 噪声类型 | 79 | 64 | 64 多压的 | | 噪声类型 | 79 | 64 | 64 多压的 |
|---------|----|----|----------| |---------|----|----|----------|
| 白噪声 RMS | 7.4 dB | 8.5 dB | **1.1 dB** | | 白噪声 RMS | 7.4 dB | 8.5 dB | 1.1 dB |
| 50 Hz 工频 @10ms | 15.1 dB | 16.9 dB | 1.8 dB | | 50 Hz 工频 @10ms | 15.1 dB | 16.9 dB | 1.8 dB |
| 10 Hz 慢拍(注入锁定前兆) | 5.6 dB | 7.5 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 | | 5 Hz | 1.5 dB | 3.4 dB | 1.8 dB |
| 0.5 Hz 以下(温漂) | ≈0 dB | ≈0 dB | **都拦不住** | | 0.5 Hz 以下(温漂) | ≈0 dB | ≈0 dB | 都拦不住 |
模拟验证:输入白噪声 σ=20 计数值(≈中档阈值 9%)跑 10000 点,79 输出最大偏差 27.8、64 输出 27.5——**工程上无差别**。 ---
## 6. 结论 ## 6. 结论与选型指南
1. **79 是白赚的**触发快 10ms、收敛快 23ms,代价仅少压 ~1dB 噪声。单极点 IIR 在 α=0.25~0.31 区间是"响应优先"区间,往下压收益递减(79→50 才明显,但 τ 已到 51ms) 1. **触发路径:无脑 79**——触发快 10ms、收敛快 23ms,代价仅少压 ~1dB 噪声;防误触发靠斜率限幅 + 进入确认,不在 α 上抠
2. **PD136HA 恒 64 是保守派**:SET_FLT 注释死,主动放弃响应换 1.1dB 平滑,数据看**不划算** 2. **释放路径:滤波系数决定"释放手感"**(本版新增)——释放阈值浅,τ 差异直接放大成释放高度差;跨代替换交付(如 PD132T→V4B)**必须评估释放路径的 τ 对齐**,否则触发一致、释放手感不一致
3. **防误触发不靠滤波系数**:V4B 的做法正确——79 保响应,**斜率限幅(单次 >5% 截断)打 EMI 尖峰 + 进入确认 3 次打单次噪声**,算法层拦截比调 α 有效两个数量级 3. **方案 A 是"释放路径单独调 τ"的范式**:进入保 79(快响应),释放独立慢滤波(复刻对手恢复速度),一个开关切换,互不干扰
4. **基线通道恒 64 是另一回事**温漂两者都拦不住,靠冻结 + 漂移监测(见 `variation-physics-and-drift-health.md` 相关分析) 4. **PD136HA 恒 64 是保守派**SET_FLT 注释死,主动放弃响应换 1.1dB 平滑,数据看不划算
5. **基线通道恒 64 是另一回事**:温漂两者都拦不住,靠冻结 + 漂移监测处理。
**建议:检测通道无脑 79要防误触发加斜率限幅 + 进入确认,别在 α 上抠 1dB** **建议:检测通道进入恒 79释放路径按交付对手的 τ 独立对齐(RELEASE_ALFA),别共用进入系数**