feat(vd-analysis): 归档 M1H + TLD-110 参考分析 (四型号对比总表)

- models/M1H/analysis.md: STC12C5202 V1.00 (2008) — DLD154V4B 算法血统源头
  (灵敏度表 {216,108,36,10} / SENS=3-(sw&0x03) / ALFA_CAP1=79 与 V4B 同源)
- models/TLD-110/analysis.md: P87LPC762 V2.33 (2006) 汇编 — 门控计数法
  (TAB_SENS {70,55,40,20}, 阈值=QT×表/40960, 滞回=相邻档, 单文件宏切三型号)
- docs/cross-model-comparison.md: 升级为四型号总表 + 测频路线两派
  (门控计数法 vs 周期累积法) + 灵敏度表跨型号换算警告
- README: 索引更新

勘误: skill 早期记录 TLD-110 '{70,55,40,20}×QT/100000' 不精确,
实际换算 QT×表值/40960 (70→0.171%…20→0.0488%)
This commit is contained in:
wangfq
2026-08-27 17:58:52 +08:00
parent 694c86ba48
commit a2e271f2ac
4 changed files with 237 additions and 34 deletions
+2 -2
View File
@@ -8,8 +8,8 @@
|------|------|---------|---------|---------|
| PD132L | STM8S003F3 (IAR) | V1.09 (2020-04) | [models/PD132L/analysis.md](models/PD132L/analysis.md) | `reference/PD132L_V1.09-STM8_20200422` |
| PD132T | MA801AS / 8051 (Keil) | V3.01 (2021-06) | [models/PD132T/analysis.md](models/PD132T/analysis.md) | `reference/PD132T_V3.01-20210623` |
| M1H | STC12C5202 (8051) | — | 待归档 | `reference/M1H code` |
| TLD-110 | P87LPC762 (8051) | — | 待归档 | `reference/TLD-110(410) code` |
| M1H | STC12C5202 (8051) | V1.00 (2008-12) | [models/M1H/analysis.md](models/M1H/analysis.md) | `reference/M1H code` |
| TLD-110 | P87LPC762 (8051, 汇编) | V2.33 (2006-07) | [models/TLD-110/analysis.md](models/TLD-110/analysis.md) | `reference/TLD-110(410) code` |
## 目录结构
+37 -32
View File
@@ -8,43 +8,48 @@
|------|------|------|------|
| PD132L | STM8S003F3 | V1.09 | [models/PD132L/analysis.md](../models/PD132L/analysis.md) |
| PD132T | MA801AS (8051) | V3.01 | [models/PD132T/analysis.md](../models/PD132T/analysis.md) |
| M1H | STC12C5202 (8051) | — | 待归档 |
| TLD-110 | P87LPC762 (8051) | — | 待归档 |
| M1H | STC12C5202 (8051) | V1.00 | [models/M1H/analysis.md](../models/M1H/analysis.md) |
| TLD-110 | P87LPC762 (8051) | V2.33 | [models/TLD-110/analysis.md](../models/TLD-110/analysis.md) |
## PD132L vs PD132T2026-08-27 首版
## 四型号核心参数对比2026-08-27
| 维度 | PD132L (STM8) | PD132T (MA801) | 差异说明 |
|------|--------------|----------------|---------|
| MCU/工具链 | STM8S003F3 / IAR | MA801AS / Keil C51 | 移植关系(T 文件头明示) |
| 捕获外设 | TIM1 输入捕获 (PSC=9 ÷10) | PCA (Timer0 重装252 ÷4) | 平台差异 |
| **归一化基数** | **32768 (2^15)** | 32768 | 相同 |
| Xn 有效窗口 | 320 ~ 1620 | 406 ~ 2050 | ≈1.27×(捕获时钟比) |
| IIR 系数 | 79 / 64 | 79 / 64 | 相同 |
| 基线窗口 | 100 | 100 | 相同 |
| 进入判据 | CAPVD < Origindlt | 同 | 相同 |
| 离开判据 | CAPVD > OrigindltSET_ASB 选档/固定最高档) | 同 | 相同 |
| 灵敏度表 | {300,60,32,21}/{60,32,21,14} | 同 | **完全相同** |
| tick / 主逻辑 | 5ms / 50ms | 5ms / 50ms | 相同 |
| 脉冲宽 | 500ms | 500ms | 相同 |
| 有限存在 | 300s (HOLD_TIME=6000) | 300s | 相同 |
| 灵敏度拨码 | SA1/SA2 组合位 (0x0C) | P1.0-1 直接 0~3 | **编码方式不同** |
| 功能开关位 | 高位分布 + SW0 | 低位 P1.2-5,无 SW0 | 位序不同 |
| 看门狗 | IWDG 1.02s + WWDG | WDTCR 1.05s | 平台差异 |
| 复位触发 | WWDG_CR 写序列 | ISPCR=0x20 | 平台差异 |
| LED | 单(LEDA | 双(DET+PWR | T 多电源灯 |
| 继电器 | PD4/PD3 | P1.6/P1.7 | 引脚不同,功能同 |
| 上电延时 | 800ms | 750ms | 略差 |
| UART | 有(未启用) | 无 | — |
| 维度 | TLD-110 | M1H | PD132L | PD132T |
|------|---------|-----|--------|--------|
| 年代 | 2003-2006 | 2008 | 2020 | 2021 |
| MCU | P87LPC762 | STC12C5202 | STM8S003F3 | MA801AS |
| 语言 | 汇编 | C | C | C |
| 通道 | 1(代码含双) | 1 | 1 | 1 |
| 测频方式 | **门控脉冲计数** | PCA 周期捕获 | TIM1 周期捕获 | PCA 周期捕获 |
| 归一化基数 | QT(空载计数) | 32768 | 32768 | 32768 |
| 测量累积 | 16 次 | LPCNT 个周期 | LPCNT 个周期 | LPCNT 个周期 |
| IIR 系数 | —(无) | 79(固定) | 79/64 | 79/64 |
| 基线 | 静态原理(QT 学习) | 100 平均(有车也跟踪) | 100 平均(有车冻结) | 100 平均(有车冻结) |
| 灵敏度表 | {70,55,40,20} | {216,108,36,10} | {300,60,32,21} | {300,60,32,21} |
| 阈值换算 | QT×表/40960 | Origin×表/65536 | Origin×表/65536 | Origin×表/65536 |
| 档位 Δf/f | 0.171%~0.049% | 0.33%~0.015% | 0.92%~0.064% | 0.92%~0.064% |
| 滞回 | 相邻档 | 同档表 | 同档表(SET_ASB 可固定最高) | 同 |
| 看门狗 | WDCON | WDT_CONTR | IWDG+WWDG | WDTCR |
| 复位 | — | ISP_CONTR | WWDG 序列 | ISPCR |
> ⚠ 灵敏度表**数值不可跨型号直接比较**:TLD-110 是门控计数域(QT 相对),其余是周期计数域(32768 基数,×65536 比例)。统一换算成 Δf/f 后:**TLD-110 最灵敏档 0.049%M1H 0.015%PD132 0.064%**。
## 测频路线两派(重要)
| 路线 | 代表 | 原理 | 噪声特性 |
|------|------|------|---------|
| **门控计数法** | TLD-110 | 固定时间窗数脉冲(频率域) | 受脉冲抖动影响,QT 学习自标定 |
| **周期累积法** | M1H / PD132L / PD132T / DLD 系 | 累加固定数量周期(周期域,LPCNT=BASE/Xn | 受周期抖动影响,LPCNT 自适应归一化 |
DLD 产品线(154V4B/960Loop/110S/154Pro)全部继承周期累积法,即 M1H→V4B 的血统;PD132 独立同路;TLD-110 是唯一门控计数派。
## 跨型号通用结论
1. **灵敏度表不能照搬数值**PD132 的 {300,60,32,21} 是 32768 基数的绝对计数;DLD 系 {216,108,36,10}/{108,54,28,14} 是 65536 基数。换算 Δf/f 后再比较:PD132 SENS=0 ≈ 0.92% vs DLD154V4B SENS=0 ≈ 0.33%——PD132 最低档更不灵敏。
2. **离开阈值语义**PD132 默认固定最高档(SensTable1[3]),DLD 系用当前档滞回——两种设计哲学。
3. **Xn 窗口跨平台按捕获时钟缩放**PD132L→T 1.27 倍,移植必须重算。
4. **拨码编码随硬件重排**:组合位SA1/SA2 → 0x0C 位)vs 直接编码(P1.0-1 → 0~3)。
1. **灵敏度表不能照搬数值**必须按各自归一化基数/测量方式换算 Δf/f 后再比较
2. **离开阈值语义三派**TLD-110 相邻档滞回 / M1H-PD132 同档滞回表 / PD132 可固定最高档
3. **Xn/计数窗口跨平台按捕获时钟缩放**PD132L→T 1.27×)
4. **拨码编码随硬件重排**:组合位 / 直接编码 / 反码(M1H SENS=3-(sw&0x03))各不相同
5. M1H 是 DLD 产品线算法血统源头(灵敏度表/映射/IIR 全部继承),分析新 DLD 型号前先读 M1H
## 待补型号
- [ ] M1HSTC12C5202, 8051, C 语言, 2008
- [ ] TLD-110P87LPC762, 8051, 汇编, 2003-2006
- [ ] 其他新参考代码
- [ ] 其他新参考代码(CH592EVT / CH32V208 等 SDK 类不算车检器型号,不归档
+109
View File
@@ -0,0 +1,109 @@
# 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 | STC12C52028051 内核,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=1.9s) → FLAG_PLUSE
- 脉冲:PLUSECNT > PLUSE_DELAY(19=950ms)
- 有限存在:HOLD_TIME=5×1100=5500 tick=275s → 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=1.9s 延时) |
| 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 | 5ms → 50ms |
| 进入延时 | 500ms (IN_DELAY=10) |
| 离开延时 | 0 / 1.9s (SET_DLY/OUT_DELAY=38) |
| 脉冲宽 | 950ms (PLUSE_DELAY=19) |
| 有限存在 | 275s (HOLD_TIME=5500) |
| 看门狗 | WDT_CONTR 1.05s + ISP_CONTR |
## 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 窗(有车冻结) |
| 进入确认 | 无(单次越线) | 3 次确认 |
| 斜率限幅 | 无 | 5% |
| 平台 | STC12C5202 (8051, ~12MHz) | AT32F421 (M4, 120MHz) |
| 归一化 | 32768 | 131072 (2^17) |
**M1H 是整个 DLD 产品线算法血统的源头**:V4B 保留了灵敏度表/映射/IIR 系数,M4 优化(更快 tick、确认机制、斜率限幅)是 8051 时代做不到的增量。
+89
View File
@@ -0,0 +1,89 @@
# TLD-110 车检器分析
> 型号: TLD-110TLD100/200 系列)| 固件: V2.33 | 日期: 2006-07-11(最早 2003-09-05| 平台: **P87LPC762**8051 内核, Philips/NXP, 汇编)
> 原始代码: `vd_detector/reference/TLD-110(410) code/TLD100-200-V23.asm`1563 行汇编)
> 说明: 单文件宏切换三型号(MODEL=100 TLD100 / MODEL=200 TLD200 / USER=10 TLD110),TLD-110 为单线圈。
## 1. 平台与工程
| 项 | 值 |
|----|-----|
| MCU | P87LPC7628051NXP/Philips |
| 语言 | 纯汇编(ASM51),Keil |
| 型号宏 | `MODEL=100`(TLD100 单线圈) / `MODEL=200`(TLD200 双线圈) / `USER=10`(TLD110) |
| 看门狗 | WDCON / WDRSTP87LPC762 内狗) |
| 通信 | 无(纯开关量输出) |
## 2. 硬件资源
- 双通道设计(A/B 线圈:A_EN/B_EN 切换,MODEL=200 双线圈,TLD110 只用 A
- 拨码 7 位:SA1/SA2/SB1/SB2/SW0/SW1/SW2(取反组合,去抖 3 次 AGE≥3)
- 继电器:SOL_A / SOL_BMODEL=200 有 A→B 方向功能)
- LEDA_LED / B_LED
## 3. 检测算法
### 3.1 频率测量(门控计数法)
- **门控脉冲计数**Timer0 预置初值(INI_T0H/L)作门控窗口,Timer1 定时,外部中断 EX0 数线圈脉冲
- 门控时间到读 COUNT`WAIT_T` 轮询 F_OVER 或 DT1 计数耗尽)
- `CAP_TIME EQU 16`16 次累积
- 空载计数 QTA_QTH/A_QTL)上电标定(CAL_QTA_OK
### 3.2 检测判据(QT 相对阈值)
- 阈值计算(CAL_TH_A):
```
dlt = QT × TAB_SENS[SENS] × 0x2710 / 0x1000 / 0x0A
= QT × 表值 / 40960
```
- 档位阈值比例:70→**0.171%**、55→**0.134%**、40→**0.0977%**、20→**0.0488%**
- 进入/离开用 A_TRL/H(触发阈值)与 A_TFL/H(释放阈值,TAB_SENS[SENS+1] 下一档)——**滞回 = 相邻档**
### 3.3 灵敏度表
```
TAB_SENS: DB 0x46, 0x37, 0x28, 0x14 = {70, 55, 40, 20}
```
- MODEL=100/110:灵敏度取拨码低 2 位(ANL #03H);MODEL=200 双通道各 2 位
- ⚠ skill 早期记录"{70,55,40,20}×QT/100000"**不精确**——实际换算 `×表值/40960`
### 3.4 时序/状态
- DELAY_VALUE=10、DELAY_VALUE1=40TLD110USER=10 时离开延时更长)
- 继电器释放延时:V2.33 A1 模式 D1 断开延时 5s2006-07-11 修改记录)
- 上电/复位标定:INIT_SET → INIT_SENS → CAL_QTA(空载 QT 学习)
- 拨码变化 → SENS_RESETAUXR1 软复位)
## 4. 版本演化(文件头修改记录)
| 版本 | 日期 | 内容 |
|------|------|------|
| V1.00 | 2003-09-05 | 初版 |
| V2.0 | 2003-11-28 | TLD-100 用户码 10TLD-200 A→B 方向功能(DIP3=ON,DIP2=OFF,DIP1=OFF |
| V2.1 | 2003-12-16 | 动态原理→静态原理(复位后一段时间原则不动,防误判) |
| V2.2 | 2004-01-30 | TLD-110 双通道改 1 通道 |
| V2.3 | 2005-07-07 | 断线后恢复延时 300ms→600ms |
| V2.31 | 2006-02-16 | A_EN/CT 信号恒低 bug 修复;断线恢复 300ms |
| V2.32 | 2006-05-30 | TLD-110 双线圈 2 路开关量 bug 修复 |
| V2.33 | 2006-07-11 | A1 模式继电器 D1 断开延时 5s |
## 5. 参数速查表
| 参数 | 值 |
|------|-----|
| 测量方式 | 门控脉冲计数(EX0 + Timer0/1 |
| 累积次数 | 16 (CAP_TIME) |
| 灵敏度表 | {70,55,40,20}(Δf/f 0.171%/0.134%/0.0977%/0.0488% |
| 阈值公式 | dlt = QT×表值/40960 |
| 滞回 | 相邻档(进入用档 N,释放用档 N+1) |
| 去抖 | 拨码连续 3 次一致 |
| 离开延时 | 10 / 40TLD110 |
| 看门狗 | WDCON/WDRST |
## 6. 设计特点
1. **门控计数法**与 PD132/M1H 的**周期累积法**是两类测频路线:TLD-110 数固定窗内脉冲(频率域),PD132/M1H 累加固定数周期(周期域)——两者对噪声的敏感方向相反(计数法受脉冲抖动影响,周期法受周期抖动影响)
2. **滞回 = 相邻档**(进 N 释放 N+1)是 TLD-110 特色,与 M1H 系的"同档滞回表"不同
3. **单文件宏切换多型号**MODEL/USER)是老 8051 工程的典型做法,注意分析时按宏展开理解