PD136HA 车检器分析
型号: PD136HA | 固件: V3.14 | 日期: 2021-11-16 | 平台: HC32F005(华大半导体, Cortex-M0+)
原始代码: vd_detector/reference/PD136HA_V3.14-20211116/(工程名 PD132L-HD,含 user/main.c 应用层)
血统: PD132L 同源移植版(文件头明示"硬件使用 PD132L_V1.02,替换软件版本 PD132LA_V1.06")
交付对齐报告: docs/pd136ha-to-dld154v4b-delivery-alignment.md(PD136HA → DLD154V4B 替换评估,2026-09-11)
1. 平台与工程
| 项 |
值 |
| MCU |
HC32F005(注释标 HC32F003C4,工程编译目标 startup_hc32f005c6ua.o,SDK 板头为 C6PA——三者不完全一致,待硬件确认) |
| 时钟 |
外部晶振 XTH(8-16MHz 档),CLK_INIT 切 XTH、关内部 RCH;Delay_ms 注释 12MHz |
| 工具链 |
Keil MDK(uvprojx,JLink) |
| 工程名 |
PD132L-HD(直接沿用 PD132 工程名,Author=YSHE) |
| 版本史 |
V3.11 (2021-03-03) → V3.12 → V3.13 → V3.14 (2021-11-16) |
| V3.14 变更 |
① 去掉线圈环路小 LED 指示 ② 基线累计次数 99→255 ③ 灵敏度调整 ④ 延时档位 0/0.6/1.6/3s |
| 代码规模 |
main.c 832 行(CRLF/ASCII)+ 华大 SDK 驱动层 |
2. 硬件与 IO
| 引脚 |
功能 |
| P23 (AF3) |
TIM4_CHA 捕获输入(线圈频率入口) |
| P33 |
RLY2 继电器(存在输出 VD_FLAG) |
| P34 |
RLY1 继电器(脉冲输出:PLUS 模式=存在|离开,非 PLUS=离开脉冲) |
| P15 |
LEDA(有车指示/上电自检闪烁) |
| P35/P26/P25/P24 |
DIP5-8 拨码(延时 2bit / 脉冲模式 / 存在保持) |
| P03/P32 |
DIP9-10 拨码(灵敏度 2bit) |
| P01/P02 |
模拟口(XTH 晶振通道) |
双继电器架构(存在 + 脉冲分离),比 PD132L 多一路输出。
3. 频率测量(周期累积法,与 PD132L 同框架)
- 定时器:ADTIM4,PCLK0/8 预分频,锯齿波 0xFFFF,CHA 上升沿捕获
- 中断:
loop1_Xn = CapThis - CapLast(相邻上升沿计数差 = 振荡周期)
- 学习:
CapCnt > 100 后 loop1_LPCNT = 32768 / loop1_Xn(归一化基数 32768,与 PD132L/M1H 一致)
- 测量:累积
LPCNT 个周期得 CAPVD = CapSum(周期域自适应归一化)
- Xn 有效范围检查(
Xn>400 && Xn<2030)已被注释——V3.14 去掉环路指示 LED 时一并禁用,当前无频率范围过滤
- 时钟假设:PCLK0 = 12MHz(Delay_ms 注释)→ 捕获时钟 = 1.5MHz(待现场验证)
4. 滤波(IIR)
- 系数
Flt_Reg:INIT_VD 置 ALFA_CAP1=79,但主循环每次 CAP_OK 强制 Flt_Reg = ALFA_CAP2 = 64(SET_FLT 分支已注释)
- 实际生效 α = 64/256 = 0.25;79/64 双系数与 PD132L 同源
5. 基线
- 256 次滑动平均(V3.14 从 99 改 255,
>>8 即均值)——比 PD132L 的 100 次窗口更慢更稳
- 有车冻结基线(与 PD132L 一致)
5.1 时序速查(12MHz 假设,待现场验证)
| 项 |
值 |
公式 |
| 捕获时钟 |
1.5 MHz |
PCLK0/8(ADTIM4 Div8) |
| 测量节拍(CAPVD 更新) |
21.8 ms |
32768 / 1.5MHz |
| 基线更新周期 |
5.59 s |
256 窗 × 21.8ms |
| IIR τ |
87.4 ms |
21.8ms × 256/64 |
| 时序 tick |
5ms(注释,ARR=0xF159 反推需 12.36MHz 计数时钟,待验证) |
TIM1 PRS=4 |
| 状态机节拍 |
50ms |
TM1cnt≥10 |
| 喂狗周期 |
300ms |
Delay_300ms_cnt≥60 |
⚠ TIM1 ARR=0xF159(61785) 与"5ms"注释矛盾:12MHz/16=750kHz 时 tick=82.4ms。代码逻辑按 5ms 自洽(60 tick=300ms、10 tick=50ms),绝对时间待现场示波器验证。
6. 判据与灵敏度
- 单次判定,无进入/离开去抖计数(PD132L 的 IN_DELAY/OUT_DELAY 计数被注释掉)——PD136HA 判定更快但抗扰弱
- 滞回:进入用 SensTable,离开用 SensTable1(离开表更小 → 需恢复更多 → 滞回)
灵敏度表(× Origin >> 16,相对阈值 = 表值/65536)
| SensLevel |
DIP(SENS) |
进入表 SensTable |
Δf/f 进入 |
离开表 SensTable1 |
Δf/f 离开 |
| 0 |
0x00 |
162 |
0.247% |
81 |
0.124% |
| 1 |
0x20 |
81 |
0.124% |
54 |
0.082% |
| 2 |
0x10 |
54 |
0.082% |
32 |
0.049% |
| 3(默认) |
0x30 |
28 |
0.043% |
18 |
0.027% |
- 注释历史:
{300,162,81,40} → {216,108,54,26} → {300,162,81,40}/{108,54,32,18} → 当前 {162,81,54,28}/{81,54,32,18}
- 出厂默认 SensLevel=3(最灵敏档,Δf/f 0.043%)
- 与 PD132L {300,60,32,21} 量纲相同但数值全新(162 系)——V3.14"灵敏度调整"产物
7. 状态机与输出
- 延时档位
DELAY_TIME[4] = {0,12,32,60} tick(50ms) → 0 / 0.6s / 1.6s / 3s(V3.14 实测校准)
- 脉冲宽度
PLUSE_DELAY = 10 tick = 500ms
- 拨码 6 位连续 6 次采样一致才生效(swcnt>5 去抖)
8. 异常处理
| 场景 |
处理 |
| 无捕获(线圈断/无振荡) |
LOOP_OK=0 → FLAG_CUT=1 → 主循环 Reset_RstPeripheralAll() 整机复位 + LED 闪烁 |
| 存在保持超时 |
SET_HOLD(DIP8)=1 时进入置 VD_HOLD;HOLD_TIME=6000 tick×50ms=300s 仍占用 → 整机复位 |
| 环路锁定超时 |
SET_DLY≠3 时进入置 LC_HOLD;LC_HOLD_TIME=4800 tick×50ms=240s → 重新学习基线(INI_LOOP=1) |
| 灵敏度拨码变化 |
SENS 变化 → Reset_RstPeripheralAll() 复位 |
| 看门狗 |
WDT 820ms,主循环 300ms 喂狗 |
| 上电 |
1s 延时(线圈稳定)→ LED 闪 6 次(继电器自检)→ 开始检测 |
9. 参数速查
| 参数 |
值 |
| 归一化基数 |
32768 |
| 测量节拍 |
21.8ms(12MHz 假设) |
| 基线窗口 |
256(有车冻结) |
| IIR 系数 |
64(实际)/ 79(初始化) |
| 进入/离开表 |
{162,81,54,28} / {81,54,32,18} |
| 档位 Δf/f |
0.247%~0.043%(进入)、0.124%~0.027%(离开) |
| 时序 tick |
5ms 注释(待验证)/ 状态机 50ms |
| 看门狗 |
820ms / 300ms 喂 |
| HOLD / LC_HOLD |
300s / 240s(整机复位 / 重学基线) |
| 输出 |
RLY2 存在 + RLY1 脉冲(双继电器) |
10. 移植注意 / 血统关系
- 同源判定(PD132L → PD136HA):工程名
PD132L-HD;文件头 V3.11 明示"硬件使用 PD132L_V1.02、替换 PD132LA_V1.06";LPCNT=32768/Xn、IIR 79/64、有车冻结基线、相对阈值 >>16、HOLD=300s 全部继承
- 差异点(PD136HA 相对 PD132L 的独立改动):
- 灵敏度表 {162,...} 系 vs {300,...} 系——档位重排且全部重新标定
- 基线窗口 100 → 256(更慢更稳,抗干扰优先)
- 进入/离开单次判定(去掉 PD132L 的 6 次去抖)——响应更快但抗扰弱,配 256 窗基线补偿
- 双继电器输出(存在+脉冲分离)——PD132L 单路
- 延时档位 {0,12,32,60} vs PD132L {0,20,40,60} 注释——0.6s 档重定
- MCU:STM8S003 (8 位) → HC32F005 (M0+)——升级换代,捕获外设 TIM1→ADTIM4
- 与 M1H / DLD 线:同路不同源(周期累积法范式相同,细节独立)
- 归一化基数保持 32768 未动——换 MCU 未重定标(与 DLD 线 131072/524288 重定标路线相反),印证"同源移植可保留基数,重写才需重定标"