wangfq
|
5799bd535d
|
chore(V4B): V4.22 — DEBUG改编译器-DDEBUG控制, 删除cmcng.h DEBUG_ENABLE块
- cmcng.h: 删除 DEBUG_ENABLE 宏块, DEBUG 由编译器预处理器设置
- 版本: FIRMWARE_VER 4.20→4.22, SUB 20→22
- 编译调试版: Keil C/C++ 预定义符号加 DEBUG; 发布版不带即关闭打印
|
2026-09-02 11:57:01 +08:00 |
|
wangfq
|
8cbd69a111
|
fix(V4B): debug打印t=0ms bug + freeze_ref残留清零 (V4.20)
日志复现: DBG行t恒为0(先归零后打印) — 改为先取时间再归零
FRZ=0/129058 ref残留(正常跟踪未清) — 对称窗口分支补 freeze_ref=0
无功能影响, 仅打印正确性/美观
|
2026-09-02 11:25:47 +08:00 |
|
wangfq
|
36321a171f
|
fix(V4B): 负variation铁块锁死修复 — 基线跟踪双向对称保护 (V4.20)
现场: 特殊铁块(磁导率主导)靠近 → variation负 → Origin被污染 → 离开时假进入 → 锁死不释放
根因: 基线跟踪单边保护(只挡dev>+4×dlt), 负偏差(CAPVD>Origin)照常更新Origin
FREEZE_TIMEOUT=10s后直接跳污染值更彻底
修复:
1. 偏差窗口对称 [-4×dlt, +4×dlt] — 负偏差也冻结基线
2. 负偏差只冻结、永不超时更新Origin(铁块停留多久不污染)
3. 正偏差保留FREEZE_TIMEOUT兜底(车辆长时间信号不丢)
4. 新增 EVT|neg_var_freeze 事件打印
单测: tests/test_neg_variation.c 6项全过(决策/超时/场景仿真)
文档: devlog V2.19
|
2026-09-02 10:26:41 +08:00 |
|
wangfq
|
278d470b60
|
feat(V4B): Debug串口打印重组 — 频率/采样/基准全量输出 (V4.20)
现场有影响算法的异常待分析, 扩充调试输出:
1. 周期状态行(2s, DBG|前缀): f频率kHz/Xn/LPCNT/Value/CAPVD/slow/Origin/dlt/SENS/VD/FRZ/LIM/LOOP/STBL
- calc_freq_khz(): f=60000×LPCNT/CAPVD (60MHz捕获时钟, 无车≈99kHz/深车124kHz验证✓)
- g_slope_limit_cnt: 斜率限幅截断计数(EMI线索, 周期清零)
2. 事件行(EVT|前缀): enter_try(进入线首中)/leave_try(离开线首中)/loop_disconnect/loop_reconnect
- 原有 Car_In/Car_OFF/Loop stable/Baseline timeout 保留
3. cmcng.h 新增 DEBUG_ENABLE 开关(1=开现场分析 0=关发布)
文档: devlog V2.18
|
2026-09-02 09:49:24 +08:00 |
|
wangfq
|
5b0a4c26d7
|
chore(V4B): 发布定稿版本号 V4.20 (方案B调校内容, 版本号按产品线跳号)
- cmcng.h: FIRMWARE_VER 4.07→4.20, SUB 7→20
- devlog V2.17: V4.20 发布条目 + 历史版本对照
- 代码内容与 V4.07 一致(方案B: 进入{337,71,38,25}/释放{51,27,18,12})
v4.20-release
|
2026-09-01 18:05:48 +08:00 |
|
wangfq
|
3d8f412f33
|
feat(V4B): V4.07 SENS=0 触发回调 357→337 — 最终表 {337,71,38,25}/{51,27,18,12}
现场反馈: 等比值偏低档触发过深, SENS=0 回调至 337(300~357 折中)
- 进入表: {357,71,38,25} → {337,71,38,25}
- 释放表: {51,27,18,12} 不变
单测: test_planb_release.c 断言更新(V4.07), 全部通过
文档: devlog V2.16 + technical-spec §4.3.3
|
2026-09-01 15:31:05 +08:00 |
|
wangfq
|
778664067e
|
feat(V4B): 方案B现场调校定稿 V4.06 — 进入加深+释放调浅双表, 全档等比
现场实测: SENS=3 进入21→25 + 释放14→12 接近PD132T最高灵敏手感(用户调校)
- 关键认知: 释放方向是CAPVD向Origin恢复, 释放线调浅(dlt小)→更晚释放
(V4.05加深方向失败已记录, 现场实测确认调小有效)
- 全档等比: 进入×25/21 {300,60,32,21}→{357,71,38,25}
释放×12/14 {60,32,21,14}→{51,27,18,12}
- 滞回 66%→47%, 触发更严+释放更晚, 行为等效PD132T(表值不再一致)
- 废弃 ReleaseTable_B 独立表(方向错误, 并入 SensTable_1 调校)
单测: test_planb_release.c 更新(滞回正/表值/调浅释放≥原始4档×4速/释放时刻) ✓
test_release_slow_filter.c(方案A)仍通过
文档: devlog V2.15 + technical-spec §4.3.3 V4.06段
⚠ SENS=0 进入300→357变化大, 现场低档漏检可单独回调
|
2026-09-01 14:38:52 +08:00 |
|
wangfq
|
9f132c1e16
|
docs: 方案B现场实测记录 — 加深表/原始表均早于PD132T, 实验判死回方案A
实测: USE_PLANB_TABLE=1(加深)释放更早, =0(原始)也早于PD132T — 仿真方向预测完全验证
结论: 方案B不可行(阈值表=固定偏移, 无法复现慢滤波的速度相关滞后)
路线: 回方案A, 下一步测 v4.04-planA (α21+snap 完整修正版)
|
2026-09-01 14:07:43 +08:00 |
|
wangfq
|
60413be73f
|
feat(V4B): 方案B实验 V4.05 — USE_SLOW_RELEASE=0 + 调深释放阈值表 ReleaseTable_B
对比路线(与V4.04方案A A/B): 释放走快滤波(无慢滤波状态, 消除悬停风险),
手感对齐改由调深释放表 {80,42,27,18}(原始{60,32,21,14}加深30%)承担。
⚠关键认知(仿真+单测双确认): 释放方向是CAPVD向Origin恢复,
dlt增大(调深)→释放线降低→释放更早(与'调深=更严格'直觉相反)。
仿真预测: 深信号(≥0.2%)原始表更接近PD132T; 浅信号(0.1%)加深表更接近。
单测: tests/test_planb_release.c 新增(滞回为正✓/加深表释放≤原始表✓/释放时刻合理✓)
test_release_slow_filter.c(方案A)仍通过, 两方案可回归
文档: devlog V2.14 + technical-spec §4.3.3 方案B段
v4.05-planB
|
2026-09-01 13:48:22 +08:00 |
|
wangfq
|
97a7fb2dba
|
fix(V4B): 方案A现场复核修正 V4.04 — RELEASE_ALFA 18→21(精确τ117ms对齐PD132T) + 进入snap消除HR0/2假释放
现场金属板复测两现象:
1. 慢速抬板释放高度 V4B 仍比 PD132T 高一点(跟手速有关) — 根因: τ对齐用了近似口径
(α18 精确τ≈137ms vs PD132T α79@43.7ms 精确τ≈118ms, α=79时 T×256/α 高估19.6%)
+ V4B 3次确认30ms。修正: RELEASE_ALFA 18→21 (精确τ≈117ms)。
2. 定在HR0/2(释放高度一半)保持~1s V4B释放、PD132T不释放 — 根因: 双滤波进入瞬态假释放
(快滤波30ms确认进入, 慢滤波还悬在基线附近, 残余信号0.032%~0.044%时释放条件瞬时为真)。
修正: 进入确认瞬间 snap loop1_CAPVD_slow = loop1_CAPVD (进入线恒深于离开线, 释放条件结构性为假)。
验证: gcc单测 τ fast=30ms/slow=120ms, 释放时机差 200ms ✓
仿真: 3s抬升高度差 +9mm→+3mm; 0.10%板HR0/2假释放消除 ✓
文档: devlog V2.13 + technical-spec §4.3.3
v4.04-planA
|
2026-09-01 09:46:55 +08:00 |
|
wangfq
|
9391e1b808
|
feat(V4B): 释放手感对齐 PD132T — 释放慢滤波(方案A, 固件 V4.03)
现场金属板测试: 灵敏度表已对齐, 但释放高度 V4B 比 PD132T 低
(刚离开触发位置即释放 vs 需离更远)。根因: IIR 滤波时间常数差异
(V4B 10ms+α79→τ32ms vs PD132T 43.7ms+α79/64→τ142~175ms),
释放阈值浅(进入20%)放大差异。
修复(USE_SLOW_RELEASE 开关, 默认 1):
- 新增独立慢滤波 loop1_CAPVD_slow(α=18/256 @10ms→τ≈142ms),
吃原始 Value 不经斜率限幅, 复刻 PD132T 恢复速度
- 离开判定改用慢滤波值, 进入路径不变
- RELEASE_ALFA=18 可调(PD132T SET_FLT=ON 时用 15≈τ170ms)
- 同步: INIT_VD/稳定期/线圈重连
- 版本 V4.03(顺带修正 cmcng.h 字符串"4.00"与数字 4/2 不一致)
验证: gcc 单测 tests/test_release_slow_filter.c
τ fast=30ms/slow=140ms; 释放时机差 260ms ✓
文档: technical-spec §4.3.3 + devlog V2.12
待板级: 真机金属板测试 + MRS 编译
|
2026-08-31 16:52:45 +08:00 |
|
wangfq
|
f0f2c29a04
|
V2.11: 灵敏度表全档与PD132T完全一致{300,60,32,21}/{60,32,21,14}(用户本机已调) + 全文档同步
|
2026-08-28 17:39:07 +08:00 |
|
wangfq
|
e3fe373fe5
|
V2.11: 离开表改回分档{60,32,21,14}——现场确认SENUP标贴OFF=SET_ASB=1(出厂默认) + 文档同步
|
2026-08-28 11:55:30 +08:00 |
|
wangfq
|
c43d5297cb
|
V2.11: 拨码低有效(标贴ON=电平0)修正——恒14对应SENUP标贴ON, 出厂默认全OFF=分档态
|
2026-08-28 11:51:13 +08:00 |
|
wangfq
|
0651c3f67b
|
V2.11: technical-spec §4.3.3 补充恒14离开阈值设计依据(对齐PD132T默认)
|
2026-08-28 11:44:37 +08:00 |
|
wangfq
|
1f308e4a44
|
V2.11 devlog: 增强滤波FLT不纳入对齐(现场少用, 2026-08-28决策)
|
2026-08-28 11:41:33 +08:00 |
|
wangfq
|
7b2de21ef4
|
V2.11: 离开表恒14对齐PD132T默认(ASB=OFF), 进入+离开双向对齐 + 文档同步
|
2026-08-28 11:40:49 +08:00 |
|
wangfq
|
b3bbb29300
|
feat(DLD154V4B): V2.11 灵敏度 0/1 档对齐 PD132T(216/108→300/60)
PD132T 客户现场替换平滑交付:
- SensTable {216,108,36,20} → {300,60,36,20}
0/1 档严格对齐 PD132T (Δf/f 0.33%/0.16%→0.46%/0.09%)
2/3 档保持 V4B 优化值 (与 PD132T 32/21 几乎一致)
- 离开表不动 (3 次确认+滞回已更稳)
- 文档同步: technical-spec/product-manual/release-notes/devlog (V2.11)
- 完整交付分析: vd-analysis/docs/pd132t-to-v4b-delivery-alignment.md
|
2026-08-28 10:38:02 +08:00 |
|
wangfq
|
794e097587
|
fix(DLD154V4B): 修复 WDT_DIV 分频枚举传值 bug — 实际分频 4 导致 410ms 超时不断复位
现场实测 LIMIT=100 (500ms 喂狗) 不断复位重启, 改 50 正常。
根因: wdt_divider_set() 参数是枚举值 (WDT_CLK_DIV_16=0x02),
宏误传 16 (0b10000) -> 3bit 寄存器截断为 0 = WDT_CLK_DIV_4
-> 实际分频 4, 超时 4x4096/40k = 410ms < 500ms 喂狗周期。
修复: WDT_DIV=2 (枚举值) + (wdt_division_type) 显式转换。
隔离测试 mock 升级为 3bit 截断+反推分频, 复现 bug 并断言修复。
vd960Loop 原实现用 WDT_CLK_DIV_64 枚举写法, 无此问题。
|
2026-08-28 09:08:42 +08:00 |
|
wangfq
|
8f43f8f1c9
|
feat(DLD154V4B): V2.10 新增 IWDT 硬件看门狗(超时≈1.64s,双保险喂狗)
- 对齐 DLD154Pro V3.03 方案: TMR15 ISR 5ms 递增 g_wdg_counter,
主循环 poll_wdg() 每 500ms 喂狗, 超时 16×4096/40k ≈ 1.64s
- 双保险: ISR 死→计数不涨→永不喂狗; 主循环死→poll_wdg 不执行→复位
- main() 使能后立即喂一次, 给 FreeRTOS 启动留足时间
- 隔离测试 5 项断言全过 (init 配置/10s 喂狗 20 次/ISR 死不喂/边界 99-100 tick)
- 文档同步: technical-spec(架构图+§13.1 机制) / release-notes(V2.10)
/ product-manual(特性+版本) / roadmap / devlog
|
2026-08-28 08:56:33 +08:00 |
|
wangfq
|
859842aba0
|
feat(DLD154V4B): V2.9 平坦性离开判定默认关闭(现场实测不理想)+ 全量文档同步
- TaskLoop.h: USE_FLATNESS_EXIT 1→0,离开判定切回简单滞回 3 次防抖
(与 DLD154Pro 一致);平坦性代码保留 #if 内可一行开启
- technical-spec: 模式1标默认(V2.9起)/模式2标禁用;修正模式1伪代码
方向错误(CAPVD<Origin+dlt → (Origin-dlt)<CAPVD);延迟/误检率表同步
- product-manual/release-notes: 离开判定口径改'滞回+连续确认(平坦性可选)',
最高档灵敏度 0.015%→0.031%(V2.8 残留);版本历史补 V2.7/V2.8 缺行
- roadmap: V2.6→V2.9 行更新 + 突破表离开判定
- devlog: 置顶 2026-08-28 条目(背景/决定/同步清单)
|
2026-08-28 08:45:34 +08:00 |
|
wangfq
|
cb1c9c3f82
|
docs(DLD154V4B): 补充 SENS=3 调档现场原因 — 广告杆落杆误触发
现场现象: 广告杆/道闸落杆时最高灵敏度档(10/9)易误触发, 落杆机械动作+电机
电磁扰动越过 0.015% Δf/f 阈值。V2.8 调至 20/14(0.031% + 滞回70%)后
落杆扰动不再越线, 正常车辆信号(ΔL/L 1~5%)不受影响。
|
2026-08-27 16:26:24 +08:00 |
|
wangfq
|
50dbb07dde
|
feat(DLD154V4B): 灵敏度最高档调整 SENS=3 10→20 + 文档同步
- src/TaskLoop.c: SensTable[3] 10→20 (Δf/f 0.015%→0.031%,
ΔL/L 0.031%→0.061%), SensTable_1[3] 9→14 (滞回 90%→70%) —
最高档原阈值贴近噪声底易误触发, 提高并加大滞回
- src/main.c: 注释掉重复定义 g_input_div=1 (TaskLoop.c:23 已有, 清理 ODR)
- docs/technical-spec.md §4.3.1 灵敏度表+表格+口径说明
- docs/reference_analysis.md §5.6 灵敏度表
- docs/devlog.md 置顶 2026-08-27 条目 + 修订记录 V2.8
|
2026-08-27 16:22:58 +08:00 |
|
wangfq
|
d5fc1ea1f7
|
docs: 环路车辆检测器验收标准 V1.0
|
2026-06-30 14:25:42 +08:00 |
|
wangfq
|
7c276e5049
|
docs: DLD154V4B 发展路线图 V1.0 — M1H→V4B 演进回顾 + V3.0 目标
|
2026-06-30 11:50:04 +08:00 |
|
wangfq
|
266ffc5909
|
docs: 四文档更新至 V2.6 — 单路 IIR + WINDOW_ORIGIN=500
- 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 修订记录
|
2026-06-29 19:16:11 +08:00 |
|
wangfq
|
8f951b356f
|
tune: 稳定期基线窗口 500→100, 开机 Origin 收敛加速
稳定期用 100 样本 × 10ms = 1s 快速收敛, 开机即用。
稳定后切换为 WINDOW_ORIGIN=500 (5s) 提供更强的噪声抑制。
|
2026-06-29 18:45:29 +08:00 |
|
wangfq
|
e839943436
|
refactor: 去掉快速 IIR,单路 IIR ALFA_CAP1=79 @10ms (τ≈32ms)
ALFA_CAP1=79 @10ms, τ≈32ms — 已足够快,无需双路 IIR 的复杂度。
保留所有 V2 保护机制: 斜率限幅、进入确认、冻结超时+稳定性检查。
改动:
- ALFA_CAP1: 18→79
- 删除 CAPVD_fast 变量及双路 IIR 逻辑
- 进入检测改用 CAPVD 直接判定(仍保留 ENTRY_CONFIRM=3)
- 净删 50 行,架构更简洁
|
2026-06-29 18:35:13 +08:00 |
|
wangfq
|
3ddde99273
|
fix: 快速 IIR 斜率限幅参考改为 CAPVD_fast,解决 ALFA_CAP1=18 响应慢
根因: 斜率限幅 max_step = CAPVD × 5%,但 CAPVD 受 ALFA_CAP1=18
拖累(τ=135ms),在车辆骤入时移动不足,导致 clamped_value 被过度砍削。
快速 IIR 吃到的 fast_input 已经是"被慢速 CAPVD 限制过的值"。
修复: 快速路径独立做斜率限幅,参考 CAPVD_fast (τ=28ms)。
两路各用各的参考基准,快慢解耦:
慢速: clamped = clamp(Value, CAPVD ± 5%) → IIR_slow → CAPVD
快速: fast_input = clamp(Value, CAPVD_fast ± 5%) → IIR_fast
ALFA_CAP1 只影响基线跟踪,不再拖累进入检测速度。
|
2026-06-29 17:56:38 +08:00 |
|
wangfq
|
ee00176cdd
|
fix: 快速 IIR 输入改为限幅后原始值,不再经慢速 IIR 滞后
根因: CAPVD_fast = (CAPVD_fast + CAPVD) / 2 中 CAPVD 已被
ALFA_CAP1=18 (τ=135ms) 严重滞后。快速 IIR 的 α=0.5 无法
恢复前级丢失的响应速度,导致 ALFA_CAP1=18 的实际进入灵敏度
显著低于 ALFA_CAP1=79(旧设计)。
修复: 快速 IIR 直接吃斜率限幅后的 clamped_value / Value,
完全跳过慢速 IIR,真正实现 τ≈28ms 的响应速度。
数据流:
旧: Value → 斜率限幅 → IIR_slow(α=18/256) → CAPVD
└→ CAPVD_fast = avg(CAPVD_fast, CAPVD) ← 滞后
新: Value → 斜率限幅 → IIR_slow(α=18/256) → CAPVD
└→ CAPVD_fast = avg(CAPVD_fast, clamped_value) ← 快速
|
2026-06-29 17:27:10 +08:00 |
|
wangfq
|
f988f08ead
|
clean: 删除死代码 ALFA_FAST — 快速 IIR 用 (old+new)/2 等价实现
快速 IIR α=128/256=0.5, 公式: new = old + (delta * 128) >> 8
等价于: new = (old + new_val) / 2 (当 α=0.5 时数学恒等)
后者无需乘法和移位,更高效。ALFA_FAST 宏从未被引用。
|
2026-06-29 17:16:46 +08:00 |
|
wangfq
|
353fd575fc
|
fix: update_moving_average window 参数 uint8_t→uint16_t
WINDOW_ORIGIN=500 超出 uint8_t 范围,会被截断为 244。
改为 uint16_t 支持 WINDOW_ORIGIN 最大到 60000+。
|
2026-06-29 15:55:58 +08:00 |
|
wangfq
|
9391d46ff4
|
tune: WINDOW_ORIGIN 100→500, 基线更新 1s→5s 对齐 M1H
- 新增 WINDOW_ORIGIN 宏,替换硬编码 100
- 500 × 10ms = 5s, 与 M1H 原始设计一致
- 500 样本滑动平均提供更强的噪声抑制
- vd960Loop 同步修改
|
2026-06-29 15:37:10 +08:00 |
|
wangfq
|
935e11e006
|
docs: 四文档同步更新至 V2.5
- devlog: 修订记录修正 30s→10s, 新增 V2.5
- release-notes: V1.6→V2.5, 新增 M4 优化特性 + 完整版本历程
- product-manual: V1.5→V2.5, 补充 V1.6~V2.5 版本历史
- technical-spec: V1.5→V2.5, 重写 §§4.2-4.5/5.2/12.1/13:
- §4.2: 双路 IIR 架构(慢速基线 τ=135ms + 快速检测 τ=28ms)
- §4.3.2: 进入确认机制(CAPVD_fast + ENTRY_CONFIRM=3)
- §4.4: 斜率限幅 5% + 基线更新速率 1s (10ms tick)
- §4.5: 冻结超时恢复演进史 V1.5→V2.5,完整逻辑 + 常量表
- §5.2: Tick 改为 10ms,新增 FREEZE_TIMEOUT 参数
- §12.1: 进入延迟 ~530ms,瞬态抑制,温漂 1s 补偿
- §13: 新增 M4 优化编译选项
|
2026-06-29 10:57:24 +08:00 |
|
wangfq
|
df8e59803a
|
tune: 冻结超时 30s→10s (FREEZE_TIMEOUT 3000→1000)
|
2026-06-29 10:48:48 +08:00 |
|
wangfq
|
33baa13b76
|
docs: devlog — V2.4 冻结超时稳定性检查
|
2026-06-29 10:30:20 +08:00 |
|
wangfq
|
fec67d6f20
|
feat: 冻结超时增加稳定性检查 — CAPVD波动超±2%则重置计数
问题: 上次提交仅计数冻结持续时长,若CAPVD在冻结期间大幅波动
(如车辆缓慢驶入过程中CAPVD持续爬升),30s后也会被误认为"环境变化"。
方案:
- 新增 loop1_freeze_ref: 记录进入冻结时的CAPVD值
- 每tick检查 |CAPVD - freeze_ref| > freeze_ref * 2%
- 波动超限 → 重置计数并以当前值重新开始计时
- 只有CAPVD连续30s稳定在±2%窗口内 → 才更新Origin
这确保了"连续稳定的新值"而非"连续偏高但波动的值"才会触发基线更新。
|
2026-06-29 10:30:01 +08:00 |
|
wangfq
|
22ffdede70
|
docs: devlog — V2.3 基线冻结超时自动恢复
|
2026-06-29 10:25:08 +08:00 |
|
wangfq
|
269fa7f4cc
|
feat: 基线冻结超时 — 持续偏高30s后强制更新Origin
问题: 原点保护冻结基线后,若CAPVD因环境变化(温度、器件老化等)
稳定在新的高频值,Origin永远不会更新,导致永久误判有车。
方案:
- 新增 FREEZE_TIMEOUT=3000 (~30s @ 10ms/tick)
- CAPVD偏离时 loop1_freeze_cnt 逐帧递增
- 超时后强制 Origin = CAPVD(当前稳定值),视为新常态
- 中途若CAPVD回归正常范围,计数清零,继续正常跟踪
- 车辆进入时同步清零冻结计数
|
2026-06-29 10:24:53 +08:00 |
|
wangfq
|
55a6a2e99b
|
docs: devlog — 记录 V2.1 CAPVD_fast 初始化修复 + V2.2 稳定期绕过 IIR/斜率限幅
|
2026-06-29 09:12:58 +08:00 |
|
wangfq
|
16090a48fa
|
fix: 稳定期内绕过斜率限幅和 IIR,直接用 Value 建立基线
根因: 首测 CAPVD=177406 是瞬态高值 (~38% 偏高),
5% 斜率限幅让 CAPVD 在 128 tick 稳定期内无法充分收敛,
100 窗口滑动平均被前半段高值污染:
Origin=149755 vs 真实值~128688, 差值 21067 >> dlt_ORG=82
修复: 稳定期内直接将 CAPVD/CAPVD_fast 设为 raw Value,
不做斜率限幅和 IIR, 使基线 100 窗口快速收敛到真实值。
稳定期结束后恢复正常 IIR+斜率限幅用于检测。
|
2026-06-26 16:23:47 +08:00 |
|
wangfq
|
e0e79db40e
|
fix: CAPVD_fast 初始化条件错误导致始终为 0
根因: TMR3 ISR 首次捕获时直接设置 loop1_CAPVD (不为 0),
导致 vd1_task 的 if(CAPVD==0) 分支永远不执行,
CAPVD_fast 保持 INIT_VD 的 0 值。
修复: CAPVD_fast 判断改为 ==0 时首次锁定为当前 CAPVD 值,
后续正常执行快速 IIR 更新。
|
2026-06-26 16:17:01 +08:00 |
|
wangfq
|
17e4b07860
|
feat: M4 核心优化 V2.0 — 双路 IIR + 斜率限幅 + 进入确认
三项改进突破 8051 时代限制:
1. 10ms tick + 双路 IIR
- CAPVD (慢速): α=18/256, τ=135ms — 基线跟踪,等效原 50ms 设计
- CAPVD_fast (快速): α=0.5, τ=28ms — 检测判定,比原快 5×
2. 斜率限幅 (MAX_SLOPE_RATE=5%)
- EMI/闪电瞬态尖峰被截断
- 真实车辆缓慢频率漂移不受影响
3. 进入确认 (ENTRY_CONFIRM=3)
- 连续 3 次 CAPVD_fast 低于阈值才判有车
- 单次干扰无法通过 → 误触发率大幅降低
进入响应 ~530ms (比原 550ms 还快), 基线稳定性不变
|
2026-06-26 16:05:00 +08:00 |
|
wangfq
|
0abb7f2b21
|
fix: vTaskDelay 10→50ms 对齐 TMR15 5ms×10 原始设计
|
2026-06-26 14:40:06 +08:00 |
|
wangfq
|
714e84e065
|
docs: 记录 vTaskDelay 10→50ms 发现 (V1.7), 已修复于 vd960Loop
|
2026-06-26 14:30:59 +08:00 |
|
wangfq
|
7ccd26997f
|
docs: §4.4.1 新增基线更新速率分析(DLD154/M1H/TLD-110 对比)
|
2026-06-24 11:48:53 +08:00 |
|
wangfq
|
c73c9dae2b
|
docs: 添加产品发布说明 (V1.6 release notes)
|
2026-06-24 10:13:26 +08:00 |
|
wangfq
|
2f6cb54847
|
fix: 时序参数修正 — OUT/PULSE_DELAY 均为500ms
- OUT_DELAY: 1.9s→500ms (10 tick), SW_4=ON时生效, OFF时为0
- PULSE_DELAY: 950ms→500ms (10 tick), 固定不变
- 删除 OUT_DELAY_FAST/PULSE_DELAY_FAST, 仅保留一组值
- SW_4 语义: 0=无离开延时, 1=500ms离开延时
- 同步更新产品手册、技术规格书、README、devlog
|
2026-06-24 09:13:46 +08:00 |
|
wangfq
|
fc459c911f
|
docs: devlog 记录 SW4 快速模式 & RS485→TTL Tx 修正
|
2026-06-24 09:07:23 +08:00 |
|
wangfq
|
034a82f024
|
fix: SW4 快速模式 — 离开和脉冲延时均缩短为500ms
- TaskLoop.h: 新增 OUT_DELAY_FAST=10, PULSE_DELAY_FAST=10
- TaskLoop.h: SET_DLY 注释从"延时"改为"快速模式"
- TaskLoop.c: FLAG_OUT 不再跳过延时,改为 OUT_DELAY_FAST 计数
- TaskLoop.c: FLAG_PLUSE 改用 PULSE_DELAY_FAST 计数
- 旧行为: SET_DLY=1 时 FLAG_OUT 立即跳到 FLAG_PLUSE
- 新行为: SET_DLY=1 时两者均用 10 tick (500ms) 快速延迟
|
2026-06-24 09:07:01 +08:00 |
|