Files
vd-analysis/docs/pd132t-vs-pd136ha-comparison.md
T
wangfq fc243c010c docs(measurement): 测量节拍是区间 —— 周期累积法的窗口量化(用户提出)+ 全仓回灌
- 新文件 docs/measurement-window-quantization.md:窗长 = ⌊BASE/Xn₀⌋·Xn₁ tick(LPCNT 整数除法 + 学习后冻结)
  · 标称 BASE/f_cap(10.92/21.85ms)是【上限】,实际 = 标称 ×(BASE−r₀)/BASE × f₀/f_now
  · 站点偏差:100kHz −0.39%(PD132T 10.88ms / PD136HA 21.76ms)、60kHz −2.34%、带内最差 −6.20%(Xn₀=2049)
  · 深占压(频偏 −5%)窗再 +5.3%;"检测阈值"量级(≤0.46%)可忽略
  ·  Δf/f 口径不受影响:Value/Origin = Xn₁/Xn₀ 精确(余数完全约掉)—— 灵敏度/交付结论全部保持
  · ⚠ 新发现:loop1_LPCNT 为 INT8U(≤255),同族靠 406<Xn<2050 保证 ≤80;
    PD136HA 该窗口已注释 ⇒ Xn<129 时 8 位截断 ⇒ 异常线圈可能报"堵车"而非"故障"(建议恢复或加钳位)
- 新增 tools/window_calc.py(内置六型号参数,实跑验证文档全部数字)
- 回灌:cross-model 总表(新增脚注 + 测频路线说明 + 待补证1条)、PD132T↔PD136HA 对比报告(§0/§3.1/§3.2/§4.3)、
  两份交付对齐报告("测量窗列 = 标称上限" + 区间脚注)、filter-coefficient 专题(M1H 8.19ms 勘误 + τ 复算 + 脚注)、
  README(新增"专题文档"段 + 目录树)
- 表格校验 0 异常
2026-09-11 09:25:49 +08:00

377 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PD132T ↔ PD136HA 双型号对比分析(同血统两代:8051 → Cortex-M0+
> **2026-09-11** · 对比对象:**PD132T V3.012021-06-23** ↔ **PD136HA V3.142021-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 施密特整形 + **÷32Q5** → MCU | ✅ |
| 3 | 线圈频段 | **两者覆盖同一频段 ≈23.4~118kHz** —— PD132T 走「3MHz **双沿**捕获(Xn = 半周期)」、PD136HA 走「1.5MHz **单沿**(Xn = 整周期)」,两项差异**恰好互相抵消**:判据常数 `C = 32·f_cap/边沿系数` **同为 4.8×10⁷** ⇒ 这就是两者 Xn 窗口常量几乎逐字相同(406~2050 vs 400~2030)的真正原因 | ⭐ 关键 |
| 4 | 归一化基数 | **同为 32768**(换 MCU 未重定标)⇒ 相对阈值 `表值/65536` 可**直接跨型号对比** | ✅ |
| 5 | 测量节拍 | **10.88ms → 21.76ms**(100kHz 站点实测口径;标称上限 10.923/21.845ms)⇒ 每窗有效平均 1088 → **2176** 个线圈周期(积分深度 ×2)|⚠ 节拍**是区间**:按站点线圈频率浮动 0 ~ −6.2%,深占压再 +5%(见 `measurement-window-quantization.md` | ⚖️ 权衡 |
| 6 | 滤波 / 基线 | IIR τ:**29.6~38ms → 76~87ms**(慢 2~2.9×);基线窗 **100 → 256**1.09s → 5.59s | ⚠ 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 RAMMA801)→ 实测 **ROM 11.1KB / RAM 696B**HC32F003C4 = 16KB/2KB)⇒ **代码量 +40% 反超 8KB,资源 ×2** | ✅ 代际升级 |
| 12 | 设计取向 | PD132T = **响应优先**(快窗 / 快滤波 / 浅基线 / 故障不断流);PD136HA = **抗扰优先**(慢窗 / 慢滤波 / 深基线 / 重试复位) | ⭐ 主线 |
---
## 1. 血统与平台
| 项 | PD132T | PD136HA |
|---|---|---|
| 固件版本 | V3.012021-06-23 | V3.142021-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 RAMmax 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 常量 6000300s)。
**代际的四条硬改动**:捕获外设 **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 **÷32Q5** | 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 捕获外设与流程
| 项 | PD132TMA801 | PD136HAHC32F003C4 |
|---|---|---|
| 捕获外设 | **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× |
| 状态机节拍 | — | 50msT1 5ms × 10 | 50msTIM1 × 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.1499 → 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 判据结构(两型号完全同构)
```c
// 两者相同:进入 = CAPVD 下穿 Origindlt;离开 = 回升越 Origindlt(离开表)
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 ⭐ 跨代档位换算表(照搬档位号 = 错)
**PD132T → PD136HA(按 Δf/f 找最近档)**
| PD132T 档 | 进入 Δf/f | 最近的 PD136HA 档 | 进入偏差 | 离开偏差 | 可用性 |
|---|---|---|---|---|---|
| 0 | 0.4578% | 00.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% | 30.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% 也比它钝得多)。
**结论**
1. **档位号绝对不能照搬** —— 一一映射会产生 **46%~+69%** 的相对阈值偏差(相当于灵敏度差近 2 倍)。
2. 两代的**有效公共区间**只有中间两档(PD132T 档 1/2 ↔ PD136HA 档 2/3)。
3. 跨代迁移必须:**先按现场原档位的 Δf/f 查出目标档**,再现场复测(与 DLD154V4B 那套"档0 需复测"的结论同源:档 0/最高灵敏档永远是风险区)。
---
## 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_HOLD` 240s 重学基线(针对长期占压后基线漂移);代价是**复位本身会中断输出**,道闸场景下必须配合控制器侧超时。
- 两者 HOLD 常量**逐字同源**6000 tick × 50ms = 300s)—— 印证"同源移植保留超时语义"。
## 8. 拨码与配置迁移(不可"位置照搬")
| 项 | PD132T | PD136HA |
|---|---|---|
| 拨码引脚 | P1.0/P1.1 = SENS0/1P1.2 = SENUPP1.3 = FLTP1.4 = PLUSP1.5 = HOLD | P35/P26/P25/P24 = DIP5~8(延时 2bit / 脉冲模式 / 存在保持);P03/P32 = DIP9~10(灵敏度 2bit |
| 电气极性 | **低有效**:标贴 ON = 电平 **0**2026-08-28 用户确认,电路反相) | 引脚上拉 + DIP 接地 ⇒ **ON = 读出 0**(与 PD132L / DLD154V4B 同构) |
| 灵敏度编码 | **直接二进制** 0~3P1.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 ⇒ 分档 | 无此特例(离开恒分档) |
**迁移结论(双向都不可以位置照搬)**
1. 灵敏度编码方式不同(直接编码 vs DIP9/10 组合);
2. PD132T 的 `FLT`(增强滤波)在 PD136HA **没有对应**(功能被移除)⇒ 现场若依赖"增强滤波档",迁到 PD136HA 后滤波特性是固定值;
3. `PLUS` 语义不同("进入脉冲" vs "存在输出")—— **同名不同义,最易踩**
4. PD132T 的 `SENUP`(离开恒 14 的特例)在 PD136HA 无对应;
5. 唯一"可搬"的是**灵敏度档位所表达的 Δf/f 目标**(§5.4 换算表),不是拨码位置本身。
---
## 9. 两代设计取向解读(为什么这么改)
1. **硬件前端一个字没动**(同 ÷32、同振荡级、同线圈)⇒ 换代是**纯主板/软件升级**,现场线圈与接线**可原样沿用**(换型成本最低的一类改动)。⚠ 前提是线圈电感在检测器可工作范围内(两条线都无 V4B 那种电感四级质量门)。
2. **判据口径一个字没动**`BASE 32768` / `表值 >> 16` / `LPCNT = 32768/Xn` / 有车冻结基线 / `HOLD=300s` 全部继承 ⇒ **现场"相对阈值百分比"的经验可以跨代沿用**(这正是 §5 能用 Δf/f 直接对比的原因)。
3. **参数全部重标定**:灵敏度四档、IIR 系数、基线窗 —— 说明"移植 ≠ 直接抄参数"PD136HA 是**带标定的重写**(§5.4 的 −46%~+69% 偏差就是标定差异的量化证据)。
4. **8051 的技巧在 M0+ 上不再需要**PD132T 的「3MHz 双沿捕获」用半周期分辨率换 2× 有效时钟;PD136HA 直接用硬件单沿捕获 + 更低时钟(1.5MHz)实现**等价的时间分辨率**(判据常数 C 相同 ⇒ 同一线圈频段)。这是"用硬件能力替代软件技巧"的典型。
5. **取向从"响应优先"转向"抗扰优先"**(同一代内 V3.11→V3.14 的改动也朝这个方向:基线 99→255):窗 2×、τ 2~3×、基线 2.56×,代价是进/出响应慢约 2×、最小可检占压由 ~11ms 级变为 ~22ms 级(**高速车场景需注意**)。
6. **异常策略从"降级维持"转向"主动自愈"**(整机复位 / 重学基线)—— 与 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 档 00.4578%)与 PD136HA 档 00.2472%)在两代之间**无对应档**;现场若停在这两个档位,换型必须专项复测。
- [x] ~~**⑦ 旧文件勘误**~~**已落地**(同日提交):`docs/hardware-loop-frontend-pd132t-vs-v4b.md` §8 与 `docs/pd136ha-to-dld154v4b-delivery-alignment.md` §2.3 中「两型号线圈频段差 2×」已改为「**同一频段 ≈23.4~118kHz**」(见 §2.3)。
---
## 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 tick300s/ 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 方法学沉淀(跨型号对比的固定四步)
1. **算判据常数 `C = 32·f_cap/边沿系数`** → 立刻判断两型号是否覆盖**同一线圈频段**(本轮正是这一步发现了"窗口常量几乎相同"的真正原因);
2. **只比 `表值/65536`**(Δf/f),并给出**档位换算表 + 偏差%**(禁止按档位号照搬);
3. **比时间维**:测量节拍 × IIR τ × 基线窗 ⇒ 得"抗噪储备"与"响应延迟"的权衡;
4. **比异常策略**:降级维持 vs 主动复位 —— 这一项对道闸/会车现场的影响往往大于灵敏度差异本身。
---
## 附录 A:证据索引
| 结论 | 出处 |
|---|---|
| PD132T = MA8011-T / 8KB / 256B`AUXR` b7=T0X12、`CMOD` CPS=b2:b1 | `models/PD132T/MA801_MA802_Datasheet_A10.pdf`(官方手册,用户 2026-09-11 提供)+ `USER/REG_MA801.H` |
| ÷32Q5 | `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`