Files
vd-analysis/models/DLD154V4B/analysis.md
T
wangfq 044cb998e6 docs(models/DLD154V4B): 原理图 Ver3.00→Ver4.01 + 硬件变更记录(R19拆/R27补0Ω, 拨码旁路三极管直控电容)
- 归档 DLD154V4_Ver4.01-20251021_Logic.pdf (用户提供), 删除 Ver3.00
- analysis.md: 原理图引用更新; 修正捕获链路错误口径(计数120MHz+输入DIV_2,
  等效 240M/Xn; V4.27 曾修 4 倍差: 示波器 30.23k vs 打印 7k)
- 测量窗 2.18ms(60M误) → 1.09ms(120M tick)
- 文末追加 2026-09-03 硬件变更: R19 拆 + R27 0Ω 旁路三极管 → C_eff 43→68.4
  (固件 V4.28 43 作废 → V4.29 COIL_CAL_C_NF=68)
2026-09-03 14:58:46 +08:00

139 lines
8.0 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 | 固件: V2.8V2.0 架构)| 平台: **AT32F421F8P7**Cortex-M4, 120MHz, FreeRTOS
> 源码: `vd_detector/DLD154V4B/utilities/at32f421_freertos_demo/`TaskLoop.c 914 行 + main.c
> 原理图: `models/DLD154V4B/DLD154V4_Ver4.01-20251021_Logic.pdf`(本仓附件,2026-09-03 由 Ver3.00 更新)
> ⚠ 本文为基础分析快照(原固件 V2.8 时代);固件最新 V4.29(含 V4.27 频率测量修正/V4.29 C_eff 标定 68)见 DLD154V4B 仓 docs/devlog
> 硬件前端对比: `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 新增,双保险喂狗) |
| 通信 | 无 RS485TTL 调试口 9600 8N1 |
## 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 呼吸) |
## 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);修正后 **Xn 等效采样率 = 240MHz/信号频率**f_kHz = 240000×LPCNT/CAPVD
- 归一化:`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**),有车冻结
- 稳定期:100 窗 + `STABLE_SAMPLES=128`(1.28s),绕过 IIR/斜率限幅直锁
- **冻结超时**`FREEZE_TIMEOUT=1000`(10s)+ ±2% 稳定性窗口,持续偏高且稳定才强制更新基线
### 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 表)
## 4. 时序/速率/周期速查(2026-08-27
> 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 窗) | 稳定期 1s100 窗) |
| 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 |
| 上电稳定 | 1.28 s | STABLE_SAMPLES=128 × 10ms |
| 看门狗 | 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 次一致才生效。
## 6. 与 M1H 的血缘对比(同血统两代)
| 特征 | M1H (2008) | DLD154V4B |
|------|-----------|-----------|
| 平台 | STC12C5202 (8051, ~12MHz) | AT32F421 (M4, 120MHz) + FreeRTOS |
| 归一化基数 | 32768 | **131072**2^17,快 4 倍精度) |
| 测量窗 | 32.8ms | **2.18ms**(快 15×) |
| CAPVD 节拍 | 32.8ms | 10ms(快 3.3×) |
| 基线 | 100 窗 3.28s(有车也跟踪) | 500 窗 5s(有车冻结 + 冻结超时) |
| 灵敏度表 | {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 起) |
| 看门狗 | WDT_CONTR | **IWDT ≈1.64s**V2.10 双保险) |
| 时序 tick | 50ms | 检测 10ms + 时序 50ms(混合) |
## 7. 设计特点
1. **混合节拍**是本型号最大特色:检测(IIR/基线/判据)在 10ms 快循环,时序状态机(进入/离开/脉冲/超时)在 50ms tick——两者解耦,响应快且时序参数与 M1H 直接对齐
2. **基线三重保护**:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)——比参考型号多一层环境自适应
3. **看门狗 V2.10 补齐**:此前"无看门狗"是全产品线例外项;V2.10 新增 IWDT(超时≈1.64sTMR15 ISR 计数 + 主循环 poll_wdg 双保险喂狗,对齐 154Pro WWDG 方案)——与 154Pro 的 WWDG 558ms / 960 的 IWDG 策略对齐
4. 平坦性离开判定(专利 CN200910309382)曾用于解决大车多峰频率曲线误触发,是参考型号没有的——**V2.9 起默认关闭**(现场实测不理想),切回简单滞回 3 次防抖(与 154Pro 一致),代码保留可开
---
## 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Ω 板待复测