docs: 新增 PD132T ↔ PD136HA 同血统两代对比分析(8051 → Cortex-M0+)

- 新文件 docs/pd132t-vs-pd136ha-comparison.md(12 节 + 2 附录,~29KB / 376 行)
-  关键发现:两型号覆盖同一线圈频段 ≈23.4~118kHz
  · PD132T = 3MHz 双沿捕获(Xn = 半周期);PD136HA = 1.5MHz 单沿(Xn = 整周期)
  · 判据常数 C = 32·f_cap/边沿系数,两者同为 4.8×10^7 ⇒ 窗口常量几乎逐字相同(406~2050 vs 400~2030)
- 灵敏度重标定量化:档位一一映射偏差 −46%~+69% ⇒ 跨代不可按档位号照搬;
  给出双向换算表(PD132T 档1 → PD136HA 档2:进入 −10% / 离开 0%,为最佳匹配)
- 时间维对比:节拍 10.92→21.85ms、IIR τ 29.6~38→76~87ms、基线 100→256(1.09→5.59s)
  ⇒ 设计取向由「响应优先」转为「抗扰优先」(代价:进出响应与最小可检占压约慢 2×)
- 异常策略对比:PD132T「降级维持」(断继电器+闪灯,不复位)vs PD136HA「主动自愈」(整机复位 + LC_HOLD 240s 重学基线)
- 修正旧口径:front-end §8 与对齐报告 §2.3 的「两型号线圈频段差 2×」改为「同一频段」
  (早前把 PD132T 的半周期口径与 PD136HA 的整周期口径直接相比所致)
- README 索引 + 两份 models/analysis.md 交叉链接;表格校验 0 异常(14 文件)
This commit is contained in:
wangfq
2026-09-11 08:54:18 +08:00
parent 382a23594c
commit f876c36d05
6 changed files with 382 additions and 2 deletions
+2
View File
@@ -18,6 +18,7 @@
| 报告 | 路径 | 日期 |
|------|------|------|
| **PD132T ↔ PD136HA**(同血统两代**对比** | [docs/pd132t-vs-pd136ha-comparison.md](docs/pd132t-vs-pd136ha-comparison.md) | 2026-09-11 |
| PD132T → DLD154V4B | [docs/pd132t-to-v4b-delivery-alignment.md](docs/pd132t-to-v4b-delivery-alignment.md) | 2026-08-28 |
| **PD136HA → DLD154V4B** | [docs/pd136ha-to-dld154v4b-delivery-alignment.md](docs/pd136ha-to-dld154v4b-delivery-alignment.md) | 2026-09-11 |
@@ -31,6 +32,7 @@ vd-analysis/
├── docs/
│ ├── methodology.md # 参考代码分析方法论(新车型分析模板)
│ ├── cross-model-comparison.md # 跨型号参数对比总表
│ ├── pd132t-vs-pd136ha-comparison.md # 同血统两代对比(8051 → M0+2026-09-11
│ ├── filter-coefficient-79-vs-64.md # 滤波系数 79/64 专题
│ ├── hardware-loop-frontend-pd132t-vs-v4b.md # 硬件前级对比(PD132T vs V4B
│ ├── pd132t-to-v4b-delivery-alignment.md # 交付对齐:PD132T → DLD154V4B
+1 -1
View File
@@ -80,7 +80,7 @@ DLD154V4B:
## 8. 附:PD136HA 侧(2026-09-11 补 —— 用户口径「PD136 跟 PD132 一样,有用到 CD4060 接线圈」)
PD136HA**HC32F003C4**V3.14)与 PD132T**MA801**V3.01**同分频比(÷32、线圈频段差 2×(PD136HA/PD132L ≈11.8~60kHz ↔ PD132T ≈23.4~118kHz;按 Xn=半周期口径,见 §2)**
PD136HA**HC32F003C4**V3.14)与 PD132T**MA801**V3.01**同分频比(÷32,且覆盖同一线圈频段 ≈23.4~118kHz**PD132T 走 3MHz 双沿/半周期、PD136HA 走 1.5MHz 单沿/整周期,两项差异**恰好抵消** ⇒ 判据常数 `C=32·f_cap/边沿系数` 同为 **4.8×10⁷**;详见 `pd132t-vs-pd136ha-comparison.md` §2.3
| 项 | PD132T | **PD136HA** | DLD154V4B |
|---|---|---|---|
+376
View File
@@ -0,0 +1,376 @@
# 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.92ms → 21.85ms(慢 2×)** ⇒ 每窗有效平均 1092 → **2185** 个线圈周期(积分深度 ×2) | ⚖️ 权衡 |
| 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` 后) | 同(`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 / f_cap` | **10.92 ms** | **21.85 ms** | PD136HA 慢 2× |
| 每窗有效平均的线圈周期数 | `节拍 × f_coil`@100kHz 标称) | ≈ **1092** | ≈ **2185** | 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`
@@ -131,7 +131,7 @@ CAPVD = LPCNT × Xn_分频后 = 32768 ← 与 N 无关
> 3. 器件特性:**1-T 80C51 内核**、**8KB Flash**、**256B RAM**、最大 25MHz、外部晶振 + 内置 IRCO(6MHz);§14.2.5 示例即写「SYSCLK = 12MHz 晶振」✓
> - ⇒ 原先依赖「同族手册 `MG82F6D17` + T1 侧反证」的**间接论证已全部升级为官方直证**,本链条不再有未取证环节 ✓
> - **PD136HA = HC32F003C4**(小华半导体 HDSC,用户确认)。⚠ 工程档位仍是 `HC32F005C6PA`Keil `<Device>`+ startup `hc32f005c6ua` ⇒ **重编译前须改器件档位**;实测固件 `Code=11148 RO=268 RW=88 ZI=608` ⇒ ROM≈11.1KB / RAM≈696BF003(16KB/2KB) 与 F005(32KB/4KB) 都装得下 ✓。Keil 工程 `<Cpu>… CLOCK(12000000) …` 亦**独立佐证 12MHz** ✓
> - ⚠ **双沿捕获的意外发现**PD132T `CCAPM1=0x31` = **CAPP+CAPN 双沿捕获**(旧稿写「下降沿捕获」**有误**),ISR 内 `loop1_Xn = 本次捕获 − 上次捕获` ⇒ **Xn 实为「半周期」**(对 50% 占空方波)。⇒ 线圈绝对频段按半周期重算PD132T 窗 406~2050 ⇒ **≈23.4~118kHz**PD136HA/PD132L ⇒ **≈11.8~60kHz**(与代码遗留注释 `//高频:48-1100,低频:22-550`(单位存疑)大体相容)
> - ⚠ **双沿捕获的意外发现**PD132T `CCAPM1=0x31` = **CAPP+CAPN 双沿捕获**(旧稿写「下降沿捕获」**有误**),ISR 内 `loop1_Xn = 本次捕获 − 上次捕获` ⇒ **Xn 实为「半周期」**(对 50% 占空方波)。⇒ **PD132T 侧**(双沿 ⇒ 半周期)线圈频段按半周期重算 = 窗 406~2050 ⇒ **≈23.4~118kHz**(落在代码遗留注释 `//高频:48-1100,低频:22-550` 内,单位存疑)。⚠ **但 PD136HA/PD132L 是单沿捕获(Xn=整周期),其 400~2030 / 320~1620 解出的仍是 ≈23.6~120kHz —— 与 PD132T 同一频段**(判据常数 `C=32·f_cap/边沿系数` 同为 4.8×10⁷)。早前"两型号频段差 2×"的说法**已作废**,详见 `docs/pd132t-vs-pd136ha-comparison.md` §2.3
> - **⚠ 灵敏度/偏差口径不受影响**`CAPVD/32768 = f_旧/f_新` 是**比值**,半/整周期因子同进分子分母相互约掉 —— 与 §2.2「分频比 N 被约掉」同理 ✓
**÷32 代入后,两族图纸读数完全自洽**:
+1
View File
@@ -4,6 +4,7 @@
> 原始代码: `vd_detector/reference/PD132T_V3.01-20210623/`USER/main.c 458 行)
> 原理图: `models/PD132T/PD132T.A_Ver2.01-20210609_Logic.pdf`(本仓附件,2026-09-01 归档)
> 硬件前端对比: `docs/hardware-loop-frontend-pd132t-vs-v4b.md`CD4060 分频 vs V4B 直连)
> 双型号对比: `docs/pd132t-vs-pd136ha-comparison.md`(与 PD136HA 同血统两代对比,2026-09-11
> 说明: 文件头明确"**实现与 PD132L_V1.09 一样的功能**"——PD132L 的 8051 移植版,核心算法逐行对应。
## 1. 平台与工程
+1
View File
@@ -4,6 +4,7 @@
> 原始代码: `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
> 双型号对比: `docs/pd132t-vs-pd136ha-comparison.md`(与 PD132T 同血统两代对比,2026-09-11
## 1. 平台与工程