feat(V4B): V4.23 — 红灯呼吸对齐vd960Loop(≈2.6s) + 上电自检基准判稳
现场测试 DLD154V4 反馈两问题修复:
1. 红灯呼吸太快 → 借鉴 vd960Loop 效果 (main.c poll_red_pwm)
- 参数按 665/6800 缩放取整: 大步 100→39(≈5.9%), 近顶 20→10(≈1.5%),
分界 585(88%), 峰值保持 660×3 步
- 周期 ≈1.6s → ≈2.6s (仿真 42 步×60ms=2520ms)
2. 绿灯上电自检闪到"稳定基准值"才停 (TaskLoop.c 稳定期判稳)
- 根因: 固定 128 样本即判稳, 与基准是否稳定无关; static 计数不清零,
二次稳定期(安全复位)1 样本瞬间判稳
- 修复: 全局 g_stable_cnt/g_settle_cnt, 每窗(100样本≈1s)Origin 均值
漂移 ≤0.1% → settle++, 连续 2 窗 + 最少 128 样本判稳; 硬兜底 500
样本(5s); 计数判稳退出/INIT_VD 清零
验证: tests/test_power_on_stable.c (200/300/500/200 样本 PASS),
tests/test_red_breath.c (周期 2520ms/峰值保持/写值≤ARR PASS),
gcc -fsyntax-only 两文件 0 error (借 vd960Loop AT32F421 库头)
文档: devlog 置顶 + 修订表回填 V2.12~V2.20 + V2.21; product-manual §5.1/
核心特性; technical-spec V2.2 (§5.2 参数表/§7 判稳语义/§15 修订记录)
待现场验证: 呼吸观感、绿灯自检时长 (无车 2~3s / 首窗尖峰 3s / 5s 兜底)
This commit is contained in:
+55
-1
@@ -4,6 +4,51 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-02 — 红灯呼吸对齐 vd960Loop + 上电自检基准判稳(固件 V4.23)
|
||||
|
||||
> **固件版本:V4.23**(cmcng.h:FIRMWARE_VER="4.23" + MAIN=4/SUB=23)。devlog 修订 V2.21。
|
||||
|
||||
### 现场反馈(用户测试 DLD154V4)
|
||||
|
||||
1. **红灯呼吸太快** → 借鉴 vd960Loop 红灯呼吸效果
|
||||
2. **绿灯上电自检闪烁未体现完整自检逻辑** → 应等获得稳定基准值后才停止闪烁
|
||||
|
||||
### 修复 1:红灯呼吸节奏对齐 vd960Loop(main.c `poll_red_pwm`)
|
||||
|
||||
| 项 | 修复前 (V4.22) | 修复后 (V4.23) |
|
||||
|----|---------------|---------------|
|
||||
| PWM 满量程 | TMR14 ARR=665 | 不变 |
|
||||
| 大步长 | +100 (≈15% 量程) | **+39 (≈5.9%)** |
|
||||
| 近顶小步 | +20 (≈3%) | **+10 (≈1.5%)** |
|
||||
| 分界点 | 500/600 (75%/90%) | **585 (88%)** |
|
||||
| 峰值保持 | 3 步 | 3 步 |
|
||||
| 全周期 | **≈1.6s** | **≈2.6s(与 vd960Loop 观感一致)** |
|
||||
|
||||
- vd960Loop 参考参数:满量程 6800,升 <6000 大步 +400 / 近顶 +100,降 -400,60ms/步
|
||||
- V4B 按 `665/6800≈0.0978` 缩放取整:39/10/585/660
|
||||
- 实测仿真:周期 42 步 × 60ms = 2520ms,峰值保持 ≥3 步,写值全程 ≤ ARR
|
||||
|
||||
### 修复 2:绿灯自检闪烁至基准值稳定(TaskLoop.c 稳定期判稳)
|
||||
|
||||
**根因**:原逻辑 `_stable_cnt` 达 128 样本(≈1.3s)即 `g_loop_stable=1`,与"基准值是否真稳定"无关;且 static 计数不清零 → 安全复位等二次稳定期 1 个样本即判稳(绿灯自检形同虚设)。
|
||||
|
||||
**修复**:
|
||||
- 新增 `g_stable_cnt`(累计样本)/ `g_settle_cnt`(连续窗口漂移达标计数),全局变量 `INIT_VD()` 清零、判稳退出时清零
|
||||
- 每窗(100 样本≈1s)完成时比较窗口平均 Origin 漂移:≤ Origin×0.1% → settle+1,否则清零
|
||||
- 判稳条件 = 最少样本 128 + 连续 2 窗漂移达标;**硬兜底 500 样本(5s)** 强制结束自检,防环境长期不稳绿灯无限闪
|
||||
- 绿灯 `poll_green_led()` 条件不变(`INI_LOOP || !power_up || !g_loop_stable`),自检闪烁自然持续到基准值稳定
|
||||
- 安全复位二次稳定期从零开始(原 1 样本瞬间判稳 bug 消除)
|
||||
|
||||
### 验证
|
||||
|
||||
- `tests/test_power_on_stable.c`:常量值判稳样本 200 / 首窗尖峰 300 / 持续漂移 500(兜底) / 二次稳定期 200 —— 4 项 PASS
|
||||
- `tests/test_red_breath.c`:周期 2520ms / 峰值保持 ≥3 步 / 写值 ≤ARR —— PASS
|
||||
- `gcc -fsyntax-only`(借 vd960Loop AT32F421 库头):main.c / TaskLoop.c 语法通过
|
||||
|
||||
**待现场验证**:呼吸周期观感、上电绿灯自检时长(预计无车 2~3s、首窗尖峰 3s、异常漂移至 5s 兜底)
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-02 — DEBUG 改编译器 -DDEBUG 控制 + 版本号 V4.22
|
||||
|
||||
> **固件版本:V4.22**(cmcng.h:FIRMWARE_VER="4.22" + MAIN=4/SUB=22)。devlog 修订 V2.20。
|
||||
@@ -938,8 +983,17 @@ if (dev >= dlt_ORG × 4) {
|
||||
|
||||
| 版本 | 时间 | 说明 |
|
||||
|------|------|------|
|
||||
| V2.10 | 2026-08-28 | 新增 IWDT 硬件看门狗(超时≈1.64s,双保险喂狗);修复 WDT_DIV 分频枚举传值 bug(勿传 16,用 WDT_CLK_DIV_16) |
|
||||
| V2.21 | 2026-09-02 | V4.23 红灯呼吸对齐 vd960Loop(周期≈2.6s);上电自检基准判稳:窗口 Origin 漂移 ≤0.1%×连续 2 窗 + 5s 兜底 |
|
||||
| V2.20 | 2026-09-02 | V4.22 DEBUG 改编译器 -DDEBUG 控制(cmcng.h DEBUG_ENABLE 删除) |
|
||||
| V2.19 | 2026-09-02 | V4.20 负variation铁块锁死修复:基线跟踪双向对称保护(±4×dlt 对称窗口) |
|
||||
| V2.18 | 2026-09-02 | V4.20 Debug 串口打印重组:频率/采样/基准全量输出(DBG/EVT 前缀) |
|
||||
| V2.17 | 2026-09-01 | V4.20 方案B 调校定稿发布版本号(内容同 V4.07) |
|
||||
| V2.16 | 2026-09-01 | V4.06→V4.07 方案B 现场调校定稿:进入加深 + 释放调浅;SENS=0 回调 337 |
|
||||
| V2.14 | 2026-09-01 | V4.05 方案B 实验:快滤波 + 调深释放阈值表(A/B 现场对比) |
|
||||
| V2.13 | 2026-09-01 | V4.04 方案A 修正:RELEASE_ALFA 18→21(精确τ117ms)+ 进入 snap 消除假释放 |
|
||||
| V2.12 | 2026-08-31 | V4.03 释放手感对齐方案A:释放慢滤波 USE_SLOW_RELEASE(α18) |
|
||||
| V2.11 | 2026-08-28 | 灵敏度 0/1 档对齐 PD132T(216/108→300/60,Δf/f 0.33%/0.16%→0.46%/0.09%),客户现场替换平滑交付 |
|
||||
| V2.10 | 2026-08-28 | 新增 IWDT 硬件看门狗(超时≈1.64s,双保险喂狗);修复 WDT_DIV 分频枚举传值 bug(勿传 16,用 WDT_CLK_DIV_16) |
|
||||
| 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 | 验收标准 + 发展路线图文档 |
|
||||
|
||||
@@ -13,7 +13,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
|
||||
|
||||
- **高精度频率测量**:自适应窗口脉冲计数,归一化基线 ≈ 131072,保留全部采样精度
|
||||
- **离开判定**:滞回阈值 + 连续 3 次确认防抖,可选平坦性算法(CN200910309382,默认关闭)
|
||||
- **上电稳定期**:128ms 线圈振荡稳定窗口,避免上电误判
|
||||
- **上电稳定期**:绿灯闪烁表示基准学习中;Origin 窗口均值漂移 ≤0.1%×连续 2 窗(约 2~5s,5s 硬兜底)后才进入检测,避免上电误判
|
||||
- **线圈重连保护**:断开期间保持有车状态,重连后快速恢复,误判率极低
|
||||
- **诊断黄灯**:断开/重连次数编码闪烁,现场故障一目了然
|
||||
- **灵敏度 4 级可调**:通过 DIP 开关配置,0.032% ~ 0.46% 频率变化检测
|
||||
@@ -168,7 +168,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
|
||||
|
||||
| 状态 | 红灯 (PB1) | 绿灯 (LEDA/PA9) | 黄灯 (LEDC/PA10) |
|
||||
|------|-----------|-----------------|-------------------|
|
||||
| 上电自检中 | 呼吸 | **慢闪** (200ms) | 快闪 (200ms) |
|
||||
| 上电自检中 | 呼吸 | **慢闪** (200ms),基准值稳定后停止 (约2~5s) | 快闪 (200ms) |
|
||||
| 正常运行,无车 | 呼吸 | 灭 | 灭 |
|
||||
| 正常运行,有车 | 呼吸 | **亮** | 灭 |
|
||||
|
||||
@@ -183,7 +183,8 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
|
||||
|
||||
- **快闪**:200ms 亮 / 200ms 灭
|
||||
- **N 短闪**:N × (80ms 亮 + 200ms 灭),循环间隔 1.2s
|
||||
- **呼吸**:PWM 渐变,系统运行指示
|
||||
- **呼吸**:PWM 渐变,系统运行指示(周期≈2.6s,V4.23 起对齐 vd960Loop 观感)
|
||||
- **绿灯慢闪(上电自检)**:200ms 亮/灭,持续至基准值稳定(连续窗口 Origin 漂移 ≤0.1%)才停止 (V4.23)
|
||||
|
||||
> **提示**:上电后如果黄灯快闪且绿灯慢闪,说明线圈未连接或已断开;接好线圈后黄灯灭、绿灯正常工作。
|
||||
|
||||
@@ -250,6 +251,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
|
||||
| V2.9 | 2026-08-28 | 平坦性离开判定默认关闭(现场实测不理想),切回简单防抖 |
|
||||
| V2.10 | 2026-08-28 | 新增 IWDT 硬件看门狗(超时≈1.64s,双保险喂狗) |
|
||||
| V2.11 | 2026-08-28 | 灵敏度 0/1 档对齐 PD132T(216/108→300/60),客户现场替换平滑交付 |
|
||||
| V2.12 | 2026-09-02 | 指示灯/自检描述更新(固件 V4.23:红灯呼吸≈2.6s、绿灯自检闪烁至基准稳定) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+20
-8
@@ -1,6 +1,6 @@
|
||||
# DLD154V4B 技术规格书
|
||||
|
||||
> 单路线圈车辆检测器 | 固件版本: V2.6 | 文档版本: V2.1
|
||||
> 单路线圈车辆检测器 | 固件版本: V4.23 | 文档版本: V2.2
|
||||
> 本文档面向工程开发、系统集成及故障深度分析
|
||||
|
||||
---
|
||||
@@ -443,7 +443,10 @@ if (dev < dlt_ORG * 4) {
|
||||
| PULSE_DELAY | 50 | **500 ms** | 脉冲输出宽度 |
|
||||
| HOLD_TIME | 5×1200 | **~5 min** | 有限存在超时 |
|
||||
| LC_HOLD_TIME | 4×1200 | **~4 min** | 安全复位超时 |
|
||||
| STABLE_SAMPLES | 128 tick | **~128 ms** | 上电稳定期 |
|
||||
| STABLE_SAMPLES | 128 tick | **≥1.3 s** | 上电稳定期最少样本(基准漂移达标才判稳,见 §7) |
|
||||
| STABLE_ORIGIN_PPT | 1 | — | 判稳带:窗口 Origin 均值漂移 ≤ Origin×0.1% |
|
||||
| STABLE_SETTLE_WINDOWS | 2 | ~2 s | 连续窗口漂移达标数 |
|
||||
| STABLE_MAX_SAMPLES | 500 tick | **~5 s** | 自检硬兜底上限(超时强制判稳) |
|
||||
| FREEZE_TIMEOUT | 1000 | **~10 s** | 基线冻结超时(连续稳定后更新 Origin) |
|
||||
|
||||
> **M4 优化**:V2.0 将 tick 从 50ms (TMR15 5ms×10) 提升到 10ms (vTaskDelay 10ms)。IIR 系数同步调整(α 从 79/256→18/256),保持等效时间常数。进入确认 3×10ms + 500ms IN_DELAY = ~530ms,比旧设计 (50ms + 500ms = 550ms) 略快。基线更新从 5s 加速到 1s。
|
||||
@@ -522,20 +525,28 @@ Origin 首次确立后,线圈振荡未真正稳定。立即启用检测容易
|
||||
### 7.2 实现
|
||||
|
||||
```c
|
||||
#define STABLE_SAMPLES 128 // ~128ms
|
||||
#define STABLE_SAMPLES 128 // 最少样本 (128×10ms≈1.3s)
|
||||
#define STABLE_ORIGIN_PPT 1 // 判稳带: 窗口均值漂移 ≤ Origin×0.1%
|
||||
#define STABLE_SETTLE_WINDOWS 2 // 连续 2 窗漂移达标判稳
|
||||
#define STABLE_MAX_SAMPLES 500 // 硬兜底 5s (防环境长期不稳无限自检)
|
||||
|
||||
if (!g_loop_stable) {
|
||||
// 仅跟踪基线,不检测车辆
|
||||
// 仅跟踪基线,不检测车辆 (窗=100样本≈1s)
|
||||
update_moving_average(&ORG_SUM, &ORG_CNT, &Origin, CAPVD, 100);
|
||||
if (++_stable_cnt >= STABLE_SAMPLES)
|
||||
g_loop_stable = 1; // 稳定确认,正式启用检测
|
||||
return; // 跳过进入/离开判断
|
||||
// 每窗完成时比较 Origin 均值漂移: ≤0.1% → g_settle_cnt++, 否则清零
|
||||
if ((g_stable_cnt >= STABLE_SAMPLES && g_settle_cnt >= STABLE_SETTLE_WINDOWS)
|
||||
|| g_stable_cnt >= STABLE_MAX_SAMPLES)
|
||||
g_loop_stable = 1; // 基准稳定确认, 正式启用检测 (V4.23)
|
||||
return; // 跳过进入/离开判断
|
||||
}
|
||||
```
|
||||
|
||||
稳定期间绿灯继续慢闪(`poll_green_led` 条件包含 `!g_loop_stable`)。
|
||||
稳定期间绿灯继续慢闪(`poll_green_led` 条件包含 `!g_loop_stable`),**闪烁持续到基准值稳定才停止**。
|
||||
安全复位时 `loop1_LC_Reset` 重置 `g_loop_stable = 0`。
|
||||
|
||||
> **V4.23 判稳语义**:自检结束 = 基准值稳定(连续 2 窗 Origin 漂移 ≤0.1%),而非固定样本数。
|
||||
> 旧实现固定 128 样本即判稳,与基准是否稳定无关,且 static 计数残留导致二次稳定期 1 样本瞬间判稳——已改全局计数并在判稳退出/INIT_VD 时清零。
|
||||
|
||||
---
|
||||
|
||||
## 8. 线圈重连逻辑
|
||||
@@ -740,3 +751,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, 两阶段基线 |
|
||||
| V2.2 | 2026-09-02 | 更新至 V4.23:上电稳定期判稳语义(基准漂移≤0.1%×2窗 + 5s兜底)、红灯呼吸周期≈2.6s、绿灯自检描述 |
|
||||
|
||||
Reference in New Issue
Block a user