sync(DLD154V4B): 快照 V2.8 → V4.36.40 (2026-09-09)

analysis.md 全面刷新:
- 平台: AT32F421+FreeRTOS, IWDT 1.64s, 版本体系 4.36.x REV
- 测频: 120MHz tick 口径修正 (f=240000*LPCNT/CAPVD), 测量窗 1.09ms (旧稿 2.18ms 误)
- 滤波: ALFA_CAP1=79 + 斜率限幅 + 进入/释放确认按Q档(3/4/5) + 低Q 释放平滑 REL_ALFA=30
- 基线: 判稳 0.1%/2窗/5s兜底 + 就绪巩固期 Q 分级 5/7/10s + 环境重校准 2s/7s/2s
  + 释放后冻结1s+降权2s*1/5 + 真空EMA(min(Origin,EMA), 门控>1dlt) + cast bug 治本
- 判据: 低Q 环带超时 2.5s + 带回×1.8 + 灵敏度表方案B {337,71,38,25}/{51,27,18,12}
- 电感四分: 18~125k正常 / 出窗一长一短 / 156~171k可用级一长两短恒判车
  / >171k短路级快闪 + COIL_UNDER_MIN_AS_OPEN 默认1等同断开
- 新增 §8 V4.30~V4.36 演进 (低Q治理链6机理 + 电感分级拍板链)
- 硬件: 产品口径 C_eff=43nF (三极管库存板), 0Ω 板 68 仅实验

配套: README 版本索引, cross-model-comparison 参数行 (测量窗/基线/灵敏度表/确认数)
hardware-loop-frontend 2.18ms→1.09ms 勘误, delivery-alignment 加现状更新注
This commit is contained in:
wangfq
2026-09-09 13:35:48 +08:00
parent 4b70958796
commit 6c27acb7c0
5 changed files with 167 additions and 73 deletions
+1 -1
View File
@@ -11,7 +11,7 @@
| M1H | STC12C5202 (8051) | V1.00 (2008-12) | [models/M1H/analysis.md](models/M1H/analysis.md) | `reference/M1H code` |
| TLD-110 | P87LPC762 (8051, 汇编) | V2.33 (2006-07) | [models/TLD-110/analysis.md](models/TLD-110/analysis.md) | `reference/TLD-110(410) code`(⚠ 已移出对比总表) |
| PD136HA | HC32F005 (M0+) | V3.14 (2021-11) | [models/PD136HA/analysis.md](models/PD136HA/analysis.md) | `reference/PD136HA_V3.14-20211116`PD132L 同源移植版) |
| DLD154V4B | AT32F421 (M4, FreeRTOS) | V2.8 (2026) | [models/DLD154V4B/analysis.md](models/DLD154V4B/analysis.md) | `vd_detector/DLD154V4B`(自研) |
| DLD154V4B | AT32F421 (M4, FreeRTOS) | **V4.36.40** (2026) | [models/DLD154V4B/analysis.md](models/DLD154V4B/analysis.md) | `vd_detector/DLD154V4B`(自研) |
| DLD154Pro | CH591R/CH592 (RISC-V, BLE) | V3.05 (2026) | [models/DLD154Pro/analysis.md](models/DLD154Pro/analysis.md) | `vd_detector/DLD154Pro`(自研,V4B 移植) |
## 目录结构
+10 -10
View File
@@ -9,7 +9,7 @@
| PD132L | STM8S003F3 | V1.09 | [models/PD132L/analysis.md](../models/PD132L/analysis.md) |
| PD132T | MA801AS (8051) | V3.01 | [models/PD132T/analysis.md](../models/PD132T/analysis.md) |
| M1H | STC12C5202 (8051) | V1.00 | [models/M1H/analysis.md](../models/M1H/analysis.md) |
| DLD154V4B | AT32F421 (M4) | V2.8 | [models/DLD154V4B/analysis.md](../models/DLD154V4B/analysis.md) |
| DLD154V4B | AT32F421 (M4) | **V4.36.40** | [models/DLD154V4B/analysis.md](../models/DLD154V4B/analysis.md) |
| DLD154Pro | CH591R/CH592 (RISC-V) | V3.05 | [models/DLD154Pro/analysis.md](../models/DLD154Pro/analysis.md) |
| PD136HA | HC32F005 (M0+) | V3.14 | [models/PD136HA/analysis.md](../models/PD136HA/analysis.md)PD132L 同源移植版) |
@@ -25,15 +25,15 @@
| 通道 | 1 | 1 | 1 | 1 | 1 | 1 |
| 测频方式 | PCA 周期捕获 | TIM1 周期捕获 | PCA 周期捕获 | ADTIM4 周期捕获 | TIM3 周期捕获 | TMR0 下降沿捕获 |
| 归一化基数 | 32768 | 32768 | 32768 | 32768 | 131072 (2^17) | **524288 (2^19)** |
| 测量窗 | 32.8ms | 27.3ms | 43.7ms | 21.8ms | 2.18ms(硬)/10ms(软) | **8.74ms** |
| 测量窗 | 32.8ms | 27.3ms | 43.7ms | 21.8ms | **1.09ms(硬)**/10ms(软) | **8.74ms** |
| IIR 系数 | 79(固定) | 79/64 | 79/64 | 79/64(实际 64 | 79 + 斜率限幅 5% | 79 + 斜率限幅 5% |
| 基线 | 100 平均(有车也跟踪) | 100 平均(有车冻结) | 100 平均(有车冻结) | 256 平均(有车冻结) | 500 平均+冻结超时 10s | **500 平均+冻结超时/稳定性双条件** |
| 灵敏度表 | {216,108,36,10} | {300,60,32,21} | {300,60,32,21} | {162,81,54,28} | {300,60,32,21} | {108,54,28,14} |
| 离开表 | 同表 | {60,32,21,14} | {60,32,21,14} | {81,54,32,18} | {60,32,21,14}V2.11 分档对齐 PD132T SENUP 标贴 OFF | {81,32,16,12} |
| 基线 | 100 平均(有车也跟踪) | 100 平均(有车冻结) | 100 平均(有车冻结) | 256 平均(有车冻结) | 500 平均+冻结超时/环境重校准/释放后补偿 | **500 平均+冻结超时/稳定性双条件** |
| 灵敏度表 | {216,108,36,10} | {300,60,32,21} | {300,60,32,21} | {162,81,54,28} | **{337,71,38,25}**(方案BV4.06 起) | {108,54,28,14} |
| 离开表 | 同表 | {60,32,21,14} | {60,32,21,14} | {81,54,32,18} | **{51,27,18,12}**(方案B | {81,32,16,12} |
| 阈值换算 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 |
| 档位 Δf/f | 0.33%~0.015% | **0.46%~0.032%** | **0.46%~0.032%** | 0.247%~0.043% | **0.46%~0.032%**V2.11 进入/离开全档与 PD132T 完全一致 | **0.165%~0.021%** |
| 进入确认 | 无 | 无 | 无 | 无(单次,去抖已注释) | 3 次 | **3 次** |
| 离开判定 | 简单阈值 | 简单阈值 | 简单阈值 | 简单阈值+脉冲延迟 | **简单滞回 3 次防抖(平坦性 #if 禁用V2.9 起)** | **简单滞回 3 次防抖**(平坦性 #if 禁用) |
| 档位 Δf/f | 0.33%~0.015% | **0.46%~0.032%** | **0.46%~0.032%** | 0.247%~0.043% | **0.514%~0.038%**方案BPD132T 对齐表 0.46%~0.032% 为备选 | **0.165%~0.021%** |
| 进入确认 | 无 | 无 | 无 | 无(单次,去抖已注释) | **3~5 次(按Q档)** | **3 次** |
| 离开判定 | 简单阈值 | 简单阈值 | 简单阈值 | 简单阈值+脉冲延迟 | **简单滞回 3~5 次防抖 + 低Q 环带超时 2.5s**(平坦性 #if 禁用 | **简单滞回 3 次防抖**(平坦性 #if 禁用) |
| 灵敏度表可配 | 编译期 | 编译期 | 编译期 | 编译期 | 编译期 | **运行时可配(BLE 写 Flash** |
| 时序 tick | 50ms | 50ms | 50ms | 5ms?×10=50ms | 检测 10ms + 时序 50ms | **检测 8.74ms + 时序 5ms/50ms** |
| 看门狗 | WDT_CONTR | IWDG+WWDG | WDTCR | WDT 820ms | **IWDT ~1.64s**V2.10 双保险喂狗) | **WWDG 558ms** |
@@ -43,9 +43,9 @@
> 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 倍 → 测量窗 1.09ms 快 30×(V4.27 修正 120MHz tick 口径)、精度高 4 倍;154Pro 是 V4B 的 4 倍(60MHz 下 8.74ms 软件测量节拍)。
> ⚠ 灵敏度表**数值不可跨型号直接比较**:各型号归一化基数/测量方式不同(32768 基数 ×65536 比例)。统一换算成 Δf/f 后:M1H 最灵敏档 0.015%PD132 0.032%V4B 0.032%154Pro 0.021%(⚠ 2026-08-28 修正:PD132 曾误用基数 32768 当分母算成 0.064%,正确分母是代码 `>>16` 的 65536V4B 最高档 V2.11 起 20→21 对应 0.031%→0.032%)。
> ⚠ 灵敏度表**数值不可跨型号直接比较**:各型号归一化基数/测量方式不同(32768 基数 ×65536 比例)。统一换算成 Δf/f 后:M1H 最灵敏档 0.015%PD132 0.032%**V4B 0.038%(方案BV4.06 起;PD132T 对齐表 0.032% 保留为备选 `USE_PLANB_TABLE=0`**154Pro 0.021%(⚠ 2026-08-28 修正:PD132 曾误用基数 32768 当分母算成 0.064%,正确分母是代码 `>>16` 的 65536)。
## 测频路线(周期累积法为统一范式)
+3 -3
View File
@@ -36,7 +36,7 @@ DLD154V4B:
| 偏置电阻 | 6.8K×4 + 10K×2 + 100K | 6.8K×4 + 8K/3.9K |
| **分频/整形** | **CD4060 (U1),施密特输入** | **无(直连)** |
| 捕获极性 | PCA CEX1,上升下降双沿 | TIM3_CH2,上升沿 |
| 测量窗口 | 43.7ms | 2.18msLPCNT 自适应 |
| 测量窗口 | 43.7ms | **1.09ms**LPCNT 自适应;V4.27 修正 120MHz tick 口径,旧稿误作 2.18ms |
| 保护 | P6KE12CA / SMBJ28CA TVS | D7 等 |
> **2026-09-01 用户勘误(两次)**:线圈振荡部分除谐振电容档位外**完全一致**——三极管同为 9015(×2),偏置拓扑同构。即:原始振荡信号质量两机无差异,全部测量差异来自**信号链后级**(CD4060 整形/分频 vs 直连)与**谐振电容档位数**(PD132T **四级可调频率** / V4B **两级可调频率** → 可匹配的线圈电感范围不同,PD132T 覆盖更宽的频率档位,V4B 精简为两级)。
@@ -47,8 +47,8 @@ DLD154V4B:
|---|---|---|
| Xn 单位 | 1 个 Xn = **128~256 个原始周期平均** | 1 个 Xn = **1 个原始周期** |
| 边沿质量 | CD4060 施密特整形 → CMOS 满摆幅陡峭方波 | 三极管振荡模拟波形直接过零,边沿抖动大 |
| 平均层级 | 两级(分频平均 + 长窗 43.7ms 平均) | 单级(窗口 2.18ms 平均)+ IIR 后级 |
| 等效平均样本 | ~4000~8000 个原始周期 | 窗口级 218 周期;慢滤波 IIR(τ117ms) 后 ~11000 周期 |
| 平均层级 | 两级(分频平均 + 长窗 43.7ms 平均) | 单级(窗口 1.09ms 平均)+ IIR 后级 |
| 等效平均样本 | ~4000~8000 个原始周期 | 窗口级 ~109 周期(@100kHz;慢滤波 IIR(τ117ms) 后 ~11000 周期 |
**关键点**:V4B 虽然直连噪声大,但释放判定用慢滤波(τ=117ms ≈ 54 窗口),IIR 把等效平均样本补回与 PD132T 同量级——所以释放路径的**稳态噪声**两者可比。
+4
View File
@@ -3,6 +3,10 @@
> 日期:2026-08-28 依据:PD132T V3.01 源码(`reference/PD132T_V3.01-20210623/`+ DLD154V4B V2.11 源码 + 两型号 analysis.md
> 场景:客户现场在用 PD132T8051, 2021),替换为 DLD154V4BAT32F421 M4, 2026
> 目标:① 平滑交付——灵敏度表现一致、触发/释放手感无感;② 体现 V4B 更先进(抗干扰/稳定/好维护)
>
> ⚠ **现状更新(2026-09-09,固件 V4.36.40**:本文记录的 V2.11 对齐表 `{300,60,32,21}/{60,32,21,14}` 仍是**备选**`USE_PLANB_TABLE=0`);
> 实际编译已切到**方案B 现场调校表** `{337,71,38,25}/{51,27,18,12}`V4.06 起,Δf/f 0.514%~0.038%)。
> 交付口径应以现行固件为准——对齐结论(档位方向/换算口径/手感)不变,仅数值不同。
## 结论摘要
+149 -59
View File
@@ -1,9 +1,9 @@
# DLD154V4B 车检器分析
> 型号: DLD154V4B | 固件: **V4.29**2026-09-03 刷新;此前快照 V2.8| 平台: **AT32F421F8P7**Cortex-M4, 120MHz, FreeRTOS
> 源码: `vd_detector/DLD154V4B/utilities/at32f421_freertos_demo/`TaskLoop.c **1339 行** + main.c 303 行)
> 型号: DLD154V4B | 固件: **V4.36.40**2026-09-09 刷新;此前快照 V4.29 / V2.8| 平台: **AT32F421F8P7**Cortex-M4, 120MHz, FreeRTOS
> 源码: `vd_detector/DLD154V4B/utilities/at32f421_freertos_demo/`TaskLoop.c **1797 行** + main.c 304 行)
> 原理图: `models/DLD154V4B/DLD154V4_Ver4.01-20251021_Logic.pdf`(本仓附件,2026-09-03 由 Ver3.00 更新)
> 硬件变更: 见文末(2026-09-03R19 拆 + R27 补焊 0Ω → 拨码旁路三极管直控第二颗 33nF
> 硬件变更: 见文末(2026-09-03R19 拆 + R27 补焊 0Ω 的实验板;**产品仍用三极管库存板 R19 在 / R27 空,C_eff=43nF**
> 硬件前端对比: `docs/hardware-loop-frontend-pd132t-vs-v4b.md`(直连 vs PD132T CD4060 分频)
> **血缘:M1H 的现代实现**——灵敏度表/映射/IIR 系数继承,M4 优化(快 tick/确认/斜率限幅)是 8051 时代做不到的增量。
@@ -14,12 +14,14 @@
| MCU | AT32F421F8P7Cortex-M4 @120MHz, 64KB Flash |
| RTOS | FreeRTOSloop_task_function 主任务) |
| 工具链 | Keil MDK / AT32 标准库 |
| 看门狗 | **IWDT ≈1.64s**V2.10 新增,TMR15 ISR + 主循环 poll_wdg 双保险喂狗) |
| 版本体系 | **4.36.x REV 修订号制**V2.35 引入):MAIN/SUB 产品定,小功能/参数/文档只 bump REV;启动打印 `fw:4.36.x main=4 sub=36 rev=x hw:3.00` |
| 看门狗 | **IWDT ≈1.64s**V2.10 新增,TMR15 ISR 5ms 递增 + 主循环 poll_wdg 500ms 双保险喂狗) |
| 通信 | 无 RS485TTL 调试口 9600 8N1DBG 周期 2s + EVT 事件) |
固件演进2026-09-03 一日内)V4.23 判稳/呼吸 → V4.24 环境重校准 → V4.25 黄灯预判锁存 →
V4.26 电感量监视+补偿提速 → V4.27 频率测量 4 倍修正 → V4.28/29 C_eff 标定43→68)。
详细见 DLD154V4B 仓 `docs/devlog.md`
固件演进:V4.23 判稳/呼吸 → V4.24 环境重校准 → V4.25 黄灯预判锁存 →
V4.26 电感量监视+补偿提速 → V4.27 频率测量 4 倍修正 → V4.28/29 C_eff 标定
**V4.30~V4.36 低Q 释放/卡死治理链 + 电感分级产品化语义**(详见 §8
详细见 DLD154V4B 仓 `docs/devlog.md`V2.77)。
## 2. 硬件资源
@@ -30,93 +32,149 @@ V4.26 电感量监视+补偿提速 → V4.27 频率测量 4 倍修正 → V4.28/
| PA2 | SW3 存在/脉冲模式 |
| PA3 | SW4 离开延时开关 |
| PA4 | SW5 安全复位 |
| PA5 / PA6 | RLY2 辅助 / RLY1 继电器 |
| PA5 / PA6 | **RLY2 默认输出(绿灯镜像此路)** / RLY1 拨码可选脉冲继电器 |
| PA9 / PA10 / PB1 | LEDA 绿 / LEDC 黄 / 红灯(TMR14 PWM 呼吸) |
振荡回路(原理图 Ver4.01):固定 33nF + 拨码经 **R27 0Ω**2026-09-03 前经三极管电路/R19
振荡回路(原理图 Ver4.01):固定 33nF + 拨码经 **R27 0Ω**实验板)/ **三极管电路 R19**(产品库存板
接通第二颗 33nF → 两级频率(名义 66nF 低频 / 33nF 高频)。⚠ **固件无法读档位**(拨码不引 IO)。
**产品电容口径(重要)**:产品 = 三极管库存板(R19 在 / R27 空),低频档实测 **C_eff≈43nF**41.3~45.5V4.34 基准);
0Ω 实验板 C_eff≈68(仅机理验证,不用于产品计算)。高频档(33nF)实测 C_eff≈34.4。
## 3. 检测算法
### 3.1 频率测量
- TIM3_CH2 输入捕获(PA7):计数器 tick = **120MHz**sclkAPB1÷1),通道输入 **DIV_2**(每 2 信号沿捕获 1 次)
- ⚠ V4.27 修正(2026-09-03):旧实现 calc_freq 按 60MHz 假设且未补偿 DIV_2 → f 打印/估算低 4 倍(示波器 30.23kHz vs 打印 7kHz);修正后 **f_kHz = 240000×LPCNT/CAPVD(等效 240MHz/Xn**
- ⚠ V4.27 修正(2026-09-03):旧实现 calc_freq 按 60MHz 假设且未补偿 DIV_2 → f 打印/估算低 4 倍(示波器 30.23kHz vs 打印 7kHz);修正后 **f_kHz = 240000×LPCNT/CAPVD(等效 240000/Xn**
- 归一化:`LPCNT = MEASUREMENT_BASE(131072) / Xn`**BASE=2^17**),累加 LPCNT 个周期得 Value ≈ 131072
- 测量窗 ≈ 131072/(120MHz tick) = **1.09 ms**Value=Σ Xn 计数,1 计数=1/120M s
-**强制断开期(fault3Xn/Value 仍由 TMR3 捕获 ISR 实时更新**,而 Origin 只在 vd1_task 更新(停摆即冻结)——V4.36.40 热切换修复的关键依据
### 3.2 滤波(M4 优化,区别于参考型号)
- IIR`ALFA_CAP1=79` @10ms**τ≈32ms**
- **斜率限幅**:单次变化 >5% 截断(拒绝 EMI/闪电尖峰)
- **进入确认**:连续 3 次低于阈值才判有车(ENTRY_CONFIRM=3
- **进入/释放确认按 Q 档**V4.36.8Q∝1/f 代理):进入 ENTRY_CONFIRM 高Q(f≤80k)=3 / 中Q(80~100k)=4 / 低Q(f>100k)=5
释放 REL_CONFIRM 高3 / 中4 / 低5(低Q 抖动大,多样本防假进入/输出抖落)
- **低Q 释放平滑**V4.36.19/26):`REL_ALFA=30` @10ms → τ≈85ms,独立 IIR 仅用于低Q 释放判定(复刻打印降采样平均效应抗抖)
- 释放慢滤波 `RELEASE_ALFA=21` @10ms → τ≈117ms(对齐 PD132T α79@43.7ms
### 3.3 基线
- 正常:`WINDOW_ORIGIN=500` 滑动平均(500×10ms = **5s**),有车冻结
- 上电判稳(V4.23 重写vd960Loop V1.03 同构):窗口 100 样本≈1s,窗口均值漂移 ≤ **0.1%**STABLE_ORIGIN_PPT=1)连续 2 窗 → `settle_cnt++`判稳 =(≥128 样本 && ≥2 窗)|| ≥500 样本兜底;退出/重新初始化清零 → **杜绝二次稳定期 1 样本瞬判**
- 上电判稳(V4.23 重写):窗口 100 样本≈1s,窗口均值漂移 ≤ **0.1%**STABLE_ORIGIN_PPT=1)连续 2 窗 → `settle_cnt++`
判稳 =(≥128 样本 && ≥2 窗)|| ≥500 样本兜底(STABLE_MAX_SAMPLES=500, 5s);退出/重新初始化清零 → **杜绝二次稳定期 1 样本瞬判**
- **就绪巩固期 Q 分级**V4.36.36):判稳完成(Loop stable)后绿灯按 Q 档继续慢闪——
高Q **5s**READY_HOLD_HI=1000/ 中Q **7s**1400/ 低Q **10s**2000),5ms tick 递减。
目的:低Q 线圈上电自检完(绿灯灭)立刻压板易绿灯常亮,巩固期内 Origin/EMA/滤波真实多收敛 5~10s
- **冻结超时**`FREEZE_TIMEOUT=1000`(10s)+ ±2% 稳定性窗口,持续偏高且稳定才强制更新基线
- **环境重校准(V4.24,受控替换)**:`dev > +4×dlt` 高位判定为疑似环境变化后:
1. 冻结等待 `ENV_RESYNC_WAIT=1000`**10s**,V4.26 自 60s 缩短;回摆清零)
2. 学习窗 200tick2s)空闲均值 ×3 + settle 语义(漂移 ≤0.1%),预算 `ENV_LEARN_MAX_TICKS=3000`30s)放弃
3. 空闲原子替换 Origin`env_resync_apply`+ 清冻结三件套
- **黄灯预判锁存(V4.25)**:高位连续 `ENV_WARN_WAIT=500`5s)→ `g_env_warn` 锁存常亮;回摆/目标靠近**不灭**;环境回对称窗且 `dev > -dlt`(真空闲)连续 `ENV_RECOVER_WAIT=500`5s才解除
- 时序参考:A 拿走 → 5s 黄灯预判 → 10s 学习 → ~16s 原子替换 → 空闲 5s 确认灭 → ~21s 恢复(V4.26 提速后)
- **环境重校准(V4.24/31,受控替换)**`dev > +4×dlt` 高位判定为疑似环境变化后:
1. 黄灯预判锁存 `ENV_WARN_WAIT=200`**2s**)→ 常亮;回摆/目标靠近**不灭**
2. 冻结等待 `ENV_RESYNC_WAIT=700`**7s**V4.31 拍板 预判2s+补偿7s+恢复2s;回摆清零)
3. 学习窗 200tick2s)空闲均值 ×3 + settle 语义(漂移 ≤0.1%),预算 `ENV_LEARN_MAX_TICKS=3000`30s)放弃
4. 空闲原子替换 Origin`env_resync_apply`+ 清冻结三件套;`ENV_RECOVER_WAIT=200`2s空闲确认后解除预判
- **释放后 Origin 分级补偿**V4.36.26/32,仿 PD132T 慢采样等效):
释放后**全冻结 1s**`REL_ORIGIN_FREEZE_TICKS=100`)→ 残余缓离窗口不入均值窗;
之后 **降权 2s ×1/5**`ORIGIN_LOWLEARN_TICKS=200`,均值窗 500→2500 样本 / 25s 窗,`ORIGIN_LOWLEARN_MULT=5`
——切断"残余低值样本拉低 Origin → 释放线下降 → cycle 正反馈"
- **真空 EMA 重锚 B3**V4.36.31/33/35):`VACUUM_EMA_ALFA=128`(τ≈1.28s)跟踪无车真空;
判定参考 `vac_ref = min(Origin, EMA)`,但**仅当 OriginEMA > 1×dlt**`VAC_REF_DELTA_DLT=1`,真锚错)才用 EMA 锚低
——防金属板悬停感应边缘快速拉低 EMA 导致触发线漂移。
**V4.36.31 cast bugV4.36.35 治本)**`(uint32_t)(负差)/128 = +3355万/样本`C 语义:负转无符号爆炸);
修复 = 有符号先除 `g += (uint32_t)(_ema_d/128)`V4.36.34 的"偏差>25% 自愈重置"保留为最后防线
### 3.4 进入/离开
- 进入:`CAPVD < Origin dlt`3 次确认),`dlt = Origin×SensTable[SENS]>>16`
- 进入:`CAPVD < Origin dlt`按 Q 档 3/4/5 次确认),`dlt = Origin×SensTable[SENS]>>16`
- 离开:**简单滞回 3 次防抖**(V2.9 起默认,`(Origindlt)<CAPVD``cnt_release≥3`);平坦性三条件(CN200910309382)代码保留在 `#if USE_FLATNESS_EXIT` 内,**默认禁用**(现场实测不理想,2026-08-28
- 离开阈值 `dlt = Origin×SensTable_1[SENS]>>16`V2.11 起分档 {60,32,21,14},对齐 PD132T SENUP 标贴 OFF=出厂默认)
- 离开阈值 `dlt_rel = Origin×SensTable_1[SENS]>>16`
- **低Q 环带超时兜底**(V4.36.30,时间回滞替代空间回滞):板停在触发-释放回滞带内不再永久卡死——
`CAPVD > 进入线` 持续 `REL_BAND_TIMEOUT_TICKS=250`**2.5s**)→ 强制释放
- 低Q 释放带回加宽(V4.36.28):`REL_BAND_LO_MULT=180`dlt_rel×1.823→41 counts@SENS3),回滞 = 4941 = 8 counts
### 3.5 灵敏度表M1H 继承,V2.8/V2.11 调整)
### 3.5 灵敏度表
```
SensTable[4] = {300, 60, 32, 21} // 进入 (Δf/f: 0.46%…0.032%, V2.11 全档与 PD132T 完全一致)
SensTable_1[4] = { 60, 32, 21, 14} // 离开分档(V2.11 与 PD132T SensTable1 完全一致;原 {108,72,18,14}
USE_PLANB_TABLE = 1 (方案BV4.06 定稿,实际编译)
SensTable[4] = {337, 71, 38, 25} // 进入(调深;V4.07 SENS=0 回调 357→337
SensTable_1[4] = { 51, 27, 18, 12} // 释放(调浅;等比 ×25/21 ×12/14
USE_PLANB_TABLE = 0 PD132T 完全对齐表,备选)
SensTable[4] = {300, 60, 32, 21} // V2.11:全档与 PD132T 一致
SensTable_1[4] = { 60, 32, 21, 14}
```
- `SENS = 3-(sw&0x03)`(拨码反码,与 M1H 一致)
- ⚠ V2.82026-08-27SENS=3 最高档 10→20、9→14——现场广告杆落杆误触发(落杆机械/电磁扰动越过 0.015% 阈值)
- ⚠ V2.112026-08-28):① 进入表 216/108/36/20→**300/60/32/21**0.33%/0.16%/0.055%/0.031%→0.458%/0.092%/0.049%/0.032% Δf/f)——PD132T 客户现场替换,**全档完全一致**;② 离开表 {108,72,18,14}→{60,32,21,14}(与 PD132T SensTable1 完全一致,SENUP 标贴 OFF=出厂默认态;若现场 SENUP 拨 ON 需改恒 14 表
- `SENS = 3-(sw&0x03)`(拨码反码,与 M1H 一致);拨码去抖:连续 5 次一致才生效
- ⚠ V2.8SENS=3 最高档 10→20、9→14——现场广告杆落杆误触发(机械/电磁扰动越过 0.015% 阈值)
- ⚠ V2.11:全档对齐 PD132T客户现场替换需求);V4.06 起方案B 现场调校(SENS=3 实测接近 PD132T
### 3.6 线圈电感量监视(V4.26coil_monitor
### 3.6 线圈电感量监视(V4.26 → V4.36.37 四分
- 判据(拍板规格)**默认低频档口径,空场频率合理窗 20~120kHz**f<20k → L 偏大、f>120kL 偏小(不做档位判定/灰带
- 条件:仅稳定 + 无车 + 未断开时判(无车主路径调用,Origin 反推空场 f;车压/自检不判);越界/恢复均 1s 防抖(100×10ms
- 诊断:`EVT|coil_fault f:xx kHz L~xxx uH ... too_large/too_small``EVT|coil_ok ...`
- **L 估算标定**V4.28/29):`L_uH = 2.533e7/(f_kHz² × COIL_CAL_C_NF)`
- 低频档(名义 66nF)实测等效谐振电容 C_eff=68.1~68.9 → **宏 68**V4.29V4.28 的 43 为 5.1K 旧板带病特性作废)
- 高频档(名义 33nF)实测 C_eff≈34.4 → 宏参考 34(0Ω 板待复测;拨 33nF 档需改主宏)
- 标定法:LCR 实测 L → C=2.533e7/(f²×L),多颗平均
- 判据:**默认低频档口径,空场频率合理窗 18~125kHz**V4.36.9/18/25 收敛:20~120 → 18~125
- 条件:仅稳定 + 无车 + 未断开时判(无车主路径调用,Origin 反推空场 f;车压/自检不判);越界/恢复均 **5s 防抖**`COIL_FAULT_HOLD_TICKS=500`V4.36.21 自 1s 加长
- **四分级语义**V4.36.25 三分 → V4.36.37 方案A 分级):
### 3.7 指示逻辑(V4.23/V4.26 状态)
| f 区间 | 电感(43nF | fault | 黄灯 | 判定 |
|---|---|---|---|---|
| 18~125k | 38µH~1.15mH | 0 | 灭 | 正常 |
| f<18k | L 偏大 | 1 | 一长一短 | 照常 |
| 125~156k | 24~38µH | 1 | 一长一短 | 照常 |
| **156~171k** | **20~24µH** | **2** | **一长两短**V4.36.38 | **恒判车(不随宏)** |
| **f>171k** | **<20µH 短路级** | **3** | **快闪 200ms**(同真断开) | 宏=0 判车 / **宏=1 等同断开** |
- **红灯**TMR14 PWM 呼吸(PB1,暗→暗 2520ms60ms/步;V4.23 呼吸节奏以 vd960Loop 为参照)
- **绿灯**:上电自检判稳(见 3.3)——基准稳定才停快闪;二次稳定期有判稳语义铁律保护
- **黄灯优先级链**(V4.26 拍板):线圈断开快闪(1) > 故障补偿/学习常亮(4) > 电感量不合理**一长一短**(5: 200/100/100/800ms) > 断开史 N 短闪(3) > 灭
- 宏与阈值:
- `COIL_L_MIN_UH=24``COIL_L_MIN_F_KHZ=156`f@24µH=156.7k
- `COIL_L_SHORT_UH=20``COIL_L_SHORT_F_KHZ=171`f@20µH=171.6kV4.36.37 新增)
- `COIL_UNDER_MIN_AS_OPEN`**默认 1**(V4.36.39 用户拍板出厂态)——短路级=完全断开态(判定暂停 + 继电器保持释放 + 绿灯灭 + 黄灯快闪 + 专职恢复监测);`0` 保留"仅快闪提示、判定照常"
- 诊断:`EVT|coil_fault f:xx kHz L~xxx uH ...``EVT|coil_ok ...`
- **L 估算**V4.28/29/34):`L_uH = 2.533e7/(f_kHz² × COIL_CAL_C_NF)`,产品宏 **43**(三极管库存板;0Ω 板 68 仅实验)
- **热切换恢复(V4.36.40 修复)**:短路级强制断开期 vd1_task 停摆 → Origin/LPCNT 冻结 → 旧 recover 用冻结值判 f 永远 >171k → **换正常线圈也不恢复(只能断电)**
修复:recover 改用 **TMR3 捕获 ISR 实时 Xn**`f=240000/Xn`)判回窗,连续 5s → 实时置档 → ISR 停压 LOOP_OK → 主循环上升沿自动发起重连确认(100ms)→ 无车判稳门控 → **Origin 判稳重建** → 正常线圈 fault 归 0。**换线圈不断电约 6s 自愈**
## 4. 时序/速率/周期速查(2026-09-03 V4.29 刷新)
### 3.7 指示逻辑
- **红灯**TMR14 PWM 呼吸(PB1,暗→暗 2520ms60ms/步)
- **绿灯**= **RLY2PA5odt 镜像**(吸合亮/释放灭,V4.36.10 由 RLY1 改默认继电器);
自检/判稳/就绪巩固期慢闪(`!LOOP_OK || g_reconn_stab || fault==3 || !stable || ready_hold>0`
- **黄灯优先级链**V4.36.38 现行,1>4>2>1'>3>灭):
1. 快闪 200ms`!LOOP_OK`(断开/从未接)或 `g_reconn_stab`(重连判稳中)或 **fault==3 短路级**
2. 常亮:环境异常预判/重校准学习(`g_env_warn/g_env_resync` 锁存)
3. **一长两短**900/300/100/300/100/700ms6 相):fault==2 可用级(20~24µH
4. 一长一短(900/300/100/700ms4 相):fault==1 出窗(L 偏大 / 24~38µH
5. N 短闪(80ms 亮/200ms 灭 ×N≤31.2s 间隔):断开史
6.
- 现场判读口诀:**一长两短=偏低但能用(照常判车);一长一短=出窗仍可用;快闪=真断开或 <20µH 短路级**
## 4. 时序/速率/周期速查(2026-09-09 V4.36.40 刷新)
> V4B 是**混合节拍**架构,与所有参考型号的单节拍不同:
| 量 | 值 | 说明 |
|----|-----|------|
| 检测主循环 | **10 ms** | FreeRTOS vTaskDelay(10)vd1_task 由 CAP_OK 门控 |
| 测量窗 | 1.09 ms | 131072/120MHzCAPVD 原始值节拍V4.27 修正自 60MHz 误口径 |
| 测量窗 | 1.09 ms | 131072/120MHzCAPVD 原始值节拍) |
| **CAPVD 更新节拍** | **10 ms** | IIR 消费节拍(vd1_task 在 10ms 循环跑) |
| **基线更新周期** | **5 s**500 窗) | 稳定期 ~2s 判稳(100 样本窗×2 + 漂移 ≤0.1% |
| IIR 时间常数 τ | **32 ms** | 10ms × 256/79 |
| **基线更新周期** | **5 s**500 窗) | 稳定期 ~1.3s 判稳(128 样本 + 2 窗漂移 ≤0.1% |
| IIR 时间常数 τ | **32 ms** | 10ms × 256/79(低Q 释放平滑另用 REL_ALFA=30 → τ≈85ms |
| 时序状态机 tick | **50 ms** | TMR15 ISR 5ms×10(进入/离开/脉冲/超时) |
| 进入确认 | 3×10ms = 30ms | + 时序 IN_DELAY 500ms |
| 离开判定 | 简单滞回 3 次防抖(平坦性 #if 禁用V2.9 起 | + OUT_DELAY 500msSW4=ON |
| 进入确认 | 3~5×10ms = 30~50ms | 按 Q 档(高3/中4/低5 + 时序 IN_DELAY 500ms |
| 离开判定 | 简单滞回 3~5 次防抖(平坦性 #if 禁用) | 按 Q 档 + OUT_DELAY 500msSW4=ON |
| 低Q 环带超时兜底 | **2.5 s** | CAPVD>进入线持续 → 强制释放(V4.36.30) |
| 释放后 Origin 补偿 | 冻结 1s + 降权 2s×1/5 | V4.36.26/32 |
| 真空 EMA | τ≈1.28 s | V4.36.31(α=1/128 |
| 脉冲宽 | 500 ms | PULSE_DELAY=10 @50ms |
| 有限存在 | **300 s** | HOLD_TIME=6000 @50ms |
| 安全复位 | **240 s** | LC_HOLD_TIME=4800 @50ms |
| 环境重校准 | 5s 预判 → 10s 学习 → ~21s 恢复 | ENV_WARN/RESYNC/RECOVER_WAIT 500/1000/500 + 学习 3×200tick,预算 30s |
| 线圈监视防抖 | 1 s | 100×10mscoil_monitor,仅稳定无车判) |
| 环境重校准 | 2s 预判 → 7s 补偿 → 2s 恢复 | ENV_WARN/RESYNC/RECOVER 200/700/200 + 学习 3×200tick,预算 30s |
| 就绪巩固期 | **5s / 7s / 10s** | 按 Q 档(高/中/低),绿灯慢闪,V4.36.36 |
| 线圈监视防抖 | **5 s** | 500×10mscoil_monitor,仅稳定无车判) |
| 重连确认窗 | **100 ms** | 载波连续恢复计数(V4.36.2) |
| 重连起振抑制 | **200 / 300 / 1500 ms** | 按 Q 档(高/中/低,V4.36.7/11 |
| 重连判稳门控 | 600ms 无漂移 / 5s 兜底 | V4.36.15(值稳定才放行) |
| 有车断开继电器保持 | **1000 ms** | RELAY_HOLD_MSV4.36.3/7 |
| DBG 周期打印 | 2 s | 含 f_kHz + L_uHC_eff 标定后) |
| 看门狗 | IWDT ≈1.64sV2.10 | TMR15 ISR 计数 + 主循环 poll_wdg 500ms 喂狗 |
| 看门狗 | IWDT ≈1.64s | TMR15 ISR 计数 + 主循环 poll_wdg 500ms 喂狗 |
## 5. 拨码与配置
@@ -129,6 +187,7 @@ SensTable_1[4] = { 60, 32, 21, 14} // 离开分档(V2.11 与 PD132T SensTab
拨码去抖:连续 5 次一致才生效。
频率档位(33/66nF)不在 DIP 内,由板载拨码直控电容(不引 MCU IO)→ 固件按默认低频档标定。
⚠ 拨码不重启检测器(无复位电路联动)——电感分级变更后靠自动恢复机制收敛,无需断电。
## 6. 与 M1H 的血缘对比(同血统两代)
@@ -138,23 +197,54 @@ SensTable_1[4] = { 60, 32, 21, 14} // 离开分档(V2.11 与 PD132T SensTab
| 归一化基数 | 32768 | **131072**2^17,快 4 倍精度) |
| 测量窗 | 32.8ms | **1.09ms**(快 30×;V4.27 修正 120M tick 口径) |
| CAPVD 节拍 | 32.8ms | 10ms(快 3.3×) |
| 基线 | 100 窗 3.28s(有车也跟踪) | 500 窗 5s(有车冻结 + 冻结超时 + V4.24 环境重校准) |
| 灵敏度表 | {216,108,36,10}/{108,72,18,9} | {300,60,32,21}/{60,32,21,14}V2.11 全档与 PD132T 一致) |
| 基线 | 100 窗 3.28s(有车也跟踪) | 500 窗 5s(有车冻结 + 冻结超时 + 环境重校准 + 释放后分级补偿 |
| 灵敏度表 | {216,108,36,10}/{108,72,18,9} | 方案B {337,71,38,25}/{51,27,18,12}(现场调校);PD132T 对齐表 {300,60,32,21}/{60,32,21,14} |
| IIR | ALFA 79 @32.8ms τ=106ms | ALFA 79 @10ms **τ=32ms**(快 3.3×) |
| 进入 | 单次越线 | **3 次确认 + 斜率限幅** |
| 离开 | 简单阈值 | **简单滞回 3 次防抖**(平坦性 #if 禁用,V2.9 起) |
| 产品自诊断 | 无 | **线圈断开编码 / 电感量范围监视(20~120kHz+ L 粗估C_eff 标定)** |
| 进入 | 单次越线 | **3~5 次确认(按Q档) + 斜率限幅** |
| 离开 | 简单阈值 | **简单滞回 3~5 次防抖 + 环带超时兜底** |
| 产品自诊断 | 无 | **断开编码 / 电感四分监视(18~125k+ L 粗估 + 短路级等同断开 + 热切换自愈** |
| 看门狗 | WDT_CONTR | **IWDT ≈1.64s**V2.10 双保险) |
| 时序 tick | 50ms | 检测 10ms + 时序 50ms(混合) |
## 7. 设计特点
1. **混合节拍**是本型号最大特色:检测(IIR/基线/判据)在 10ms 快循环,时序状态机(进入/离开/脉冲/超时)在 50ms tick——两者解耦,响应快且时序参数与 M1H 直接对齐
2. **基线多重保护**:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)+ **V4.24 受控环境重校准**(10s 等待学习、空闲原子替换、30s 放弃防死锁)——比参考型号多两层环境自适应
3. **看门狗 V2.10 补齐**:此前"无看门狗"是全产品线例外项;V2.10 新增 IWDT(超时≈1.64sTMR15 ISR 计数 + 主循环 poll_wdg 双保险喂狗,对齐 154Pro WWDG 方案)——与 154Pro 的 WWDG 558ms / 960 的 IWDG 策略对齐
4. 平坦性离开判定(专利 CN200910309382曾用于解决大车多峰频率曲线误触发,是参考型号没有的——**V2.9 起默认关闭**(现场实测不理想),切回简单滞回 3 次防抖(与 154Pro 一致),代码保留可开
5. **黄灯人机接口完整**V4.23~V4.26):断开快闪 > 环境学习/预判锁存 > 电感一长一短 > 断开史 N 短闪 > 灭——现场 10s 级可判故障类型
6. **自诊断带校准**V4.26~V4.29):线圈电感监视基于真实频率(V4.27 修正 4 倍测量差+ 标定等效谐振电容(C_eff=68,0Ω 板)——打印 L 与 LCR 实测偏差 ≤1.5%
2. **基线多重保护**:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)+ 受控环境重校准(2s 预判/7s 补偿/30s 放弃)+ **释放后冻结 1s + 降权 2s**——比参考型号多三层自适应
3. **低Q 专项治理**V4.30~V4.36,见 §8):环带超时兜底、真空 EMA 重锚、释放平滑、带回加宽、确认分档——23µH 级低Q 线圈从"偶发锁死 75s"到"全程可控释放"
4. 平坦性离开判定(专利 CN200910309382)是参考型号没有的——**V2.9 起默认关闭**(现场实测不理想),切回简单滞回(与 154Pro 一致),代码保留可开
5. **黄灯人机接口完整**V4.23~V4.38):快闪 > 环境学习锁存 > **一长两短(可用级)** > 一长一短(出窗)> 断开史 N 短闪 > 灭——现场 10s 级可判故障类型与"能不能用"
6. **自诊断带校准**V4.26~V4.40):电感监视基于真实频率(V4.27 修正 4 倍)+ 标定等效电容(产品 C_eff=43+ 四分语义 + **短路级等同断开(默认开)+ 热切换不断电自愈**
---
## 8. V4.30~V4.36 演进(2026-09-04 ~ 09-09,低Q 治理链 + 产品化语义)
### 8.1 低Q 释放/卡死治理链(机理编号)
| 机理 | 现象 | 药方(版本) |
|---|---|---|
| 1 | Origin 学高锚错 | V4.36.26 释放后冻结 500ms + τ85ms |
| 2 | 差 1~2 counts 脆断 | V4.36.28 `REL_BAND_LO_MULT` 150→**180**(带回 41 |
| 3 | 板深停触发区 | V4.36.29 容差 4**已撤**,太易释放)→ V4.36.30 **环带超时 2.5s 兜底** |
| 4 | Origin 学到搁置位 | V4.36.31/33 **真空 EMA 重锚**min(Origin,EMA),门控 >1×dlt |
| 5 | 残余缓离拉低 Origin | V4.36.32 冻结 1s + 降权 2s×1/5(仿 PD132T 慢采样) |
| 6 | **EMA cast 爆炸** | V4.36.34 钳位+自愈(掩盖)→ V4.36.35 **有符号先除治本**`(uint32)负差/128=+3355万` |
诊断字段(V4.36.27/34):DBG 行含 QLO/RSM/RLN/RCN/VEM/SUMADR 每 10s 打 `&VEM &ORGSUM &Origin &RSM`
### 8.2 电感分级产品化语义(用户拍板链)
| 版本 | 变更 | 决策 |
|---|---|---|
| V4.36.20~23 | 最低电感量 20 → 25 → **24µH** | 频率上限 171 → 153 → 156kHz |
| V4.36.24 | 宏 `COIL_UNDER_MIN_AS_OPEN` 双模式 | 0=仅快闪 / 1=完全断开 |
| V4.36.25 | 电感三分:窗回 125k125~156k 一长一短;>156k 快闪 | 修正误归正常 |
| **V4.36.37** | **方案A 分级降级**(用户选 A | fault2 = 156~171k 保判车 + 独立黄灯;fault3 = >171k 短路级才等同断开 |
| V4.36.38 | fault2 黄灯 疾闪 100ms → **一长两短**(用户定) | 与一长一短同家族、"两短"区分 |
| V4.36.39 | 宏默认 0 → **1**(用户拍板) | 短路级出厂即等同断开,客户无需编译期开宏 |
| V4.36.40 | **热切换死锁修复** | recover 用实时 Xn 判回窗;换线圈不断电 ~6s 自愈 |
**语义要点**:不误杀 20~24µH 的"低但可用"线圈(照常判车+一长两短提示);<20µH 真短路级才停判(不可靠输出风险)。
---
@@ -168,5 +258,5 @@ SensTable_1[4] = { 60, 32, 21, 14} // 离开分档(V2.11 与 PD132T SensTab
**原因/效果**2026-09-03 现场标定):
- 原电路(拨码经三极管控电容):低频档(66nF 名义)实测等效谐振电容 **C_eff≈43nF**(2 台 5 组反推),第二颗 33nF 只等效并入 ~8.6nF
- 旁路后(0Ω 直控):**C_eff=68.1~68.9nF(均值 68.4)≈ 名义 66nF**,电容全量并入
- 固件关联:DLD154V4B V4.28 `COIL_CAL_C_NF=43` 作废 → V4.29 `COIL_CAL_C_NF=68`
- 33nF(高频)档标定 34旧板数据),0Ω 板待复测
- **产品决策(V4.34)**:产品基准**回到三极管库存板**——`COIL_CAL_C_NF=43`,0Ω 改动仅作机理验证(库存板存量消化优先)
- 33nF(高频)档标定 34两板一致)