Files
vd-analysis/models/DLD154V4B/analysis.md
T
wangfq 4b70958796 docs(models/DLD154V4B): analysis.md 全面刷新至 V4.29 快照
- 固件 V2.8→V4.29; TaskLoop.c 914→1339 行
- 新增: 3.6 线圈电感量监视(20~120k, C_eff 68/34 标定), 3.7 指示逻辑(呼吸/判稳/黄灯5模式链)
- 基线章节补 V4.24 环境重校准(10s学习/30s预算) + V4.25 黄灯预判锁存
- 时序速查补: 环境恢复 ~21s, 电感防抖 1s, DBG 2s(L字段)
- 对比表补产品自诊断行; 设计特点补 5/6
- 保留 R19/R27 硬件变更记录(文末)
2026-09-03 15:02:25 +08:00

173 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 行)
> 原理图: `models/DLD154V4B/DLD154V4_Ver4.01-20251021_Logic.pdf`(本仓附件,2026-09-03 由 Ver3.00 更新)
> 硬件变更: 见文末(2026-09-03R19 拆 + R27 补焊 0Ω → 拨码旁路三极管直控第二颗 33nF)
> 硬件前端对比: `docs/hardware-loop-frontend-pd132t-vs-v4b.md`(直连 vs PD132T CD4060 分频)
> **血缘:M1H 的现代实现**——灵敏度表/映射/IIR 系数继承,M4 优化(快 tick/确认/斜率限幅)是 8051 时代做不到的增量。
## 1. 平台与工程
| 项 | 值 |
|----|-----|
| MCU | AT32F421F8P7Cortex-M4 @120MHz, 64KB Flash |
| RTOS | FreeRTOSloop_task_function 主任务) |
| 工具链 | Keil MDK / AT32 标准库 |
| 看门狗 | **IWDT ≈1.64s**V2.10 新增,TMR15 ISR + 主循环 poll_wdg 双保险喂狗) |
| 通信 | 无 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`
## 2. 硬件资源
| 引脚 | 功能 |
|------|------|
| PA7 | LP 线圈捕获(TIM3_CH2,输入 DIV_2 = 每 2 信号沿捕获一次;计数器 tick=120MHz |
| PA0 / PA1 | SA1 / SA2 灵敏度拨码 |
| PA2 | SW3 存在/脉冲模式 |
| PA3 | SW4 离开延时开关 |
| PA4 | SW5 安全复位 |
| PA5 / PA6 | RLY2 辅助 / RLY1 主继电器 |
| PA9 / PA10 / PB1 | LEDA 绿 / LEDC 黄 / 红灯(TMR14 PWM 呼吸) |
振荡回路(原理图 Ver4.01):固定 33nF + 拨码经 **R27 0Ω**2026-09-03 前经三极管电路/R19
接通第二颗 33nF → 两级频率(名义 66nF 低频 / 33nF 高频)。⚠ **固件无法读档位**(拨码不引 IO)。
## 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**
- 归一化:`LPCNT = MEASUREMENT_BASE(131072) / Xn`**BASE=2^17**),累加 LPCNT 个周期得 Value ≈ 131072
- 测量窗 ≈ 131072/(120MHz tick) = **1.09 ms**Value=Σ Xn 计数,1 计数=1/120M s
### 3.2 滤波(M4 优化,区别于参考型号)
- IIR`ALFA_CAP1=79` @10ms**τ≈32ms**
- **斜率限幅**:单次变化 >5% 截断(拒绝 EMI/闪电尖峰)
- **进入确认**:连续 3 次低于阈值才判有车(ENTRY_CONFIRM=3
### 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 样本瞬判**
- **冻结超时**`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 提速后)
### 3.4 进入/离开
- 进入:`CAPVD < Origin dlt`3 次确认),`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=出厂默认)
### 3.5 灵敏度表(M1H 继承,V2.8/V2.11 调整)
```
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}
```
- `SENS = 3-(sw&0x03)`(拨码反码,与 M1H 一致)
- ⚠ V2.82026-08-27):SENS=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 表)
### 3.6 线圈电感量监视(V4.26coil_monitor
- 判据(拍板规格):**默认低频档口径,空场频率合理窗 20~120kHz**f<20k → L 偏大、f>120k → L 偏小(不做档位判定/灰带)
- 条件:仅稳定 + 无车 + 未断开时判(无车主路径调用,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),多颗平均
### 3.7 指示逻辑(V4.23/V4.26 状态)
- **红灯**TMR14 PWM 呼吸(PB1,暗→暗 2520ms60ms/步;V4.23 呼吸节奏以 vd960Loop 为参照)
- **绿灯**:上电自检判稳(见 3.3)——基准稳定才停快闪;二次稳定期有判稳语义铁律保护
- **黄灯优先级链**(V4.26 拍板):线圈断开快闪(1) > 故障补偿/学习常亮(4) > 电感量不合理**一长一短**(5: 200/100/100/800ms) > 断开史 N 短闪(3) > 灭
## 4. 时序/速率/周期速查(2026-09-03 V4.29 刷新)
> V4B 是**混合节拍**架构,与所有参考型号的单节拍不同:
| 量 | 值 | 说明 |
|----|-----|------|
| 检测主循环 | **10 ms** | FreeRTOS vTaskDelay(10)vd1_task 由 CAP_OK 门控 |
| 测量窗 | 1.09 ms | 131072/120MHzCAPVD 原始值节拍;V4.27 修正自 60MHz 误口径) |
| **CAPVD 更新节拍** | **10 ms** | IIR 消费节拍(vd1_task 在 10ms 循环跑) |
| **基线更新周期** | **5 s**(500 窗) | 稳定期 ~2s 判稳(100 样本窗×2 + 漂移 ≤0.1% |
| IIR 时间常数 τ | **32 ms** | 10ms × 256/79 |
| 时序状态机 tick | **50 ms** | TMR15 ISR 5ms×10(进入/离开/脉冲/超时) |
| 进入确认 | 3×10ms = 30ms | + 时序 IN_DELAY 500ms |
| 离开判定 | 简单滞回 3 次防抖(平坦性 #if 禁用,V2.9 起) | + OUT_DELAY 500msSW4=ON |
| 脉冲宽 | 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,仅稳定无车判) |
| DBG 周期打印 | 2 s | 含 f_kHz + L_uHC_eff 标定后) |
| 看门狗 | IWDT ≈1.64sV2.10 | TMR15 ISR 计数 + 主循环 poll_wdg 500ms 喂狗 |
## 5. 拨码与配置
| DIP | 引脚 | ON=1 | OFF=0 |
|-----|------|------|-------|
| SA_1/SA_2 | PA0/PA1 | 灵敏度低位/高位 | `SENS = 3-(sw&0x03)` |
| SW_3 | PA2 | 脉冲输出 | 存在输出 |
| SW_4 | PA3 | 离开延时 500ms | 无延时 |
| SW_5 | PA4 | 安全复位 | 正常运行 |
拨码去抖:连续 5 次一致才生效。
频率档位(33/66nF)不在 DIP 内,由板载拨码直控电容(不引 MCU IO)→ 固件按默认低频档标定。
## 6. 与 M1H 的血缘对比(同血统两代)
| 特征 | M1H (2008) | DLD154V4B |
|------|-----------|-----------|
| 平台 | STC12C5202 (8051, ~12MHz) | AT32F421 (M4, 120MHz) + FreeRTOS |
| 归一化基数 | 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 一致) |
| IIR | ALFA 79 @32.8ms τ=106ms | ALFA 79 @10ms **τ=32ms**(快 3.3×) |
| 进入 | 单次越线 | **3 次确认 + 斜率限幅** |
| 离开 | 简单阈值 | **简单滞回 3 次防抖**(平坦性 #if 禁用,V2.9 起) |
| 产品自诊断 | 无 | **线圈断开编码 / 电感量范围监视(20~120kHz+ L 粗估(C_eff 标定)** |
| 看门狗 | 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%
---
## 2026-09-03 硬件变更:拨码电容开关旁路三极管(原理图 Ver4.01)
**准确改动**(用户确认):
- **R19 取下**(拆除)
- **R27 补焊 0Ω**(原空贴)
- 效果 = 拨码开关**不再经过三极管电路**,通过 0Ω 电阻**直接控制第二颗 33nF 电容**
**原因/效果**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Ω 板待复测