- 固件 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 硬件变更记录(文末)
12 KiB
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-03:R19 拆 + R27 补焊 0Ω → 拨码旁路三极管直控第二颗 33nF) 硬件前端对比:docs/hardware-loop-frontend-pd132t-vs-v4b.md(直连 vs PD132T CD4060 分频) 血缘:M1H 的现代实现——灵敏度表/映射/IIR 系数继承,M4 优化(快 tick/确认/斜率限幅)是 8051 时代做不到的增量。
1. 平台与工程
| 项 | 值 |
|---|---|
| MCU | AT32F421F8P7(Cortex-M4 @120MHz, 64KB Flash) |
| RTOS | FreeRTOS(loop_task_function 主任务) |
| 工具链 | Keil MDK / AT32 标准库 |
| 看门狗 | IWDT ≈1.64s(V2.10 新增,TMR15 ISR + 主循环 poll_wdg 双保险喂狗) |
| 通信 | 无 RS485;TTL 调试口 9600 8N1(DBG 周期 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(sclk,APB1÷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高位判定为疑似环境变化后:- 冻结等待
ENV_RESYNC_WAIT=1000(10s,V4.26 自 60s 缩短;回摆清零) - 学习窗 200tick(2s)空闲均值 ×3 + settle 语义(漂移 ≤0.1%),预算
ENV_LEARN_MAX_TICKS=3000(30s)放弃 - 空闲原子替换 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 起默认,
(Origin−dlt)<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.8(2026-08-27):SENS=3 最高档 10→20、9→14——现场广告杆落杆误触发(落杆机械/电磁扰动越过 0.015% 阈值)
- ⚠ V2.11(2026-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.26,coil_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.29;V4.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,暗→暗 2520ms,60ms/步;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/120MHz(CAPVD 原始值节拍;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 500ms(SW4=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×10ms(coil_monitor,仅稳定无车判) |
| DBG 周期打印 | 2 s | 含 f_kHz + L_uH(C_eff 标定后) |
| 看门狗 | IWDT ≈1.64s(V2.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. 设计特点
- 混合节拍是本型号最大特色:检测(IIR/基线/判据)在 10ms 快循环,时序状态机(进入/离开/脉冲/超时)在 50ms tick——两者解耦,响应快且时序参数与 M1H 直接对齐
- 基线多重保护:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)+ V4.24 受控环境重校准(10s 等待学习、空闲原子替换、30s 放弃防死锁)——比参考型号多两层环境自适应
- 看门狗 V2.10 补齐:此前"无看门狗"是全产品线例外项;V2.10 新增 IWDT(超时≈1.64s,TMR15 ISR 计数 + 主循环 poll_wdg 双保险喂狗,对齐 154Pro WWDG 方案)——与 154Pro 的 WWDG 558ms / 960 的 IWDG 策略对齐
- 平坦性离开判定(专利 CN200910309382)曾用于解决大车多峰频率曲线误触发,是参考型号没有的——V2.9 起默认关闭(现场实测不理想),切回简单滞回 3 次防抖(与 154Pro 一致),代码保留可开
- 黄灯人机接口完整(V4.23~V4.26):断开快闪 > 环境学习/预判锁存 > 电感一长一短 > 断开史 N 短闪 > 灭——现场 10s 级可判故障类型
- 自诊断带校准(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.29COIL_CAL_C_NF=68 - 33nF(高频)档标定 34(旧板数据),0Ω 板待复测