From 266ffc5909a0f963e673ea242b0f968985de93c4 Mon Sep 17 00:00:00 2001 From: wangfq Date: Mon, 29 Jun 2026 19:16:11 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=9B=9B=E6=96=87=E6=A1=A3=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=87=B3=20V2.6=20=E2=80=94=20=E5=8D=95=E8=B7=AF=20II?= =?UTF-8?q?R=20+=20WINDOW=5FORIGIN=3D500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - devlog: 新增 V2.6 架构简化章节 + 两阶段基线策略 - release-notes: V2.5→V2.6, 更新 M4 优化表(双路→单路 IIR) - product-manual: V2.5→V2.6 + 版本历史 - technical-spec: §4.2 重写为单路 IIR ALFA_CAP1=79 @10ms, §4.3.2 去除 CAPVD_fast 引用, §4.4.3 两阶段基线表, §15 新增 V2.1 修订记录 --- docs/devlog.md | 40 ++++++++++++++++- docs/product-manual.md | 3 +- docs/release-notes.md | 14 +++--- docs/technical-spec.md | 99 +++++++++++++++++++----------------------- 4 files changed, 92 insertions(+), 64 deletions(-) diff --git a/docs/devlog.md b/docs/devlog.md index 6c1b18f..535b925 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -473,13 +473,49 @@ if (dev >= dlt_ORG × 4) { --- +## 2026-06-29 — 架构简化:单路 IIR ALFA_CAP1=79 + WINDOW_ORIGIN=500 + +### 背景 + +双路 IIR(慢速 α=18/256 + 快速 α=0.5)在 ALFA_CAP1=18 时斜率限幅参考 CAPVD 拖累了快速通路, +多次修补后发现:**ALFA_CAP1=79 @10ms 本身就 τ≈32ms,已经足够快**,无需双路复杂度。 + +### 改动 + +| 项目 | 改前 | 改后 | +|------|------|------| +| ALFA_CAP1 | 18 (@10ms, τ=135ms) | **79 (@10ms, τ=32ms)** | +| IIR 路数 | 双路(慢+快) | **单路** | +| WINDOW_ORIGIN | 100 (1s) | **500 (5s)** | +| 稳定期窗口 | 500 | **100** | +| `update_moving_average` window | uint8_t | **uint16_t** | +| 快速 IIR 输入 | CAPVD(慢速输出,滞后) | 已删除 | +| 斜率限幅 | 快/慢双参考(CAPVD + CAPVD_fast) | **单参考 CAPVD** | + +### 保留的 V2 保护机制 + +- 斜率限幅 (MAX_SLOPE_RATE=5%) +- 进入确认 (ENTRY_CONFIRM=3) +- 基线冻结超时 (10s + ±2% 稳定性检查) +- 稳定期绕过 IIR/限幅 (V2.2) + +### 两阶段基线策略 + +``` +稳定期: 100 样本 × 10ms = 1s → 快速收敛,开机即用 +正常: 500 样本 × 10ms = 5s → 强噪声抑制,稳定跟踪 +``` + +--- + ## 修订记录 | 版本 | 时间 | 说明 | |------|------|------| +| V2.6 | 2026-06-29 | 架构简化: 单路 IIR ALFA_CAP1=79, WINDOW_ORIGIN=500, 稳定期100 | | V2.5 | 2026-06-29 | 冻结超时 30s→10s,加快环境变化响应 | -| V2.4 | 2026-06-29 | 冻结超时增加稳定性检查: CAPVD 需连续稳定在 ±2% 窗口内 | -| V2.3 | 2026-06-29 | 基线冻结超时: 持续偏高后强制更新 Origin,防止环境变化死锁 | +| V2.4 | 2026-06-29 | 冻结超时增加稳定性检查: ±2% 窗口内连续稳定 | +| V2.3 | 2026-06-29 | 基线冻结超时: 持续偏高后强制更新 Origin,防止死锁 | |------|------|------| | V2.2 | 2026-06-26 | 稳定期绕过 IIR/斜率限幅,用 Value 直接收敛基线 | | V2.1 | 2026-06-26 | CAPVD_fast 初始化修复(条件反转为 ==0 首次锁定) | diff --git a/docs/product-manual.md b/docs/product-manual.md index 357ae68..74da13b 100644 --- a/docs/product-manual.md +++ b/docs/product-manual.md @@ -1,6 +1,6 @@ # DLD154V4B 产品手册 -> 单路线圈车辆检测器 | 型号: DLD154V4B | 版本: V2.5 +> 单路线圈车辆检测器 | 型号: DLD154V4B | 版本: V2.6 > 适用于停车场、收费站、交通卡口等场景的车辆到达/离开检测 --- @@ -241,6 +241,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈 | V2.0 | 2026-06-26 | M4 核心优化:双路 IIR + 斜率限幅 + 进入确认 | | V2.2 | 2026-06-26 | 稳定期绕过 IIR/斜率限幅,基线收敛更准确 | | V2.3~2.5 | 2026-06-29 | 基线冻结超时自动恢复(10s),含稳定性检查 | +| V2.6 | 2026-06-29 | 架构简化: 单路 IIR ALFA_CAP1=79, WINDOW_ORIGIN=500 | --- diff --git a/docs/release-notes.md b/docs/release-notes.md index 0ca80f2..8e42ad9 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,7 +1,7 @@ # DLD154V4B 产品发布说明 -> 固件版本 **V2.5** | 发布日期 2026-06-29 -> 单路线圈车辆检测器 · ARM Cortex-M4 · M4 核心优化 + 自适应基线 +> 固件版本 **V2.6** | 发布日期 2026-06-29 +> 单路线圈车辆检测器 · ARM Cortex-M4 · 单路 IIR + 智能基线 --- @@ -67,12 +67,13 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 利用 Cortex-M4 @120MHz 的算力优势,相比 8051 时代设计做了系统性改进: -| 改进项 | 8051 旧设计 | M4 优化 | 效果 | +| 改进项 | 8051 旧设计 | M4 优化 (V2.6) | 效果 | |--------|-----------|---------|------| | **tick 周期** | 50ms | **10ms** | 响应密度 5× | -| **双路 IIR** | 单路 α=79/256 | 慢速 τ=135ms (基线) + 快速 τ=28ms (检测) | 基线跟踪/检测解耦 | +| **IIR 滤波** | 单路 α=79/256 @50ms (τ=162ms) | **单路 α=79/256 @10ms (τ=32ms)** | 5× 加速,保持原系数 | | **斜率限幅** | 无 | 单次变化 >5% 截断 | 过滤 EMI/闪电尖峰 | -| **进入确认** | 单次阈值 | 连续 3 次 + 快速 IIR | 进入响应 ~530ms,误触发大幅降低 | +| **进入确认** | 单次阈值 | 连续 3 次确认 | 瞬态干扰免疫 | +| **基线窗口** | 100 样本 (5s) | **500 样本 (5s)**,稳定期 100 (1s) | 噪声抑制 2.2×,开机快速就绪 | | **基线冻结超时** | 无(永久冻结) | 稳定 10s 后自动更新 | 环境变化免复位 | | **冻结稳定性检查** | — | ±2% 窗口验证 | 防止波动值被判为新常态 | @@ -134,7 +135,8 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 | V2.2 | 06-26 | 稳定期绕过 IIR/斜率限幅,直接用 Value 收敛基线 | | V2.3 | 06-29 | 基线冻结超时自动恢复(持续偏离后强制更新 Origin) | | V2.4 | 06-29 | 冻结超时增加稳定性检查(CAPVD 需连续稳定在 ±2% 窗口内) | -| **V2.5** | **06-29** | **冻结超时 30s→10s**,加快环境变化响应 | +| V2.5 | 06-29 | 冻结超时 30s→10s | +| **V2.6** | **06-29** | **架构简化: 单路 IIR 79@10ms, WINDOW_ORIGIN=500, 稳定期100** | --- diff --git a/docs/technical-spec.md b/docs/technical-spec.md index f34b5f7..f589a11 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -1,6 +1,6 @@ # DLD154V4B 技术规格书 -> 单路线圈车辆检测器 | 固件版本: V2.5 | 文档版本: V2.0 +> 单路线圈车辆检测器 | 固件版本: V2.6 | 文档版本: V2.1 > 本文档面向工程开发、系统集成及故障深度分析 --- @@ -31,9 +31,9 @@ FreeRTOS Kernel (CMSIS-RTOS v2) ├── loop_task (主检测任务) │ ├── vd1_task() — 每 ~10ms 执行 (M4 优化) -│ │ ├── 双路 IIR 滤波 (慢速 α=18/256, 快速 α=0.5) +│ │ ├── IIR 滤波 (ALFA_CAP1=79/256, τ≈32ms) │ │ ├── 斜率限幅 (MAX_SLOPE_RATE=5%) -│ │ ├── 基线跟踪 (100 窗口滑动平均) +│ │ ├── 基线跟踪 (500 窗口滑动平均, 5s) │ │ ├── 进入确认 (ENTRY_CONFIRM=3 次) │ │ ├── 离开检测 (平坦性 / cnt_release) │ │ ├── 时序状态机 (IN/OUT/PULSE/HOLD) @@ -178,47 +178,41 @@ TMR3 ISR: **改进效果**:响应速度提升 16 倍,精度保留全部采样信息。 -### 4.2 IIR 滤波(M4 优化:双路 IIR) +### 4.2 IIR 滤波(M4 优化:ALFA_CAP1=79 @10ms) -V2.0 起采用双路 IIR 架构,将基线跟踪与检测判定解耦: +V2.6 起采用单路 IIR,ALFA_CAP1=79 @10ms (τ≈32ms),比旧 50ms tick 的 τ≈162ms 快 5 倍: ```c -#define ALFA_CAP1 18 // 慢速 IIR: α = 18/256 ≈ 0.07, τ≈135ms -#define ALFA_FAST 128 // 快速 IIR: α = 128/256 = 0.5, τ≈28ms -``` +#define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@10ms → τ≈32ms) -| 滤波器 | α | τ @10ms | 输入 | 用途 | -|--------|---|---------|------|------| -| CAPVD (慢速) | 18/256 ≈ 0.07 | 135ms | Value(经斜率限幅) | 基线跟踪 | -| CAPVD_fast (快速) | 128/256 = 0.5 | 28ms | CAPVD(慢速滤波后) | 进入/离开检测判定 | - -**为什么需要双路:** -- 基线跟踪需要**慢响应**,避免将车辆的频率偏移"学"进基线(τ=135ms,等效 M1H 的 79/256 @50ms) -- 检测判定需要**快响应**,快速捕捉车辆进入/离开(τ=28ms,5× 快于旧设计) -- 快速 IIR 输入来自慢速 IIR 的输出,继承斜率限幅的瞬态抑制能力 - -**进入确认**:快速 IIR 连续 3 次低于阈值才判定有车,单次瞬态干扰被过滤。 - -```c -// 快速 IIR: α=0.5 → (old + new) / 2 -loop1_CAPVD_fast = (loop1_CAPVD_fast + loop1_CAPVD) / 2; - -// 进入确认 -if (CAPVD_fast < Origin - dlt_ORG) { - if (++entry_cnt >= 3) - VD_FLAG = 1; // 确认有车 -} else { - entry_cnt = 0; // 恢复到阈值以上则重置 -} +// get_flt_value(): 通用一阶 IIR +CAPVD = (|Value - CAPVD| * ALFA_CAP1) >> 8 // 每 tick 移动 ~31% ``` | 参数 | 值 | 说明 | |------|-----|------| -| α_slow | 18/256 ≈ 0.07 | 慢速 IIR 指数平滑系数 | -| α_fast | 128/256 = 0.5 | 快速 IIR 指数平滑系数 | -| 慢速 τ | ~135ms | 等效 50ms tick 的 79/256 | -| 快速 τ | ~28ms | 5× 快于旧设计 | -| ENTRY_CONFIRM | 3 | 连续确认次数 | +| α | 79/256 ≈ 0.31 | 指数平滑系数 | +| τ | ~32ms @10ms tick | 3 次更新达 63% | +| 噪声抑制 | 良好 | 单次野值影响 < 31% | + +**进入确认**:CAPVD 连续 ENTRY_CONFIRM=3 次低于阈值才判定有车。 + +```c +if (CAPVD < Origin - dlt_ORG) { + if (++entry_cnt >= 3) + VD_FLAG = 1; // 确认有车 +} else { + entry_cnt = 0; // 恢复则重置 +} +``` + +| 对比 | 8051/M1H 旧设计 | V2.6 | +|------|----------------|------| +| tick | 50ms | **10ms** | +| IIR α | 79/256 (@50ms, τ=162ms) | **79/256 (@10ms, τ=32ms)** | +| 确认方式 | 单次阈值 | **连续 3 次** | +| 瞬态抑制 | 无 | **斜率限幅 + 确认** | +| 进入响应 | ~550ms | **~530ms** | ### 4.3 检测判据 @@ -239,9 +233,8 @@ const uint16_t SensTable_1[4] = {108, 72, 18, 9}; // 离开阈值(滞回 #### 4.3.2 进入检测(M4 优化:确认机制) ```c -// 使用快速 IIR (CAPVD_fast) 提高响应速度 -// 连续 ENTRY_CONFIRM 次低于阈值才判定有车 -if (CAPVD_fast < Origin - dlt_ORG) { +// CAPVD 连续 ENTRY_CONFIRM 次低于阈值才判定有车 +if (CAPVD < Origin - dlt_ORG) { entry_cnt++; if (entry_cnt >= ENTRY_CONFIRM) { // 3 次连续确认 VD_FLAG = 1; FLAG_IN = 1; @@ -252,13 +245,12 @@ if (CAPVD_fast < Origin - dlt_ORG) { } ``` -| 对比 | 8051/M1H 旧设计 | M4 优化 | -|------|----------------|---------| -| 判定依据 | CAPVD(慢速 IIR) | **CAPVD_fast**(快速 IIR,5× 响应) | +| 对比 | 8051/M1H 旧设计 | V2.6 M4 优化 | +|------|----------------|-------------| +| 判定依据 | CAPVD (α=79, τ=162ms) | **CAPVD (α=79, τ=32ms)** | | 确认方式 | 单次阈值 | **连续 3 次确认** | | 瞬态抑制 | 无 | **斜率限幅 + 确认双重保护** | -| 进入响应 | ~550ms (50ms tick + 500ms IN_DELAY) | **~530ms** (10ms tick + 3×10ms + 500ms) | -| 误触发风险 | 中 | **低** | +| 进入响应 | ~550ms | **~530ms** | #### 4.3.3 离开检测(滞回) @@ -356,22 +348,18 @@ if (!VD_FLAG) { | 5% 斜率限幅 | 过滤 EMI/闪电尖峰,保护 IIR(V2.0) | | 冻结超时 + 稳定性检查 | 防止永久冻结死锁(V2.3~2.5) | -#### 4.4.3 基线更新速率 +#### 4.4.3 基线更新速率(两阶段) -`vd1_task` 每 ~10ms 执行一次。空闲时每次累加 CAPVD 到 `ORG_SUM`,满 100 次后取平均更新 Origin: +| 阶段 | 窗口 | 周期 | 用途 | +|------|------|------|------| +| 稳定期 (`!g_loop_stable`) | 100 | **1s** | 绕过 IIR/限幅,快速收敛,开机即用 | +| 正常运行 | 500 (WINDOW_ORIGIN) | **5s** | 强噪声抑制,稳定跟踪 | ``` -100 样本 × 10ms/tick = 1000ms = 1 秒 +稳定期: CAPVD = Value (raw) → 100 样本 → Origin 快速建立 +正常: CAPVD = IIR(Value, α=79) → 500 样本 → Origin 稳定跟踪 ``` -| 产品 | 窗口大小 | 更新周期 | 空闲时跟踪 | 有车时冻结 | -|------|---------|---------|-----------|-----------| -| **DLD154V4B** | 100 次 | **1000ms** | ✅ | ✅ | -| **M1H** | 100 次 | 5000ms | ✅ | ❌(有车也跟踪) | -| **TLD-110** | 16 次 | ~800ms | ✅ | ✅ | - -> **注意**:V2.0 将 tick 从 50ms 提升到 10ms,基线更新从每 5 秒加速到每 1 秒 —— 对温漂的跟踪能力显著提升,同时保持 100 窗口的抗噪能力。 - ### 4.5 Origin 污染保护与冻结超时恢复(V1.5 → V2.5) #### 4.5.1 问题演进 @@ -711,3 +699,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的 |------|------|------| | V1.0 | 2026-06-24 | 技术规格书初版(V1.5 固件) | | V2.0 | 2026-06-29 | 更新至 V2.5 固件:双路 IIR、斜率限幅、进入确认、冻结超时+稳定性 | +| V2.1 | 2026-06-29 | 更新至 V2.6:单路 IIR ALFA_CAP1=79, WINDOW_ORIGIN=500, 两阶段基线 |