Files
vd-analysis/models/PD132L/analysis.md
T
wangfq 1e71ece576 docs(vd-analysis): 四型号补时序/速率/周期速查 + 对比总表时序行
用户反馈: 分析需量化时序/速率/周期, 光有窗口数没有更新周期等于没量化。

每型号新增 §5.1 时序速查:
- 测量节拍 (CAPVD 更新) = BASE/捕获时钟: M1H 32.8ms / PD132L 27.3ms /
  PD132T 43.7ms (12MHz 假设, 待现场验证)
- 基线更新周期 = 窗口×节拍: 3.28s / 2.73s / 4.37s
- IIR τ = 节拍×256/ALFA: 106ms / 88ms / 142ms
- TLD-110 门控 32.8ms/61.7ms, QT 一次性学习无滑动平均 (静态原理)

对比总表加 5 行时序维度; 标注 12MHz 推导假设
2026-08-27 18:10:37 +08:00

4.5 KiB
Raw Blame History

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 STM8S003F3P68 位, 16KB Flash
工具链 IAR EWSTM8.ewp/.eww/.ewd
时钟 外部晶振(CLK_SWR=0xB4,注释 12MHz),无分频
看门狗 IWDGPR=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 / XnBASE = 2^15),累加 LPCNT 个周期得 Value/CAPVD ≈ 32768

3.2 滤波

  • IIRFlt_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_ORGdlt_ORG = Origin×SensTable[SensLevel]>>16;置 VD_FLAG/FLAG_IN
  • 离开:CAPVD > Origin dlt_ORGdlt_ORG = Origin×SensTable1[...]>>16SET_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

5.1 时序/速率/周期速查(2026-08-27 补)

推导假设外部晶振 12MHz(代码注释),待现场验证;公式:测量节拍 = BASE/捕获时钟。

公式/值 数值
捕获时钟 TIM1 PSC=9 → 12M/10 1.2 MHz
测量节拍CAPVD 更新) 32768 / 1.2MHz 27.3 ms
基线更新周期 100 窗 × 27.3ms 2.73 s
IIR 时间常数 τ 27.3ms × 256/7964 88 ms / 109 ms
进入响应 1 个测量节拍(无确认机制) ~27 ms
离开响应 1 节拍 + 脉冲 ~27 ms + 500ms
上电稳定 Delay_ms(800) + LPCNT 学习(100 周期) ~1 s

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 系"当前档滞回"不同