diff --git a/docs/devlog.md b/docs/devlog.md index 421c4cc..9488de2 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -4,6 +4,35 @@ --- +## 2026-08-28 — 平坦性离开判定默认关闭(现场实测不理想) + +### 背景 + +同一现场(广告杆/道闸)与 V2.8 SENS=3 调档同源。广告杆落杆误触发排查中发现,平坦性三条件离开判定(CN200910309382,V1.4 移植)在真实场景**响应不理想**: + +- 平坦性依赖"第一上升坡面"动态计算 Δ2/Δ3,车辆离开缓慢/多次驻留时,坡面特征不稳定,Δ2/Δ3 失真 +- 三条件(|f-fb|=3`),与 DLD154Pro 当前行为一致 +- 平坦性代码完整保留在 `#if USE_FLATNESS_EXIT` 内,可一行开启做现场对比 +- 全部平坦性状态变量/初始化/进入重置均带 `#if` 包裹,改 0 直接编译剔除,无残留引用 + +### 同步文档 + +- `technical-spec.md` §4.3.3:模式 1 标为默认(V2.9 起),模式 2 标"默认禁用(#if 0,代码保留)";修正模式 1 伪代码方向错误(`CAPVD < Origin + dlt` → `(Origin - dlt) < CAPVD`) +- `product-manual.md` / `release-notes.md` / `roadmap.md`:离开判定口径统一为"滞回 + 连续确认(平坦性可选)" +- 版本历史补 V2.7/V2.8(此前 release-notes/product-manual 缺行),本次记 **V2.9** + +--- + ## 2026-06-23 — 跳出框框:去掉 >>6 精度浪费 ### 背景 @@ -539,6 +568,7 @@ if (dev >= dlt_ORG × 4) { | 版本 | 时间 | 说明 | |------|------|------| +| V2.9 | 2026-08-28 | 平坦性离开判定默认关闭(现场实测不理想),切回简单 cnt_release 防抖 | | V2.8 | 2026-08-27 | 灵敏度最高档 SENS=3 阈值 10→20、离开 9→14(防误触发);清理 g_input_div 重复定义 | | V2.7 | 2026-06-30 | 验收标准 + 发展路线图文档 | | V2.6 | 2026-06-29 | 架构简化: 单路 IIR ALFA_CAP1=79, WINDOW_ORIGIN=500, 稳定期100 | diff --git a/docs/product-manual.md b/docs/product-manual.md index 74da13b..5e7d257 100644 --- a/docs/product-manual.md +++ b/docs/product-manual.md @@ -7,16 +7,16 @@ ## 1. 产品概述 -DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈车辆检测器**。通过实时监测埋地线圈的 LC 振荡频率变化,精确检测车辆的存在与离开。产品采用专利级平坦性离开判定算法(CN200910309382),有效解决大车通行时频率多峰导致的误触发问题。 +DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈车辆检测器**。通过实时监测埋地线圈的 LC 振荡频率变化,精确检测车辆的存在与离开。离开判定采用滞回阈值 + 连续确认防抖,可选平坦性离开判定算法(CN200910309382,默认关闭)。 ### 1.1 核心特性 - **高精度频率测量**:自适应窗口脉冲计数,归一化基线 ≈ 131072,保留全部采样精度 -- **专利离开判定**:频率 + 一阶导数 + 二阶导数三条件平坦性判定,防大车误检 +- **离开判定**:滞回阈值 + 连续 3 次确认防抖,可选平坦性算法(CN200910309382,默认关闭) - **上电稳定期**:128ms 线圈振荡稳定窗口,避免上电误判 - **线圈重连保护**:断开期间保持有车状态,重连后快速恢复,误判率极低 - **诊断黄灯**:断开/重连次数编码闪烁,现场故障一目了然 -- **灵敏度 4 级可调**:通过 DIP 开关配置,0.015% ~ 0.33% 频率变化检测 +- **灵敏度 4 级可调**:通过 DIP 开关配置,0.031% ~ 0.33% 频率变化检测 - **双输出模式**:存在输出 / 脉冲输出可选 - **宽频率范围**:支持 30 ~ 200 kHz 线圈频率 @@ -105,7 +105,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈 ↓ 车辆离开 → f ↓ → f ≈ f₀ ↓ - 平坦性三条件确认 → 判定"无车" + 滞回 + 连续 3 次防抖确认 → 判定"无车" ``` ### 4.2 灵敏度配置 @@ -117,7 +117,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈 | ON (1) | ON (1) | **低** | 0.33% | 大车 / 高底盘车辆 | | ON (1) | OFF (0) | **中** | 0.16% | 普通轿车 | | OFF (0) | ON (1) | **高** | 0.055% | 摩托车 / 小轿车 | -| OFF (0) | OFF (0) | **最高** | 0.015% | 高灵敏度场景 | +| OFF (0) | OFF (0) | **最高** | 0.031% | 高灵敏度场景 | > **注**:DIP 拨向 ON = 1。灵敏度越高,检测越灵敏,但也越容易受环境干扰。建议从"中"灵敏度开始调试。 @@ -222,7 +222,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈 | 绿灯从不亮 | 灵敏度太低 / 线圈 Q 值过低 | 提高灵敏度 / 更换线圈 | | 红灯不亮 | 电源故障 | 检查供电电压 | | 频繁误触发 | 电磁干扰 / 灵敏度太高 | 降低灵敏度 / 屏蔽干扰源 | -| 大车通过时多次触发 | 旧版固件 / 平坦性未开启 | 升级 V1.4+ 固件 | +| 大车通过时多次触发 | 灵敏度太高 / 环境干扰 | 降低灵敏度 / 排除干扰源;必要时固件开启平坦性判定(USE_FLATNESS_EXIT=1) | | 安全复位后不恢复 | 线圈频率异常 | 检查线圈电感是否在范围内 | --- @@ -242,6 +242,9 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈 | 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 | +| V2.7 | 2026-06-30 | 验收标准 + 发展路线图文档 | +| V2.8 | 2026-08-27 | 灵敏度最高档 SENS=3 阈值 10→20、离开 9→14(防误触发) | +| V2.9 | 2026-08-28 | 平坦性离开判定默认关闭(现场实测不理想),切回简单防抖 | --- diff --git a/docs/release-notes.md b/docs/release-notes.md index 8e42ad9..69a5a67 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,6 +1,6 @@ # DLD154V4B 产品发布说明 -> 固件版本 **V2.6** | 发布日期 2026-06-29 +> 固件版本 **V2.9** | 发布日期 2026-08-28 > 单路线圈车辆检测器 · ARM Cortex-M4 · 单路 IIR + 智能基线 --- @@ -27,19 +27,18 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 线圈直连 MCU (PA7/TIM3_CH2),无 CD4060 分频芯片,120MHz 主频下中断率 < 3% CPU。 -### 2. 专利级离开判定 +### 2. 离开判定(滞回 + 连续确认) -基于专利 **CN200910309382**(中山大学),采用频率 + 一阶导数 + 二阶导数**三条件同时满足**才确认离开: +有车状态下 CAPVD 回升至距基线不足离开阈值(`SensTable_1`,更小的滞回),**连续 3 次确认**才判定离开,瞬态干扰不落杆: -``` -① |f - f_b| < 频率阈值 — 频率回归基线 -② |f'| < 动态 Δ2 — 一阶斜率近零 -③ |f''| < 动态 Δ3 — 二阶曲率近零 +```c +dlt_ORG = (Origin * SensTable_1[SENS]) >> 16; +if ((Origin - dlt_ORG) < CAPVD) { // 回升至距基线不足 dlt + if (++cnt_release >= 3) VD_FLAG = 0; // 连续 3 次确认 +} ``` -Δ2、Δ3 从车辆第一上升坡面**动态计算**,跟随每辆车的实际频率特征。大车通行时的多峰、负波峰不再触发误离开。 - -编译开关 `USE_FLATNESS_EXIT` 一行切换回传统 `cnt_release` 防抖,方便现场对比。 +可选平坦性离开判定(专利 **CN200910309382**,频率 + 一阶导数 + 二阶导数三条件同时满足,Δ2/Δ3 从第一上升坡面动态计算),代码完整保留在 `#if USE_FLATNESS_EXIT` 内——**V2.9 起默认关闭**(现场实测不理想),需要时在 TaskLoop.h 一行开启。 ### 3. 智能诊断指示灯 @@ -85,7 +84,7 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 |------|-----| | MCU | AT32F421F8P7 (Cortex-M4, 120MHz, 64KB Flash, 16KB SRAM) | | 线圈通道 | 1 路,30~200kHz | -| 灵敏度 | 4 级(DIP),0.015% ~ 0.33% | +| 灵敏度 | 4 级(DIP),0.031% ~ 0.33% | | tick 周期 | 10ms (M4 优化) | | 进入防抖 | 500ms + 3 次连续确认 | | 离开防抖 | 500ms(SW_4=ON)或 0(SW_4=OFF) | @@ -114,7 +113,7 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 | ON | ON | 低 | 0.33% | | ON | OFF | 中 | 0.16% | | OFF | ON | 高 | 0.055% | -| OFF | OFF | 最高 | 0.015% | +| OFF | OFF | 最高 | 0.031% | --- @@ -137,6 +136,9 @@ DLD154V4B 是一款面向道闸控制、车位检测、ETC 收费站等场景的 | V2.4 | 06-29 | 冻结超时增加稳定性检查(CAPVD 需连续稳定在 ±2% 窗口内) | | V2.5 | 06-29 | 冻结超时 30s→10s | | **V2.6** | **06-29** | **架构简化: 单路 IIR 79@10ms, WINDOW_ORIGIN=500, 稳定期100** | +| V2.7 | 06-30 | 验收标准 + 发展路线图文档 | +| V2.8 | 08-27 | 灵敏度最高档 SENS=3 阈值 10→20、离开 9→14(防误触发) | +| **V2.9** | **08-28** | **平坦性离开判定默认关闭(现场实测不理想),切回简单 cnt_release 防抖** | --- diff --git a/docs/roadmap.md b/docs/roadmap.md index 6084d71..55d5963 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -10,7 +10,7 @@ |------|------|------|------|-------|---------|---------|---------| | M1H | 8051 12MHz | CD4060 ÷32 | 50ms | 162ms | 单次阈值 | 单次阈值 | 拨码 | | TLD-110 | 8051 | CD4060 ÷32 | 50ms | 162ms | 单次阈值 | 单次阈值 | 拨码 | -| **V4B V2.6** | M4 120MHz | TIM3 ÷2 | **10ms** | **32ms** | **3次确认+斜率限幅** | **平坦性三条件** | 拨码 | +| **V4B V2.9** | M4 120MHz | TIM3 ÷2 | **10ms** | **32ms** | **3次确认+斜率限幅** | **简单防抖(平坦性默认关)** | 拨码 | ### 1.1 V4B 相比 M1H 的核心突破 @@ -20,7 +20,7 @@ | 测量窗口 | 17.5ms 固定 | **~1ms 自适应** | 17× | | 检测响应 | ~550ms | **~530ms** | 略快,但加了确认更可靠 | | 瞬态抑制 | 无 | **斜率限幅 + 进入确认** | 从无到有 | -| 离开判定 | 单阈值 | **平坦性三条件 (专利)** | 大车多峰无忧 | +| 离开判定 | 单阈值 | **滞回 + 3 次确认(平坦性可选,默认关)** | 防瞬态误落杆 | | 基线保护 | 无(有车也跟踪) | **冻结 + 10s 超时 + 稳定性检查** | 防污染 + 不死锁 | | 线圈诊断 | 无 | **黄灯断开次数编码** | 现场可排障 | | 代码量 | ~1200 行 (未精简) | **~945 行** | 功能更多,代码更少 | diff --git a/docs/technical-spec.md b/docs/technical-spec.md index fde44ca..50f8c38 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -35,7 +35,7 @@ FreeRTOS Kernel (CMSIS-RTOS v2) │ │ ├── 斜率限幅 (MAX_SLOPE_RATE=5%) │ │ ├── 基线跟踪 (500 窗口滑动平均, 5s) │ │ ├── 进入确认 (ENTRY_CONFIRM=3 次) -│ │ ├── 离开检测 (平坦性 / cnt_release) +│ │ ├── 离开检测 (cnt_release 防抖,平坦性 #if 可选) │ │ ├── 时序状态机 (IN/OUT/PULSE/HOLD) │ │ └── 冻结超时恢复 (10s + ±2% 稳定性检查) │ ├── poll_sw_state() — 拨码去抖 @@ -256,11 +256,11 @@ if (CAPVD < Origin - dlt_ORG) { #### 4.3.3 离开检测(滞回) -##### 模式 1:简单防抖 (USE_FLATNESS_EXIT=0) +##### 模式 1:简单防抖 (USE_FLATNESS_EXIT=0) — 默认(V2.9 起) ```c dlt_ORG = (Origin * SensTable_1[SENS]) >> 16; // 更小的离开阈值 -if (CAPVD < Origin + dlt_ORG) { +if ((Origin - dlt_ORG) < CAPVD) { // CAPVD 回升至距基线不足 dlt → 离开 if (++cnt_release >= 3) { // 连续 3 次确认 VD_FLAG = 0; FLAG_OUT = 1; } @@ -269,10 +269,12 @@ if (CAPVD < Origin + dlt_ORG) { } ``` -##### 模式 2:平坦性判定 (USE_FLATNESS_EXIT=1) — 默认 +##### 模式 2:平坦性判定 (USE_FLATNESS_EXIT=1) — ⚠ 默认禁用(#if 0,代码保留) 基于专利 **CN200910309382**(中山大学),解决大车通行时频率多峰导致的多次误触发。 +> ⚠ **2026-08-28 现场结论:平坦性算法实测不理想,默认关闭(USE_FLATNESS_EXIT=0)**,离开判定切回简单 cnt_release 防抖(模式 1)。平坦性代码完整保留在 `#if USE_FLATNESS_EXIT` 内,可在 TaskLoop.h 一行开启,现场对比验证用。 + **算法架构:** ``` @@ -641,9 +643,9 @@ DLD154V4B/ | 指标 | 值 | 说明 | |------|-----|------| | 进入检测延迟 | < 3 ms (测量) + 3×10ms (确认) + 500 ms (防抖) = **~530 ms** | M4 优化,比旧 550ms 略快 | -| 离开检测延迟 | < 3 ms (测量) + 平坦性确认 + 500 ms (防抖) | 含双重确认 | +| 离开检测延迟 | < 3 ms (测量) + 3×10ms (防抖确认) + 500 ms (可选延时) | 滞回 + 3 次确认 | | 误检率(单阈值) | — | 基准参考 | -| 误检率(平坦性) | 显著降低 | 大车多峰场景 | +| 误检率(防抖) | 滞回 + 3 次确认 | 瞬态干扰免疫(平坦性 #if 可选) | | 频率分辨率 | < 0.01% | 取决于线圈 Q 值 | | 温漂补偿 | 自动(100 窗口基线跟踪,更新周期 ~1s) | 仅无车时;冻结超时 10s | | 瞬态抑制 | 5% 斜率限幅 + 3 次进入确认 | EMI/闪电免疫 | @@ -673,8 +675,8 @@ DLD154V4B/ ```c // TaskLoop.h -#define USE_FLATNESS_EXIT 1 // 1 = 平坦性离开判定 (CN200910309382) - // 0 = 简单 cnt_release 防抖 +#define USE_FLATNESS_EXIT 0 // 1 = 平坦性离开判定 (CN200910309382) + // 0 = 简单 cnt_release 防抖 (V2.9 默认) // M4 优化参数 #define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% @@ -691,7 +693,7 @@ DLD154V4B/ |--------|------|--------|------| | CN200910309382 | 一种防误检环形线圈车辆检测器 | 中山大学 张辉/黄永强/陈古典 | 平坦性三条件离开判定 | -DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的离开判定,有效抑制频率曲线多峰导致的多次误触发。 +DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的离开判定,有效抑制频率曲线多峰导致的多次误触发。**V2.9(2026-08-28)起默认关闭(现场实测不理想),代码保留在 `#if USE_FLATNESS_EXIT` 内可一行开启。** --- diff --git a/utilities/at32f421_freertos_demo/inc/TaskLoop.h b/utilities/at32f421_freertos_demo/inc/TaskLoop.h index 28f2c76..dd0df5c 100644 --- a/utilities/at32f421_freertos_demo/inc/TaskLoop.h +++ b/utilities/at32f421_freertos_demo/inc/TaskLoop.h @@ -44,7 +44,7 @@ * 离开检测模式 * 1 = 平坦性三条件判定 (CN200910309382), 0 = 简单 cnt_release 防抖 *===========================================================================*/ -#define USE_FLATNESS_EXIT 1 +#define USE_FLATNESS_EXIT 0 #define WINDOW_ORIGIN 500 // 基线跟踪窗口 (500 × 10ms = 5s)