- docs/img/family-overview.{svg,png}(tools/plot_family_overview.py)
面板A 窗长/τ 条形;面板B 检测延迟 vs Δf/f(六型号按各自档0 判据);
归一化延迟表(@1.1× / @2× / @10× 判据)+ 进入确认与口径脚注
关键:@10×(强信号) 全部=1 窗 ⇒ 8.2/8.7/10.0/10.9/21.9/27.3ms;@1.1×(近阈值) 7~9 窗 ⇒ M1H 57ms ~ PD136HA 197ms
- docs/img/sens-alignment-pd132t-pd136ha.{svg,png}(tools/plot_sens_alignment.py)
四档 进入/离开 双段条形 + 同档偏差(−46%~+69%) + 最近档映射 + 换型 4 步 + 两端档无对应警示
- 待实测清单新增 ⑧ 弱信号复测(0.10% 车:PD132T 档1 ≈76ms 应检出 / PD136HA 档1 应检不到)
- 文档接入:cross-model-comparison.md 新增「六型号总览图」节;comparison §5.4 嵌入对齐图;measurement doc §10 加指引
- README tools 段补 3 个绘图脚本;表格校验 0 异常(16 文件)
31 KiB
PD132T ↔ PD136HA 双型号对比分析(同血统两代:8051 → Cortex-M0+)
2026-09-11 · 对比对象:PD132T V3.01(2021-06-23) ↔ PD136HA V3.14(2021-11-16) 定位:同血统对比(不是替换评估)。两者都源自 PD132L 系 —— PD132T = PD132L 的 8051 移植,PD136HA = PD132L 的 M0+ 重写移植。 依据:
models/PD132T/analysis.md、models/PD136HA/analysis.md、docs/hardware-loop-frontend-pd132t-vs-v4b.md、两份交付对齐报告,以及 2026-09-11 新增取证(MA801 官方手册 A10、PD132T 逻辑图纸像素取证、HC32F003C4 用户口径)。 口径纪律(见 §5):只比表值/65536(Δf/f),绝不比表值本身;档位是正索引(0 = 最低灵敏/大阈值)。
0. 结论摘要
| # | 维度 | 结论 | 判定 |
|---|---|---|---|
| 1 | 血统 | 同源 —— PD132T「实现与 PD132L_V1.09 一样的功能」;PD136HA 工程名 PD132L-HD、文件头「硬件使用 PD132L_V1.02,替换软件 PD132LA_V1.06」 |
✅ |
| 2 | 硬件前端 | 完全同构:线圈 → 9015 PNP×2 振荡 → CD4060 施密特整形 + ÷32(Q5) → MCU | ✅ |
| 3 | 线圈频段 | 两者覆盖同一频段 ≈23.4~118kHz —— PD132T 走「3MHz 双沿捕获(Xn = 半周期)」、PD136HA 走「1.5MHz 单沿(Xn = 整周期)」,两项差异恰好互相抵消:判据常数 C = 32·f_cap/边沿系数 同为 4.8×10⁷ ⇒ 这就是两者 Xn 窗口常量几乎逐字相同(406 |
⭐ 关键 |
| 4 | 归一化基数 | 同为 32768(换 MCU 未重定标)⇒ 相对阈值 表值/65536 可直接跨型号对比 |
✅ |
| 5 | 测量节拍(端到端时序图见 measurement-window-quantization.md §9) |
10.88ms → 21.76ms(100kHz 站点实测口径;标称上限 10.923/21.845ms)⇒ 每窗有效平均 1088 → 2176 个线圈周期(积分深度 ×2)|⚠ 节拍是区间:按站点线圈频率浮动 0 ~ −6.2%,深占压(Δf/f +5%)窗长 −4.8%(见 measurement-window-quantization.md) |
⚖️ 权衡 |
| 6 | 滤波 / 基线 | IIR τ:29.6 |
⚠ PD136HA 更稳更慢 |
| 7 | 判据强度 | 两者均为单次越线判定(无进入/离开确认计数)—— 响应快、抗单点扰动弱 | ⚖️ 相同 |
| 8 | 灵敏度表 | 重标定:进入 {300,60,32,21} → {162,81,54,28}。档位一一照搬会产生 −46%~+69% 偏差 ⇒ 跨代必须按 Δf/f 重新对齐 | ❌ 不可照搬档位 |
| 9 | 输出 / 时序 | 同为双继电器(存在 + 脉冲)、脉冲 500ms、HOLD 300s;PD136HA 新增延时档 0/0.6/1.6/3s 与 LC_HOLD 240s 重学基线 | ➕ 功能增强 |
| 10 | 异常处理 | PD132T:线圈断 → 继电器全断 + LED 快闪 6 次(不复位);PD136HA:无捕获 → 整机复位 + LED 闪、HOLD 超时 → 复位 | 🔁 策略不同 |
| 11 | 资源 | 8KB Flash / 256B RAM(MA801)→ 实测 ROM 11.1KB / RAM 696B(HC32F003C4 = 16KB/2KB)⇒ 代码量 +40% 反超 8KB,资源 ×2 | ✅ 代际升级 |
| 12 | 设计取向 | PD132T = 响应优先(快窗 / 快滤波 / 浅基线 / 故障不断流);PD136HA = 抗扰优先(慢窗 / 慢滤波 / 深基线 / 重试复位) | ⭐ 主线 |
1. 血统与平台
| 项 | PD132T | PD136HA |
|---|---|---|
| 固件版本 | V3.01(2021-06-23) | V3.14(2021-11-16;版本史 V3.11→V3.12→V3.13→V3.14) |
| 血统自述 | 文件头「实现与 PD132L_V1.09 一样的功能」 | 文件头「硬件使用 PD132L_V1.02,替换软件 PD132LA_V1.06」;工程名 PD132L-HD(Author = YSHE) |
| MCU | Megawin MA801(笙泉科技,1-T 80C51,8KB Flash / 256B RAM,max 25MHz;板上标记 MA801AS) | HC32F003C4(小华半导体 HDSC,Cortex-M0+,16KB Flash / 2KB RAM;⚠ 工程档位仍标 HC32F005C6PA) |
| 工具链 | Keil C51(.uvproj + STARTUP.A51) |
Keil MDK(.uvprojx + JLink) |
| 应用层规模 | main.c 458 行 |
main.c 832 行 + 华大 SDK 驱动层 |
| 固件占用 | 8KB 内(未记录精确值) | Code=11148 RO=268 RW=88 ZI=608 ⇒ ROM≈11.1KB / RAM≈696B |
| 系统时钟 | 外部 12MHz;AUXR=0xC0 ⇒ T0/T1 都按 1 个时钟周期计数(官方手册直证) |
外部 12MHz(用户确认);CLK_INIT() 直取 XTH,无 PLL / 无 HCLK_PRS·PCLK_PRS 分频 |
| 看门狗 | WDTCR(≈1.05s) |
WDT 820ms,主循环 300ms 喂狗 |
| 软复位手段 | ISPCR=0x20(ISP 软复位) |
Reset_RstPeripheralAll()(整机复位) |
| 调试口 | 无 UART | 无 UART(未见调试串口) |
同源的五条硬证据:LPCNT = 32768 / Xn 逐字一致 · IIR 79/64 双系数 · 有车冻结基线 · 相对阈值 ×表 >> 16 · HOLD 常量 6000(300s)。
代际的四条硬改动:捕获外设 PCA → ADTIM4 · 基线窗 100 → 256 · 灵敏度表全新标定 · 新增延时档与 LC_HOLD。
1.1 器件事实(2026-09-11 取证,均有出处)
| 器件 | 事实 | 证据 |
|---|---|---|
| MA801 | 1-T 80C51 / 8KB Flash / 256B RAM / max 25MHz | 官方手册 models/PD132T/MA801_MA802_Datasheet_A10.pdf(用户提供);USER/REG_MA801.H 首行 /* for Megawin MA801 */ |
| MA801 | AUXR(0x8EH) b7=T0X12、b6=T1X12(1 ⇒ SYSCLK);CMOD(0xD9H) CPS1:CPS0 = b2:b1,10 ⇒ 定时器0溢出 |
同上,手册 §14 / PCA 章节 |
| HC32F003C4 | 实际装机器件(此前文档按 SDK 头记 HC32F005) | 用户口径 2026-09-11;工程 <Device> 仍为 F005C6PA ⇒ 重编译前须改档位 |
| HC32F003C4 | 12MHz 晶振、PCLK0 = XTH、捕获 = PCLK0/8 = 1.5MHz | CLK_INIT() + AdtClkPClk0Div8;Keil <Cpu> … CLOCK(12000000) … 独立佐证 |
| 二者 | 前端都是 CD4060 ÷32(Q5) | PD132T 图纸逐脚像素扫描(476px 唯一引出)+ 用户口径「PD136 与 PD132 接 CD4060 的电路一样」 |
2. 硬件前端与信号链(⭐ 同构,且同一线圈频段)
2.1 信号链对照
PD132T :线圈(LP1) → 9015 PNP×2 振荡 → CD4060(U1) 施密特整形 + ÷32(Q5) → LP → P3.5 = CEX1/PCA 捕获
PD136HA:线圈 → 9015 PNP×2 振荡 → CD4060 施密特整形 + ÷32(Q5) → LP → P23(AF3) = ADTIM4_CHA
同构结论:两代前端的振荡级、整形级、分频比全部相同(用户口径「PD136 跟 PD132 接 CD4060 的电路是一样的」+ PD132T 图纸像素取证 ÷32/Q5)⇒ 唯一的硬件差异是 MCU。这是「纯软件换代、前端不动」的教科书案例。
2.2 ÷32 的取证链(两型号共用)
| 证据 | 内容 |
|---|---|
| 图纸像素扫描 | PD132T 逻辑图纸 800dpi 逐行游程扫描:CD4060 的 10 个 Q 输出中只有 Q5(pin5) 有线(476px,其余均 99px 空脚桩)→ 网络 LP |
| 交叉核对 | REG_MA801.H 中 sbit CEX1 = P3^5 ✓ 与图纸页1 MCU U2 pin9 = CEX1/T1/P3.5 完全吻合 |
| 固件互证 | CMOD = 0x04; //时钟源为定时器0溢出(作者原注)= MA801 手册 CPS 编码 10 ⇒ T0 溢出 ✓ |
| 用户口径 | PD136HA 与 PD132 的 CD4060 电路相同 ⇒ PD136HA 也是 ÷32 |
2.3 ⭐ Xn 窗口常量为什么几乎逐字相同?(同一线圈频段)
两型号的 Xn 窗口常量分别是 406~2050(PD132T)与 400~2030(PD136HA)—— 差异 <2%。但两者的捕获时钟差 2×(3MHz vs 1.5MHz)。原因在于触发沿约定也差 2×,两者恰好抵消:
| 型号 | 捕获沿 | Xn 物理含义 | 判据关系式 | 判据常数 C |
|---|---|---|---|---|
| PD132T | CCAPM1=0x31 ⇒ 双沿 |
半周期 | Xn = 32·f_cap / (2·f_coil) |
32 × 3.0MHz / 2 = 4.8×10⁷ |
| PD136HA | AdtHwTrigCHxARise ⇒ 单沿 |
整周期 | Xn = 32·f_cap / f_coil |
32 × 1.5MHz / 1 = 4.8×10⁷ |
| (PD132L 参照) | 单沿(与 PD136HA 同框架,推断) | 整周期 | 同上 | 32 × 1.2MHz / 1 = 3.84×10⁷ |
⇒ 两型号判据常数完全相同(4.8×10⁷),故:
| 型号 | Xn 窗口 | 解出的线圈频段 |
|---|---|---|
| PD132T | 406 ~ 2050 | 23.4 ~ 118.2 kHz |
| PD136HA | 400 ~ 2030 | 23.6 ~ 120.0 kHz |
| (PD132L) | 320 ~ 1620 | 23.7 ~ 120.0 kHz(常数 0.8× ⇒ 窗口 0.8× ✓ 自洽) |
结论:PD132T 与 PD136HA 支持的是同一个线圈频段(≈23.4~118kHz),而不是"高频档 / 低频档"两种。移植时窗口常量几乎不用改,正是因为 f_cap × 2(双沿) 与 f_cap ÷ 2(单沿) 的比值恰好相消。
⚠ 本文修正一处旧口径:2026-09-11 早前在
hardware-loop-frontend-pd132t-vs-v4b.md§8 与对齐报告 §2.3 写的「两型号线圈频段差 2×」有误(把 PD132T 的半周期口径与 PD136HA 的整周期口径直接相比所致)。正确结论是本节的同一频段。现场用示波器量一次线圈频率即可最终确认(若实测落在 23~118kHz ✔)。说明:PD132L 侧的"单沿"是由「其窗口 320~1620 = PD136HA 的 0.8× = 时钟比 1.2/1.5」推断,非源码直证(PD132L 源码的捕获沿配置未在本轮核)。
2.4 量化等效与抗扰(两代相同的部分)
- 两代都是 CD4060 施密特整形 + ÷32 硬件分频平均 ⇒ 一个 Xn 内部已平均 32 个原始线圈周期,且整形后方波过零点几乎不受幅值漂移影响 ⇒ 雨天 / 金属路面 / 底盘高度变化下的幅值漂移免疫,两代共有(这一点在替换到 DLD154V4B 直连振荡时会丢失,见前端专项 §2.5)。
- 分辨率:两者累积域都是 32768 计数 ⇒ Δf/f = 表值/65536 口径一致;绝对码值分辨率相同(差异只在窗口长度 ⇒ 平均深度)。
3. 频率测量与归一化(⭐ 差异集中区)
3.1 捕获外设与流程
| 项 | PD132T(MA801) | PD136HA(HC32F003C4) |
|---|---|---|
| 捕获外设 | PCA 模块 1(CCAPM1=0x31:CAPP|CAPN 双沿 + ECCF 中断) |
ADTIM4 通道 A(AdtHwTrigCHxARise 上升沿捕获) |
| 捕获时钟源 | PCA 时钟 = T0 溢出(CMOD=0x04)→ T0 8bit 自动重装 252(每 4 个 SYSCLK 溢出) |
ADTIM4 计数时钟 = PCLK0/8 |
| 捕获时钟 | 3 MHz(= 12MHz ÷ 4,官方手册直证) | 1.5 MHz(= 12MHz ÷ 8,源码 + Keil 时钟设置) |
| 中断 | CAP1_isr() interrupt 6 |
Tim4_IRQHandler |
| 学习 | loop1_LPCNT = 32768 / Xn(CapCnt > 100 后,算一次即冻结) |
同(同条件冻结) |
| 测量 | 累积 LPCNT 个 Xn ⇒ CAPVD |
同(CapSum ⇒ CAPVD) |
| 频率范围过滤 | ✅ 保留:406 < Xn < 2050 |
❌ 已注释禁用(V3.14 去掉环路指示 LED 时一并屏蔽)⇒ 当前无频率过滤 |
实现同源、外设不同:算法是同一套"周期累积法",PD136HA 只是把 PCA 换成 M0+ 的 ADTIM4。8051 版用
CCAPM1双沿是为了在 PCA 上"每半周期就有一次比较/捕获机会"(半个周期的分辨率换 2× 有效时钟);M0+ 版没必要做这个技巧,直接单沿整周期。
3.2 时序量对照
| 量 | 公式 | PD132T | PD136HA | 比值 |
|---|---|---|---|---|
| 捕获时钟 | — | 3 MHz | 1.5 MHz | PD132T 快 2× |
| 测量节拍(CAPVD 更新) | ⌊32768/Xn₀⌋·Xn₁ / f_cap |
10.88 ms(100kHz 站点) | 21.76 ms | PD136HA 慢 2× |
| 每窗有效平均的线圈周期数 | 窗长(tick) / 32 × 边沿系数(@100kHz 站点) |
≈ 1088 | ≈ 2176 | PD136HA 深 2× |
| 状态机节拍 | — | 50ms(T1 5ms × 10) | 50ms(TIM1 × 10) | 相同 |
| 上电稳定 | — | 750ms 延时 + 学习 | 1s 延时 + LED 自检闪 6 次 + 学习 | 接近 |
⚠ PD136HA 的
TIM1 ARR=0xF159(61785) 与注释「5ms」不自洽(按 12MHz/16 反推为 82.4ms),代码逻辑按 5ms 自洽(60 tick = 300ms 喂狗、10 tick = 50ms)⇒ 绝对时间待现场示波器验证(PD132T 侧 T1 60000 计数 = 5ms 已由 ISR 注释 + 手册定时器率直证)。
3.3 归一化与口径
- 两者
dlt = Origin × 表值 >> 16,Origin来自学习/基线 ⇒ 相对阈值 = 表值/65536(Δf/f),与 BASE、与捕获时钟、与 ÷32 全部无关。 - BASE 都是 32768(家族内"同源移植不重定标"的路线;DLD 线则是 131072/524288 重定标路线)。
- ⇒ 跨型号灵敏度可以直接用百分比对比(§5 的做法)。
4. 滤波与基线(PD136HA 明显更"重")
4.1 一次 IIR 对比
| 项 | PD132T | PD136HA |
|---|---|---|
| 结构 | Δ×α >> 8 双向(与 PD132L 一致) |
Δ×α >> 8 单向累加(同框架) |
| 系数 | 79(FLT 拨码=快)/ 64(FLT 拨码=增强滤波) | 初始化 79,主循环每次强制 64(79 分支 SET_FLT 已注释)⇒ 实际恒 α=64 |
| 拨码可调 | ✅ FLT 位可切 79/64 | ❌ 不可调(增强滤波档位事实上被移除) |
τ(产品线口径 T×256/α) |
35.4ms(α79)/ 43.7ms(α64) | 87.4ms(α64) |
τ(精确 −T/ln(1−α/256)) |
29.6ms / 38.0ms | 76.0ms |
| 节拍 | 10.92ms | 21.85ms |
⇒ PD136HA 的滤波时间常数是 PD132T 的 2~3 倍(慢窗 + 更慢系数 + 系数不可调)。
4.2 基线
| 项 | PD132T | PD136HA |
|---|---|---|
| 窗口 | 100 次平均 | 256 次平均(V3.14:99 → 255,>>8 即均值) |
| 更新周期 | 1.09 s | 5.59 s |
| 有车冻结 | ✅ 相同 | ✅ 相同 |
| 有车期基线行为 | 冻结 | 冻结(+ LC_HOLD 240s 超时后强制重学,见 §7) |
4.3 有效积分深度(判据的"抗噪储备")
| 型号 | 每窗平均线圈周期 | 滤波 τ | 基线窗 | 综合取向 |
|---|---|---|---|---|
| PD132T | ≈1092 | 29.6~38 ms | 100 | 响应优先:约 1.1~1.5s 内完成基线跟踪,进/出响应 ~11ms 量级 |
| PD136HA | ≈2185 | 76~87 ms | 256 | 抗扰优先:5.6s 基线,进/出响应 ~22ms 量级 + 更重滤波 |
两者都没有进入/离开确认计数(PD132L 的
IN_DELAY/OUT_DELAY在两条线上均被注释)⇒ 抗单点扰动全靠 IIR + 基线,PD136HA 的"更稳"来自本节三项(窗 / 滤波 / 基线)叠加,代价是响应变慢约 2×。
5. 判据与灵敏度(⚠ 不可按档位号照搬)
5.1 判据结构(两型号完全同构)
// 两者相同:进入 = CAPVD 下穿 Origin−dlt;离开 = 回升越 Origin−dlt(离开表)
loop1_dlt_ORG = (Origin * SensTable [SensLevel]) >> 16; // 进入表
loop1_dlt_ORG = (Origin * SensTable1[SensLevel]) >> 16; // 离开表
- 相对阈值 = 表值 / 65536(
Δf/f),与 BASE(都是 32768)、与捕获时钟、与 ÷32 全无关 ⇒ 两型号百分比可直接比。 - 档位是正索引:
SensTable[0]= 最大阈值 = 最低灵敏,[3]= 最高灵敏。 - 两者都是单次越线判定,无进入/离开确认计数(§4.3)。
5.2 灵敏度表对照(进入 / 离开)
| 档 | DIP(SENS) | PD132T 进入 表值 → Δf/f | PD136HA 进入 表值 → Δf/f | PD136HA vs PD132T |
|---|---|---|---|---|
| 0 | 0x00 | 300 → 0.4578% | 162 → 0.2472% | −46.0%(更灵敏) |
| 1 | 0x20 | 60 → 0.0916% | 81 → 0.1236% | +35.0%(更钝) |
| 2 | 0x10 | 32 → 0.0488% | 54 → 0.0824% | +68.8%(更钝) |
| 3(默认) | 0x30 | 21 → 0.0320% | 28 → 0.0427% | +33.3%(更钝) |
| 档 | PD132T 离开 表值 → Δf/f | PD136HA 离开 表值 → Δf/f | PD136HA vs PD132T |
|---|---|---|---|
| 0 | 60 → 0.0916% | 81 → 0.1236% | +35.0% |
| 1 | 32 → 0.0488% | 54 → 0.0824% | +68.8% |
| 2 | 21 → 0.0320% | 32 → 0.0488% | +52.4% |
| 3 | 14 → 0.0214% | 18 → 0.0275% | +28.6% |
读法:PD136HA 的进入表整体比 PD132T 钝 33~69%(除档 0,它反而更灵敏 46%);离开表则整体更钝 29~69%。⇒ 两代的灵敏度标定不是简单缩放,是重新设计(PD136HA 档 0 拉宽、档 1~3 收紧,呈"两段式")。
5.3 滞回带对照
| 档 | PD132T 滞回带 (入−出)/入 |
PD136HA 滞回带 | 备注 |
|---|---|---|---|
| 0 | 80.0% | 50.0% | PD132T 档 0 的离开线极低(表 60 vs 300)⇒ 保持极"黏" |
| 1 | 46.7% | 33.3% | |
| 2 | 34.4% | 40.7% | |
| 3 | 33.3% | 35.7% | 两代在最高灵敏档基本一致(≈34~36%) |
5.4 ⭐ 跨代档位换算表(照搬档位号 = 错)
(矢量版 docs/img/sens-alignment-pd132t-pd136ha.svg;生成脚本 tools/plot_sens_alignment.py。图中深色段 = 离开阈值、浅色段 = 进入阈值,二者之差即回差带;右侧「同档偏差」= 同档位号一对一映射的 (H−T)/T)
PD132T → PD136HA(按 Δf/f 找最近档)
| PD132T 档 | 进入 Δf/f | 最近的 PD136HA 档 | 进入偏差 | 离开偏差 | 可用性 |
|---|---|---|---|---|---|
| 0 | 0.4578% | 0(0.2472%) | −46.0% | +35.0% | ⚠ 无对应档(PD136HA 最钝档仍仅 PD132T 档 0 的一半阈值) |
| 1 | 0.0916% | 2(0.0824%) | −10.0% | 0.0% | ✅ 最佳匹配 |
| 2 | 0.0488% | 3(0.0427%) | −12.5% | −14.3% | ⚠ 可用(略钝) |
| 3 | 0.0320% | 3(0.0427%) | +33.3% | +28.6% | ⚠ 只能到 PD136HA 最高灵敏档(仍比 PD132T 钝 1/3) |
PD136HA → PD132T(反向):档 0→1(−63%,严重不匹配)· 档 1→1(−26%)· 档 2→1(+11%)· 档 3→2(+14%)⇒ PD136HA 的钝档在 PD132T 上没有对应(PD132T 最钝档 0.4578% 也比它钝得多)。
结论:
- 档位号绝对不能照搬 —— 一一映射会产生 −46%~+69% 的相对阈值偏差(相当于灵敏度差近 2 倍)。
- 两代的有效公共区间只有中间两档(PD132T 档 1/2 ↔ PD136HA 档 2/3)。
- 跨代迁移必须:先按现场原档位的 Δf/f 查出目标档,再现场复测(与 DLD154V4B 那套"档0 需复测"的结论同源:档 0/最高灵敏档永远是风险区)。
5.5 响应速度对比(图 + 数值)
(矢量版 docs/img/response-compare-pd132t-pd136ha.svg;生成脚本 tools/plot_response_compare.py,曲线按本节公式真算)
| 车辆信号 Δf/f | PD132T(窗 10.880ms / α79) | PD136HA(窗 21.760ms / α64) | 比值 |
|---|---|---|---|
| +0.5%(大型车完全占据) | 10.9 ms(第 1 窗) | 21.8 ms(第 1 窗) | 2.0× |
| +0.15%(中型车 / 边角占压) | 32.6 ms(第 3 窗) | 152.3 ms(第 7 窗) | 4.7× |
| +0.10% | 76.2 ms(第 7 窗) | ❌ 档1 检不到(判据 0.1236% > 0.10%) | — |
- 判据:
CAPVD_n = Δf/f·[1−(1−α/256)^n] ≥ 档位判据(n = 第 n 次窗更新)⇒ 延迟 =(n+1)·T_win;图 B 的平坦段 = 1 窗下限、陡升段 = τ 主导- 大信号由「窗长」决定(2.0× 全部来自 21.760/10.880);近阈值由「τ」决定(PD136HA 窗 2× 且 τ 2.56× ⇒ ≈4.7×)
- ⚠ 同一档位号的判据本身不同(PD132T 档1 = 0.0916% vs PD136HA 档1 = 0.1236%,差 +35%):0.10% 的信号在 PD132T 档1 能检(76 ms),在 PD136HA 档1 完全检不到 ⇒ 与 §5.4 的档位偏差结论互为印证 —— 换型必须按 Δf/f 重标定档位,不能照搬档位号
- 两处未计入:输出级 50 ms 主节拍量化(继电器实际动作再加 ≤50 ms)、无进入确认(两者均为单次越线判定)
6. 状态机、输出与时序
6.1 数据流(两代同构)
捕获中断(PCA / ADTIM4) → Xn → 累积 LPCNT 个 → CAPVD(=CAP_OK)
↓ 主循环
IIR → 基线(无车时更新/有车冻结) → 进入/离开判据 → VD_FLAG / FLAG_OUT
↓ 50ms 状态机
输出映射(继电器 / 脉冲)
6.2 输出对照
| 项 | PD132T | PD136HA |
|---|---|---|
| 继电器 | 双路:P1.6 = SOLA(脉冲/存在)、P1.7 = SOLB(存在) | 双路:P33 = RLY2(存在 VD_FLAG)、P34 = RLY1(脉冲) |
| 脉冲宽度 | 500ms | 500ms |
| 脉冲模式拨码 | PLUS(P1.4):标贴 ON ⇒ 离开脉冲;标贴 OFF ⇒ 进入脉冲 |
SET_PLUS(DIP):=1 ⇒ 存在输出(VD_FLAG|FLAG_OUT);=0 ⇒ 离开脉冲 |
| 延时档 | ❌ 无 | ✅ {0, 0.6, 1.6, 3.0}s(DELAY_TIME[4]={0,12,32,60} × 50ms tick) |
| LED | LED_DET(检测)+ LED_PWR(新增,PD132L 无) | LEDA(有车指示 + 上电自检闪 6 次);V3.14 移除环路小 LED |
| 拨码去抖 | 连续 6 次一致生效 | 连续 6 次采样一致(swcnt>5) |
| 灵敏度变更 | → ISPCR=0x20 软复位 |
→ Reset_RstPeripheralAll() 复位 |
功能差异要点:PD136HA 的「脉冲延时档」是 PD132T 完全没有的能力(0.6/1.6/3s 可配)——若现场 PD132T 靠外部控制器做延时,迁到 PD136HA 后可由检测器自身承担;反之 PD136HA → PD132T 迁移会丢失该功能。
7. 超时与异常处理(策略不同:降级维持 vs 主动复位)
| 场景 | PD132T | PD136HA |
|---|---|---|
| 线圈断 / 无捕获 | 继电器全断 + LED 快闪 6 次(降级告警,等线圈恢复) | LOOP_OK=0 → FLAG_CUT → 整机复位 + LED 闪(主动重启自愈) |
| 存在保持超时 | HOLD_TIME = 6000 × 50ms = **300s** → ISPCR=0x20 软复位 |
HOLD_TIME = 6000 × 50ms = **300s** → 整机复位 |
| 环路锁定 / 长期占压 | 无独立机制 | LC_HOLD_TIME = 4800 × 50ms = **240s** → 重新学习基线(不整机复位) |
| 灵敏度拨码变化 | 生效后软复位 | 复位 |
| 看门狗 | WDTCR ≈ 1.05s |
WDT 820ms,主循环 300ms 喂狗 |
| 上电 | 750ms 延时(线圈稳定)→ 学习 | 1s 延时 + LED 自检闪 6 次(继电器自检)→ 学习 |
评述:
- PD132T 偏"降级维持":线圈断只断继电器 + 闪灯告警,不死机 —— 对"线圈临时被金属杂物短路/振荡受扰"的现场更友好(扰动过去即恢复)。
- PD136HA 偏"主动自愈":无捕获直接整机复位,且多了
LC_HOLD240s 重学基线(针对长期占压后基线漂移);代价是复位本身会中断输出,道闸场景下必须配合控制器侧超时。 - 两者 HOLD 常量逐字同源(6000 tick × 50ms = 300s)—— 印证"同源移植保留超时语义"。
8. 拨码与配置迁移(不可"位置照搬")
| 项 | PD132T | PD136HA |
|---|---|---|
| 拨码引脚 | P1.0/P1.1 = SENS0/1;P1.2 = SENUP;P1.3 = FLT;P1.4 = PLUS;P1.5 = HOLD | P35/P26/P25/P24 = DIP5 |
| 电气极性 | 低有效:标贴 ON = 电平 0(2026-08-28 用户确认,电路反相) | 引脚上拉 + DIP 接地 ⇒ ON = 读出 0(与 PD132L / DLD154V4B 同构) |
| 灵敏度编码 | 直接二进制 0~3(P1.0/P1.1) | 组合编码(表见 §5.2 的 DIP(SENS) 列:0x00→档0 / 0x20→档1 / 0x10→档2 / 0x30→档3) |
| 增强滤波 | ✅ FLT 位切 79/64 |
❌ 无此位(恒 α=64,79 分支已注释) |
| 脉冲模式 | PLUS:ON ⇒ 离开脉冲 / OFF ⇒ 进入脉冲 |
SET_PLUS:=1 ⇒ 存在输出 / =0 ⇒ 离开脉冲 |
| 存在保持 | HOLD 位 |
DIP8(SET_HOLD) |
| 延时档 | ❌ 无 | ✅ DIP 2bit ⇒ 0 / 0.6 / 1.6 / 3.0s |
| 灵敏度离开阈值特例 | SENUP 位:标贴 ON ⇒ 离开恒 14;OFF ⇒ 分档 |
无此特例(离开恒分档) |
迁移结论(双向都不可以位置照搬):
- 灵敏度编码方式不同(直接编码 vs DIP9/10 组合);
- PD132T 的
FLT(增强滤波)在 PD136HA 没有对应(功能被移除)⇒ 现场若依赖"增强滤波档",迁到 PD136HA 后滤波特性是固定值; PLUS语义不同("进入脉冲" vs "存在输出")—— 同名不同义,最易踩;- PD132T 的
SENUP(离开恒 14 的特例)在 PD136HA 无对应; - 唯一"可搬"的是灵敏度档位所表达的 Δf/f 目标(§5.4 换算表),不是拨码位置本身。
9. 两代设计取向解读(为什么这么改)
- 硬件前端一个字没动(同 ÷32、同振荡级、同线圈)⇒ 换代是纯主板/软件升级,现场线圈与接线可原样沿用(换型成本最低的一类改动)。⚠ 前提是线圈电感在检测器可工作范围内(两条线都无 V4B 那种电感四级质量门)。
- 判据口径一个字没动:
BASE 32768/表值 >> 16/LPCNT = 32768/Xn/ 有车冻结基线 /HOLD=300s全部继承 ⇒ 现场"相对阈值百分比"的经验可以跨代沿用(这正是 §5 能用 Δf/f 直接对比的原因)。 - 参数全部重标定:灵敏度四档、IIR 系数、基线窗 —— 说明"移植 ≠ 直接抄参数",PD136HA 是带标定的重写(§5.4 的 −46%~+69% 偏差就是标定差异的量化证据)。
- 8051 的技巧在 M0+ 上不再需要:PD132T 的「3MHz 双沿捕获」用半周期分辨率换 2× 有效时钟;PD136HA 直接用硬件单沿捕获 + 更低时钟(1.5MHz)实现等价的时间分辨率(判据常数 C 相同 ⇒ 同一线圈频段)。这是"用硬件能力替代软件技巧"的典型。
- 取向从"响应优先"转向"抗扰优先"(同一代内 V3.11→V3.14 的改动也朝这个方向:基线 99→255):窗 2×、τ 2~3×、基线 2.56×,代价是进/出响应慢约 2×、最小可检占压由 ~11ms 级变为 ~22ms 级(高速车场景需注意)。
- 异常策略从"降级维持"转向"主动自愈"(整机复位 / 重学基线)—— 与 M0+ 的复位与外设重置能力更强、以及"无人值守"部署需求相符;但复位会中断输出,道闸/会车场景需在控制器侧做超时兜底。
10. 风险与待验证清单
- ① PD132T「双沿 ⇒ 半周期」的现场确认:示波器量线圈频率(或量 P23),确认落在 23.4~118kHz;若实测为另外一档(46.8~236.6kHz)则说明 ISR 另有整周判据 —— 只影响 §2.3 的绝对频段表述,不影响 Δf/f 口径。
- ② PD136HA 的 TIM1 节拍:
ARR=0xF159(61785) 与注释「5ms」不自洽(12MHz/16 反推 82.4ms)⇒ 现场示波器验证 5ms/50ms/300ms 三级节拍。若实际非 5ms,则 §6/§7 的秒数(300s/240s/500ms)需按真实 tick 重算(常量同源,秒数授权于 tick)。 - ③ PD136HA 工程器件档位:
.uvprojx仍为HC32F005C6PA,实际芯片HC32F003C4⇒ 重编译前改正档位(实测 ROM 11.1KB < 16KB ✓ 容量无碍)。 - ④ 频率过滤缺失的影响:PD136HA 的
400 < Xn < 2030已注释禁用 ⇒ 线圈异常时不会走"数值超窗"分支,而是走LOOP_OK/FLAG_CUT→ 整机复位;PD132T 保留过滤。异常线圈现场的表现差异需实测(复位 vs 保持输出)。 - ⑤ PD132L 捕获沿:§2.3 表中 PD132L 的"单沿"是推断(由窗口比 0.8× = 时钟比推得),未读其源码的捕获配置 ⇒ 需补证。
- ⑥ 端点档复测:PD132T 档 0(0.4578%)与 PD136HA 档 0(0.2472%)在两代之间无对应档;现场若停在这两个档位,换型必须专项复测。
⑦ 旧文件勘误✅ 已落地(同日提交):docs/hardware-loop-frontend-pd132t-vs-v4b.md§8 与docs/pd136ha-to-dld154v4b-delivery-alignment.md§2.3 中「两型号线圈频段差 2×」已改为「同一频段 ≈23.4~118kHz」(见 §2.3)。- ⑧ 弱信号复测(§5.5,2026-09-11 新增):用弱信号车(目标 Δf/f ≈ 0.10%)验证预测 —— PD132T 档1 应 ≈76 ms 检出,PD136HA 档1 应「检不到」(其档1 判据 0.1236% 比 PD132T 的 0.0916% 钝 35%)。若现场确证,换型文档须写明:PD136HA 需上调一档(档2 = 0.0824%)才能覆盖同类弱信号车;同时用强/弱两种车各测 3 次,记录"判据越线 → 继电器动作"的实测时间,与 §5.5 的
(n+1)·窗长 + ≤50 ms预测对照。
11. 结论与可复用经验
11.1 一句话结论
PD132T 与 PD136HA 是"同一前端、同一判据口径、不同代 MCU + 重新标定参数"的两代产品:线圈可原样沿用、阈值百分比口径可跨代沿用,但灵敏度档位、滤波、基线、异常策略全部需要按 Δf/f 与现场行为重新对齐。
11.2 同源移植的"保留项 / 重标定项"清单(可直接套用到下一次)
| 类别 | 内容 | 证据 |
|---|---|---|
| 保留 | 硬件前端(÷32 + 施密特整形 + 振荡级) | §2.1 |
| 保留 | 判据常数 C(⇒ 同一线圈频段) | §2.3(4.8×10⁷) |
| 保留 | BASE=32768 / 表值>>16 / LPCNT=32768/Xn / 有车冻结基线 |
§3.3、§4.2 |
| 保留 | 脉冲 500ms / HOLD 6000 tick(300s)/ 50ms 状态机节拍 / 拨码 6 次去抖 | §6、§7 |
| 重标定 | 灵敏度四档(进入 + 离开,−46%~+69% 偏差) | §5.2 |
| 重标定 | IIR 系数与基线深度(τ 2~3×、窗 2.56×) | §4 |
| 重定 | 捕获外设与时钟(PCA 3MHz 双沿 → ADTIM4 1.5MHz 单沿) | §3.1 |
| 重设 | 异常策略(降级维持 → 主动自愈)、延时档、FLT 档移除 | §6、§7、§8 |
11.3 方法学沉淀(跨型号对比的固定四步)
- 算判据常数
C = 32·f_cap/边沿系数→ 立刻判断两型号是否覆盖同一线圈频段(本轮正是这一步发现了"窗口常量几乎相同"的真正原因); - 只比
表值/65536(Δf/f),并给出档位换算表 + 偏差%(禁止按档位号照搬); - 比时间维:测量节拍 × IIR τ × 基线窗 ⇒ 得"抗噪储备"与"响应延迟"的权衡;
- 比异常策略:降级维持 vs 主动复位 —— 这一项对道闸/会车现场的影响往往大于灵敏度差异本身。
附录 A:证据索引
| 结论 | 出处 |
|---|---|
PD132T = MA801,1-T / 8KB / 256B,AUXR b7=T0X12、CMOD CPS=b2:b1 |
models/PD132T/MA801_MA802_Datasheet_A10.pdf(官方手册,用户 2026-09-11 提供)+ USER/REG_MA801.H |
| ÷32(Q5) | models/PD132T/PD132T.A_Ver2.01-20210609_Logic.pdf 逐脚像素扫描 + 用户口径「PD136 与 PD132 的 CD4060 电路相同」 |
| PD132T 捕获 3MHz / 节拍 10.92ms | USER/main.c:281-290(CMOD=0x04/TH0=252/TMOD=0x12)+ AUXR=0xC0(:359) + 手册 §14 |
| PD132T 双沿捕获 / Xn=半周期 | USER/main.c:283(CCAPM1=0x31)+ ISR 相邻捕获差 |
| PD136HA = HC32F003C4 / 12MHz 晶振 / PCLK0/8 | 用户口径 2026-09-11 + user/main.c:507-523(CLK_INIT) + INIT_Timer4()(AdtClkPClk0Div8) + Keil <Cpu> CLOCK(12000000) |
| PD136HA 单沿捕获 / 窗 400~2030(已注释) | user/main.c Tim4_IRQHandler + Adt_CfgHwCaptureA(AdtHwTrigCHxARise) |
| PD136HA 基线 256 / α 恒 64 / 延时档 / HOLD·LC_HOLD | user/main.c(V3.14) |
| 两型号灵敏度表与 Δf/f | models/PD132T/analysis.md §3.5、models/PD136HA/analysis.md §6 |
附录 B:相关文档
- 前端专项:
docs/hardware-loop-frontend-pd132t-vs-v4b.md - 交付对齐(替换评估):
docs/pd136ha-to-dld154v4b-delivery-alignment.md、docs/pd132t-to-v4b-delivery-alignment.md - 跨型号总表:
docs/cross-model-comparison.md - 单型号分析:
models/PD132T/analysis.md、models/PD136HA/analysis.md

