现场实测平坦性三条件不理想,V4B V2.9 起默认关闭 (USE_FLATNESS_EXIT=0), 与 DLD154Pro 口径一致。对比总表 + analysis.md 四处同步。
5.7 KiB
5.7 KiB
DLD154V4B 车检器分析
型号: DLD154V4B | 固件: V2.8(V2.0 架构)| 平台: AT32F421F8P7(Cortex-M4, 120MHz, FreeRTOS) 源码:
vd_detector/DLD154V4B/utilities/at32f421_freertos_demo/(TaskLoop.c 914 行 + main.c) 血缘:M1H 的现代实现——灵敏度表/映射/IIR 系数继承,M4 优化(快 tick/确认/斜率限幅)是 8051 时代做不到的增量。
1. 平台与工程
| 项 | 值 |
|---|---|
| MCU | AT32F421F8P7(Cortex-M4 @120MHz, 64KB Flash) |
| RTOS | FreeRTOS(loop_task_function 主任务) |
| 工具链 | Keil MDK / AT32 标准库 |
| 看门狗 | 无(V4B 无 IWDG/WWDG——与参考型号均不同) |
| 通信 | 无 RS485;TTL 调试口 9600 8N1 |
2. 硬件资源
| 引脚 | 功能 |
|---|---|
| PA7 | LP 线圈捕获(TIM3_CH2,DIV_2 → 捕获时钟 60MHz) |
| 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),捕获时钟 60MHz(DIV_2)
- 归一化:
LPCNT = MEASUREMENT_BASE(131072) / Xn(BASE=2^17),累加 LPCNT 个周期得 Value ≈ 131072 - 测量窗 ≈ 131072/60MHz = 2.18 ms
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 起默认,
(Origin−dlt)<CAPVD且cnt_release≥3);平坦性三条件(CN200910309382)代码保留在#if USE_FLATNESS_EXIT内,默认禁用(现场实测不理想,2026-08-28) - 离开阈值
dlt = Origin×SensTable_1[SENS]>>16(同档滞回)
3.5 灵敏度表(M1H 继承,V2.8 调整)
SensTable[4] = {216, 108, 36, 20} // 进入 (Δf/f: 0.33%…0.031%)
SensTable_1[4] = {108, 72, 18, 14} // 离开(滞回 ~50-70%)
SENS = 3-(sw&0x03)(拨码反码,与 M1H 一致)- ⚠ V2.8(2026-08-27):SENS=3 最高档 10→20、9→14——现场广告杆落杆误触发(落杆机械/电磁扰动越过 0.015% 阈值)
4. 时序/速率/周期速查(2026-08-27)
V4B 是混合节拍架构,与所有参考型号的单节拍不同:
| 量 | 值 | 说明 |
|---|---|---|
| 检测主循环 | 10 ms | FreeRTOS vTaskDelay(10),vd1_task 由 CAP_OK 门控 |
| 测量窗 | 2.18 ms | 131072/60MHz(CAPVD 原始值节拍) |
| CAPVD 更新节拍 | 10 ms | IIR 消费节拍(vd1_task 在 10ms 循环跑) |
| 基线更新周期 | 5 s(500 窗) | 稳定期 1s(100 窗) |
| 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 500ms(SW4=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 |
| 看门狗 | 无 | — |
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} | {216,108,36,20}/{108,72,18,14} |
| IIR | ALFA 79 @32.8ms τ=106ms | ALFA 79 @10ms τ=32ms(快 3.3×) |
| 进入 | 单次越线 | 3 次确认 + 斜率限幅 |
| 离开 | 简单阈值 | 简单滞回 3 次防抖(平坦性 #if 禁用,V2.9 起) |
| 看门狗 | WDT_CONTR | 无 |
| 时序 tick | 50ms | 检测 10ms + 时序 50ms(混合) |
7. 设计特点
- 混合节拍是本型号最大特色:检测(IIR/基线/判据)在 10ms 快循环,时序状态机(进入/离开/脉冲/超时)在 50ms tick——两者解耦,响应快且时序参数与 M1H 直接对齐
- 基线三重保护:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)——比参考型号多一层环境自适应
- 无看门狗是例外项:依赖 FreeRTOS + 硬件稳定性,与 154Pro 的 WWDG/960 的 IWDG 策略不同
- 平坦性离开判定(专利 CN200910309382)曾用于解决大车多峰频率曲线误触发,是参考型号没有的——V2.9 起默认关闭(现场实测不理想),切回简单滞回 3 次防抖(与 154Pro 一致),代码保留可开