feat(vd-analysis): 车检器分析仓库初始化 + PD132L/PD132T 分析
- README: 仓库说明 + 型号索引 + 新增型号流程
- docs/methodology.md: 参考代码分析方法论模板 (10 节)
- docs/cross-model-comparison.md: PD132L vs PD132T 对比总表
- models/PD132L/analysis.md: STM8S003F3 V1.09 完整分析
- models/PD132T/analysis.md: MA801AS V3.01 完整分析 (L 的 8051 移植版)
核心结论: 两型号检测算法逐行对应 (32768 基数/79·64 IIR/100 基线/
{300,60,32,21} 灵敏度表), 差异在平台(PCA vs TIM1)/Xn窗口(1.27×)/
拨码编码(组合位 vs 直接)/看门狗(WDTCR vs IWDG+WWDG)
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# PD132L 车检器分析
|
||||
|
||||
> 型号: PD132L | 固件: V1.09 | 日期: 2020-04-22 | 平台: **STM8S003F3P6** (IAR EWSTM8)
|
||||
> 原始代码: `vd_detector/reference/PD132L_V1.09-STM8_20200422/`(MAIN.c 579 行 + uart.c)
|
||||
|
||||
## 1. 平台与工程
|
||||
|
||||
| 项 | 值 |
|
||||
|----|-----|
|
||||
| MCU | STM8S003F3P6(8 位, 16KB Flash) |
|
||||
| 工具链 | IAR EWSTM8(`.ewp`/`.eww`/`.ewd`) |
|
||||
| 时钟 | 外部晶振(`CLK_SWR=0xB4`,注释 12MHz),无分频 |
|
||||
| 看门狗 | **IWDG**(PR=6, RLR=0xFF → ~1.02s)+ **WWDG**(窗口,事件触发软复位) |
|
||||
| 调试 | UART1 输出代码存在(`INIT_UART()` 被注释,未启用) |
|
||||
|
||||
## 2. 硬件资源
|
||||
|
||||
| 引脚 | 功能 |
|
||||
|------|------|
|
||||
| PC3 | LP 线圈捕获(TIM1_CC3 输入,下降沿) |
|
||||
| PD4 | RLY1 存在继电器(低有效) |
|
||||
| PD3 | RLY2 脉冲继电器(低有效) |
|
||||
| PB5 | LEDA 存在指示灯(低有效点亮) |
|
||||
| PA3 / PD2 | SA1 / SA2 灵敏度拨码 |
|
||||
| PC4 / PC5 / PC6 | SW3 / SW2 / SW1 功能拨码 |
|
||||
| PD5 | SW0 功能拨码 |
|
||||
| PB4 / PD6 | 扩展/预留输出 |
|
||||
|
||||
## 3. 检测算法
|
||||
|
||||
### 3.1 频率测量
|
||||
|
||||
- TIM1 输入捕获(CCR3),下降沿→下降沿测周期;PSC=0x0009 → 捕获时钟 ÷10
|
||||
- 每周期得 `Xn`;有效性窗口 **320 < Xn < 1620**(超出判线圈断开/异常)
|
||||
- 归一化:`LPCNT = 32768 / Xn`(**BASE = 2^15**),累加 LPCNT 个周期得 `Value/CAPVD ≈ 32768`
|
||||
|
||||
### 3.2 滤波
|
||||
|
||||
- IIR:`Flt_Reg = 79`(增强滤波拨码开)/ `64`(关),`Δ×Flt_Reg>>8` 双向(升/降分支)
|
||||
- 滤波作用于 CAPVD(每 CAP_OK 节拍)
|
||||
|
||||
### 3.3 基线
|
||||
|
||||
- 无车时 100 次滑动平均:`ORG_CNT==99 → Origin = ORG_SUM/100`
|
||||
- 有车冻结(`!VD_FLAG` 才更新)
|
||||
|
||||
### 3.4 进入/离开
|
||||
|
||||
- 进入:`CAPVD < Origin − dlt_ORG`,`dlt_ORG = Origin×SensTable[SensLevel]>>16`;置 `VD_FLAG/FLAG_IN`
|
||||
- 离开:`CAPVD > Origin − dlt_ORG`,`dlt_ORG = Origin×SensTable1[...]>>16`;SET_ASB=1 用当前档,否则**固定最高档 SensTable1[3]**
|
||||
|
||||
### 3.5 灵敏度表
|
||||
|
||||
```
|
||||
SensTable[4] = {300, 60, 32, 21} // 进入
|
||||
SensTable1[4] = { 60, 32, 21, 14} // 离开(滞回)
|
||||
```
|
||||
|
||||
- 归一化基数 32768 → 进入阈值 Δf/f = 300/32768≈**0.92%** … 21/32768≈**0.064%**
|
||||
- 档位:SENS=0~3(拨码 SA1/SA2 组合 0x00/0x04/0x08/0x0C 映射)
|
||||
|
||||
### 3.6 状态机/时序
|
||||
|
||||
- TIM2 5ms tick → 50ms 主节拍(TM1cnt≥10)
|
||||
- FLAG_IN → FLAG_IN_PLUSE(进入脉冲 500ms = 10 tick)→ FLAG_OUT → FLAG_PLUSE(离开脉冲 500ms)
|
||||
- 有限存在:`HOLD_TIME = 5×1200 = 6000 tick = 300s` 超时 → WWDG 复位继电器
|
||||
- 线圈断开:RF_FLAG 检测失败 → LOOP_OK=0 → 继电器断开 + LED 快闪(6 次×200ms)
|
||||
|
||||
## 4. 拨码与配置
|
||||
|
||||
| 位 | 开关 | 含义 |
|
||||
|----|------|------|
|
||||
| swok&0x80 | SET_ASB | 离开阈值自动(用当前档)/手动(固定最高档) |
|
||||
| swok&0x40 | SET_FLT | 增强滤波(79/64) |
|
||||
| swok&0x20 | SET_PLUS | 脉冲输出模式(继电器2=进入脉冲) |
|
||||
| swok&0x10 | SET_HOLD | 有限存在 |
|
||||
| swok&0x0C | SA1/SA2 | 灵敏度 0~3 |
|
||||
|
||||
去抖:连续 6 次读取一致才生效;灵敏度变化 → WWDG 复位("灵敏档拨开重新改档位")
|
||||
|
||||
## 5. 参数速查表
|
||||
|
||||
| 参数 | 值 |
|
||||
|------|-----|
|
||||
| 归一化基数 | 32768 (2^15) |
|
||||
| Xn 有效窗口 | 320 ~ 1620 |
|
||||
| IIR 系数 | 79 / 64 |
|
||||
| 基线窗口 | 100 |
|
||||
| 灵敏度表 | {300,60,32,21} / {60,32,21,14} |
|
||||
| tick | 5ms → 主逻辑 50ms |
|
||||
| 脉冲宽 | 500ms |
|
||||
| 有限存在 | 300s |
|
||||
| 看门狗 | IWDG 1.02s + WWDG |
|
||||
| 上电延时 | 800ms |
|
||||
|
||||
## 6. 版本特性
|
||||
|
||||
- V1.01: STM8 移植,"功能与 132T 一样"
|
||||
- V1.03: 微调,"无存在改为 5 分钟"
|
||||
- V1.09: 线圈断开时线圈上电继电器断开
|
||||
|
||||
## 7. 移植注意事项
|
||||
|
||||
1. BASE=2^15=32768 → 灵敏度表量纲与 131072/524288 基数的产品不同,**照搬数值会错 4~16 倍**
|
||||
2. Xn 窗口随捕获时钟定标,换 MCU 必须重算
|
||||
3. 离开阈值"固定最高档"语义(SET_ASB 关)与 DLD 系"当前档滞回"不同
|
||||
@@ -0,0 +1,89 @@
|
||||
# PD132T 车检器分析
|
||||
|
||||
> 型号: PD132T | 固件: V3.01 | 日期: 2021-06-23 | 平台: **MA801AS**(8051 内核, Keil C51)
|
||||
> 原始代码: `vd_detector/reference/PD132T_V3.01-20210623/`(USER/main.c 458 行)
|
||||
> 说明: 文件头明确"**实现与 PD132L_V1.09 一样的功能**"——PD132L 的 8051 移植版,核心算法逐行对应。
|
||||
|
||||
## 1. 平台与工程
|
||||
|
||||
| 项 | 值 |
|
||||
|----|-----|
|
||||
| MCU | MA801AS(泉州,8051 内核) |
|
||||
| 工具链 | Keil C51(`.uvproj`,含 `STARTUP.A51`) |
|
||||
| 时钟 | `AUXR=0xC0`(内部时钟相关);Timer0 8bit 自动重装 252 给 PCA 提供时钟(÷4) |
|
||||
| 看门狗 | **WDTCR**(0x3C → ~1.05s);复位用 `ISPCR=0x20`(ISP 软复位) |
|
||||
| 调试 | 无 UART |
|
||||
|
||||
## 2. 硬件资源
|
||||
|
||||
| 引脚 | 功能 |
|
||||
|------|------|
|
||||
| PCA CEX1 | 线圈捕获(CCAPM1 下降沿 + 中断) |
|
||||
| P1.6 | SOLA 继电器 A(脉冲/存在输出) |
|
||||
| P1.7 | SOLB 继电器 B(存在输出) |
|
||||
| P3.3 | LED_DET 检测指示灯 |
|
||||
| P3.2 | LED_PWR 电源指示灯(**PD132L 没有**) |
|
||||
| P1.0 / P1.1 | SENS0 / SENS1 灵敏度拨码(**直接编码 0~3**) |
|
||||
| P1.2 | SENUP 自动/手动离开阈值(≈L 的 SET_ASB) |
|
||||
| P1.3 | FLT 增强滤波 |
|
||||
| P1.4 | PLUS 脉冲模式 |
|
||||
| P1.5 | HOLD 有限存在 |
|
||||
|
||||
## 3. 检测算法(与 PD132L 对应)
|
||||
|
||||
### 3.1 频率测量
|
||||
|
||||
- PCA 捕获(CCAPM1=0x31 下降沿捕获 + 中断);Timer0 8bit 自动重装 252 作 PCA 时钟源(CMOD=0x04)
|
||||
- 每周期得 `Xn`;有效性窗口 **406 < Xn < 2050**(≈ PD132L 的 1.27 倍,捕获时钟不同)
|
||||
- 归一化:`LPCNT = 32768 / Xn`,累加得 CAPVD ≈ 32768
|
||||
|
||||
### 3.2 滤波
|
||||
|
||||
- IIR:`Flt_Reg = ALFA_CAP1(79)`(FLT 开)/ `ALFA_CAP2(64)`(关),`Δ×Flt_Reg>>8` 双向
|
||||
|
||||
### 3.3 基线 / 3.4 进入离开 / 3.5 灵敏度表
|
||||
|
||||
- 与 PD132L **完全一致**:100 次平均基线、`CAPVD < Origin−dlt` 进入、`> Origin−dlt` 离开(SET_ASB 语义同)、
|
||||
`SensTable {300,60,32,21} / SensTable1 {60,32,21,14}` 相同
|
||||
|
||||
### 3.6 状态机/时序
|
||||
|
||||
- Timer1 5ms tick → 50ms 主节拍(TM1cnt≥10),脉冲 500ms、有限存在 HOLD_TIME=6000(300s)
|
||||
- 有限存在超时 → `ISPCR=0x20` 软复位(对应 L 的 WWDG 复位)
|
||||
- 线圈断开 → 继电器全断 + LED 快闪 6 次
|
||||
|
||||
## 4. 拨码与配置
|
||||
|
||||
| 位 | 开关 | 含义 |
|
||||
|----|------|------|
|
||||
| swok bit2 (P1.2) | SENUP | 自动/手动离开阈值 |
|
||||
| swok bit3 (P1.3) | FLT | 增强滤波 |
|
||||
| swok bit4 (P1.4) | PLUS | 脉冲模式 |
|
||||
| swok bit5 (P1.5) | HOLD | 有限存在 |
|
||||
| swok bit0-1 (P1.0-1) | SENS0/1 | 灵敏度 **0~3 直接编码** |
|
||||
|
||||
去抖:连续 6 次一致生效;灵敏度变化 → `ISPCR=0x20` 复位
|
||||
|
||||
## 5. 参数速查表
|
||||
|
||||
| 参数 | 值 | 对比 PD132L |
|
||||
|------|-----|------------|
|
||||
| 归一化基数 | 32768 | 相同 |
|
||||
| Xn 有效窗口 | 406 ~ 2050 | ≈1.27× |
|
||||
| IIR 系数 | 79 / 64 | 相同 |
|
||||
| 基线窗口 | 100 | 相同 |
|
||||
| 灵敏度表 | {300,60,32,21}/{60,32,21,14} | 相同 |
|
||||
| tick | 5ms → 50ms | 相同 |
|
||||
| 脉冲宽 | 500ms | 相同 |
|
||||
| 有限存在 | 300s | 相同 |
|
||||
| 看门狗 | WDTCR 1.05s | L=IWDG 1.02s+WWDG |
|
||||
| 上电延时 | 750ms | L=800ms |
|
||||
|
||||
## 6. 与 PD132L 的差异要点
|
||||
|
||||
1. 平台:STM8S003F3 → MA801AS(8051),TIM1 捕获 → PCA 捕获
|
||||
2. **Xn 窗口 406/320=1.27、2050/1620=1.27**:捕获时钟比例,频率范围设计一致
|
||||
3. 拨码:灵敏度 8 位组合(SA1/SA2)→ 6 位直接编码(P1.0-1);无 SW0
|
||||
4. LED:单 LED → 双 LED(+LED_PWR)
|
||||
5. 看门狗/复位:IWDG+WWDG 写序列 → WDTCR + ISPCR=0x20
|
||||
6. 无 UART、无 IN_DELAY/OUT_DELAY 宏(L 定义但逻辑注释)
|
||||
Reference in New Issue
Block a user