- 新增 3 行(关键):**捕获沿 / 周期口径** · **捕获时钟 f_cap** · **判据常数 C = 32·f_cap/边沿系数**
- ⭐ 判据常数揭示:PD132T(3MHz 双沿)与 PD136HA(1.5MHz 单沿)的 C 同为 4.8×10⁷
⇒ 两者覆盖同一线圈频段 23.4~118kHz;PD132L(1.2MHz 单沿)C=3.84×10⁷ ⇒ 窗口 0.8× 自洽
- ⚠ M1H 勘误(同类错误):原 1.0MHz/32.8ms 沿用了与 PD132T 同源、**已被 MA801 官方手册证伪**的
「T0 走 SYSCLK/4」捷径 ⇒ 正确 = **4MHz / 8.19ms**(基线 0.82s、τ 22~27ms、主节拍 60ms)
三条自洽反证:① AUXR=0xC0 无其他解释 ② HOLD 5500×60ms=330s(≈PD132T 300s;12T 读法 66min 不合理)
③ IN_DELAY=10 ≈0.6s 进入确认(12T 读法 7.2s 不合理)。**仍待 STC12C5202 手册 AUXR 位定义落锤**(已入「待补证」)
- ⚠ M1H 记录纠错:「进入确认 无」有误 —— 代码有 `IN_DELAY=10` / `OUT_DELAY=38`(≈0.6s / 2.28s,SET_DLY 可跳过)
- 其他更新:PD136HA 21.8→21.85ms、基线 +LC_HOLD 240s 重学、PD132T 双系数 τ 35.4/43.7ms、SENUP 离开阈值特例、
PD132T tick 升级为官方手册直证、同源行补「PD132T↔PD136HA 前端同构(÷32)」、
结论#3 改为按 `f_cap/边沿系数` 缩放、新增结论 #6(先算判据常数)/#7(异常策略差异)
- 同步修订 models/M1H/analysis.md(数值 + 时间常量 + 前后矛盾两处)
- 表格校验 0 异常(14 文件)
6.5 KiB
M1H 车检器分析
型号: M1H | 固件: V1.00 | 日期: 2008-12-02 | 平台: STC12C5202(8051 内核, Keil C51) 原始代码:
vd_detector/reference/M1H code/(M1H.c 379 行 + STARTUP.A51) 血缘:DLD154V4B 的直接祖先——灵敏度表 {216,108,36,10}、SENS=3-(sw&0x03)、ALFA_CAP1=79 与 V4B 完全同源。
1. 平台与工程
| 项 | 值 |
|---|---|
| MCU | STC12C5202(8051 内核,1T) |
| 工具链 | Keil C51(.lnp/.M51/STARTUP.A51) |
| 时钟 | AUXR=0xC0(内部时钟相关) |
| 看门狗 | WDT_CONTR(0x3C → ~1.05s);复位 ISP_CONTR=0x20(ISP 软复位) |
| 通信 | 无 |
2. 硬件资源
| 引脚 | 功能 |
|---|---|
| PCA CEX0 | 线圈捕获(CCAPM0=0x31 下降沿 + 中断) |
| P1.7 / P1.6 | SOLA / SOLB 双继电器 |
| P3.4 / P3.3 | LED_GREEN / LED_RED |
| P1.0 / P1.1 | SENS0 / SENS1 灵敏度拨码 |
| P1.2 | HOLD 有限存在拨码 |
| P1.5 | RELAY/PLUS 脉冲模式拨码 |
| P3.1 | DLY 延时拨码(TXD 复用) |
3. 检测算法
3.1 频率测量
- PCA 捕获(CCAPM0 下降沿→下降沿测周期);Timer0 8bit 自动重装 253 作 PCA 时钟源(CMOD=0x04)
- 每周期得
Xn;归一化LPCNT = 32768/Xn(BASE=2^15),累加 LPCNT 个周期得 CAPVD≈32768
3.2 滤波
- IIR:
Flt_Reg = ALFA_CAP1(79)固定(ALFA_CAP2=64 定义了但 main 恒用 79,无增强滤波开关) Δ×Flt_Reg>>8双向
3.3 基线
- 无车 100 次滑动平均:
ORG_CNT==100 → Origin = ORG_SUM/100 - 有车也跟踪(VD1_TASK 里 ORG 更新在 !VD_FLAG 分支,但注意 M1H 的 !VD_FLAG 分支是"无车"——与 PD132 一致)
3.4 进入/离开
- 进入:
CAPVD < Origin − dlt_ORG,dlt = Origin×SensTable[SensLevel]>>16 - 离开:
CAPVD > Origin − dlt_ORG,dlt = Origin×SensTable1[SensLevel]>>16(始终用当前档,无"固定最高档"逻辑)
3.5 灵敏度表(DLD154V4B 同源)
SensTable[4] = {216, 108, 36, 10} // 进入 (Δf/f: 0.33%…0.015%)
SensTable1[4] = {108, 72, 18, 9} // 离开(滞回)
SENS = 3-(swok&0x03):拨码反码——00→3(最高),11→0(最低)- 与 DLD154V4B 的
SENS = 3-(sw&0x03)、SensTable {216,108,36,10}逐字一致
3.6 状态机/时序
- Timer1 5ms tick → 50ms 主节拍(TM1cnt>10)
- 进入:FLAG_IN → INCNT > IN_DELAY(10=500ms) → 结束
- 离开:FLAG_OUT → SET_DLY ? 立即转 PLUSE : OUTCNT > OUT_DELAY(38=2.28s;⚠勘误) → FLAG_PLUSE
- 脉冲:PLUSECNT > PLUSE_DELAY(19=1.14s;⚠勘误)
- 有限存在:HOLD_TIME=5×1100=5500 tick=330s(×60ms)→ ISP 复位
- 继电器:SOLA = VD_FLAG|FLAG_OUT(存在);SOLB = SET_PLUS ? (VD_FLAG|FLAG_OUT) : FLAG_PLUSE
4. 拨码与配置
| 位 | 开关 | 含义 |
|---|---|---|
| swok bit7 (P3.1/TXD) | SET_DLY | 离开延时开关(ON=立即脉冲,OFF=2.28s 延时) |
| swok bit5 (P1.5) | SET_PLUS | 脉冲输出模式 |
| swok bit2 (P1.2) | SET_HOLD | 有限存在 |
| swok bit0-1 | SENS0/1 | 灵敏度(反码 3-(sw&0x03)) |
去抖:连续 6 次一致(swcnt>5)生效;上电 LED_GREEN 闪 8 次×500ms
5. 参数速查表
| 参数 | 值 |
|---|---|
| 归一化基数 | 32768 (2^15) |
| IIR 系数 | 79(固定) |
| 基线窗口 | 100 |
| 灵敏度表 | {216,108,36,10} / {108,72,18,9} |
| tick | 5.46ms → 60ms(T1 重装 0=65536 计数 ×11;⚠ 2026-09-11 勘误) |
| 进入延时 | 600ms(IN_DELAY=10 × 60ms;⚠ 勘误) |
| 离开延时 | 0 / 2.28s(OUT_DELAY=38 × 60ms;⚠ 勘误) |
| 脉冲宽 | 1.14s(PLUSE_DELAY=19 × 60ms;⚠ 勘误) |
| 有限存在 | 330s(HOLD_TIME=5500 × 60ms;⚠ 勘误) |
| 看门狗 | WDT_CONTR 1.05s + ISP_CONTR |
5.1 时序/速率/周期速查(2026-08-27 补)
2026-09-11 勘误:原推导沿用「T0 走 SYSCLK/4」捷径(与 PD132T 同源、已被 MA801 官方手册证伪)⇒ 旧值 1.0MHz / 32.8ms 作废。正确链条:
AUXR=0xC0(b7/b6 = T0X12/T1X12 ⇒ 定时器按 1 个时钟周期计数;STC 1T 系列同构)⇒ T0 = SYSCLK = 12MHz;TH0=TL0=253(8bit 自动重装,每 3 个时钟溢出)⇒ PCA 时钟 = 4 MHz。三条自洽反证:①AUXR=0xC0无其他解释;② T1 重装 0(65536 计数)⇒ 主节拍 5.46ms×11 = 60ms ⇒ HOLD 5500 tick = 330s(≈PD132T 的 300s 同设计目标;按 12T 读法为 66min,不合理);③IN_DELAY=10⇒ ≈0.6s 进入确认(12T 读法 7.2s,不合理)。⚠ 最终待 STC12C5202 手册AUXR位定义落锤(见docs/cross-model-comparison.md待补证)。晶振仍按 12MHz(与同族 PD132T / PD136HA 一致;本机无直接证据);公式:测量节拍 = BASE / 捕获时钟。
⚠ 另:本稿未记录前端(振荡级 / 整形 / 分频比)取证 ⇒ 判据常数
C=32·f_cap/边沿系数与线圈频段换算暂缺(若同 ÷32 则 C = 6.4×10⁷)。
| 量 | 公式/值 | 数值 |
|---|---|---|
| 捕获时钟 | Timer0(253) 溢出 = 12M/3(1T,见勘误) | 4 MHz(⚠ 勘误) |
| 测量节拍(CAPVD 更新) | 32768 / 4MHz | 8.19 ms(⚠ 勘误) |
| 基线更新周期 | 100 窗 × 8.19ms | 0.82 s(⚠ 勘误) |
| IIR 时间常数 τ | 8.19ms × 256/79 | 26.5 ms(精确 22.3;⚠ 勘误) |
| 进入响应 | 1 个测量节拍 + IN_DELAY 确认 | ~8.2 ms + 600 ms |
| 离开响应 | 1 节拍 + OUT_DELAY | ~8.2 ms / ~2.28 s |
| 上电稳定 | LED 闪 8 次×500ms + QT 学习 | ~4 s(⚠ 依赖 Delay_ms 实际粒度,待实测) |
6. 与 DLD154V4B 的血缘关系
| 特征 | M1H | DLD154V4B |
|---|---|---|
| 灵敏度表 | {216,108,36,10}/{108,72,18,9} | 同(V2.8 起 SENS=3 改 20/14) |
| 灵敏度映射 | SENS=3-(sw&0x03) | 同 |
| IIR | ALFA_CAP1=79 | 同(@10ms τ≈32ms) |
| 基线 | 100 次平均(有车也跟踪) | 500 窗(有车冻结) |
| 进入确认 | 有:IN_DELAY=10(≈0.6s);离开确认 OUT_DELAY=38(≈2.28s,SET_DLY 可跳过) |
3 次确认 |
| 斜率限幅 | 无 | 5% |
| 平台 | STC12C5202 (8051, ~12MHz) | AT32F421 (M4, 120MHz) |
| 归一化 | 32768 | 131072 (2^17) |
M1H 是整个 DLD 产品线算法血统的源头:V4B 保留了灵敏度表/映射/IIR 系数。⚠ 勘误:M1H 本身就有进入/离开确认机制(IN_DELAY=10≈600ms / OUT_DELAY=38≈2.28s,SET_DLY 可跳过),旧稿"进入确认 无"记录有误;V4B 侧的真正增量是更快 tick(10ms vs 60ms)+ 斜率限幅 5% + 500 窗有车冻结基线。