fix(V4B): V4.36.43 — 修正 V4.36.42 引入的离开变慢 (G3 计时器递减位置错误)

用户反馈: 烧 V4.36.42 后离开 3、4 秒才释放。

定位(46µH/113kHz 日志): 4 次离开全是 Car_OFF(band_timeout), 延迟 3.5~4.7s; RLN 正常
(有车态 = Origin−41, 说明 G1 生效、100ms 自激已消失) ⇒ 问题出在"正常释放路径被挡住"。

根因: G3 的 g_rel_hold_tick-- 误放 if(!loop1_VD_FLAG) 无车分支(原 :1308) ⇒ 有车期间永不递减
⇒ 首次 Car_In 后常驻 30 ⇒ g_rel_hold_tick==0 永假 ⇒ 正常释放被永久挡住, 只能等 2.5s 环带兜底
+ 平滑值抬升 ⇒ 3.5~4.7s。

修复: 倒计时移到 } else { 有车分支顶部 (TaskLoop.c:1531 后、#if USE_FLATNESS_EXIT 之前,
每 tick 必过且在释放判定之前); 误放旧行改注释留痕。REL_MIN_HOLD_TICKS 仍 30(300ms)。

单测: 8/8 全绿(场景 7 语义不变); 新增"镜像能力边界"警告 —— 镜像只验证算法语义, 验证不了固件内
执行路径/放置位置, 此类问题必须靠日志 Car_OFF 原因字段(band_timeout/FLAT/普通)暴露。
文档: devlog V2.80(+条目) / spec 头 V2.62 / manual 表 V2.19 / cmcng.h 4.36.42→4.36.43 REV 43
/ 分析稿 §13 返工记录。
待现场: 离开延迟回到 ~300ms 内; 缓慢接近/停边界仍不跳。
This commit is contained in:
wangfq
2026-09-11 17:06:05 +08:00
parent 0f8a0d6fbd
commit 6c82bf61b8
7 changed files with 50 additions and 5 deletions
+2 -1
View File
@@ -1,6 +1,6 @@
# DLD154V4B 技术规格书
> 单路线圈车辆检测器 | 固件版本: V4.36.42 | 文档版本: V2.61
> 单路线圈车辆检测器 | 固件版本: V4.36.43 | 文档版本: V2.62
> 本文档面向工程开发、系统集成及故障深度分析
---
@@ -863,5 +863,6 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的
| V2.57 | 2026-09-08 | V4.36.39: COIL_UNDER_MIN_AS_OPEN 默认值 0→1 (用户拍板) —— L<20µH 短路级出厂即等同断开(判车停+继电器释放+绿灯灭) |
| V2.58 | 2026-09-08 | V4.36.40 热切换修复: recover 恢复判定改 TMR3 实时 Xn(240000/Xn) —— 原 calc_freq_khz(冻结Origin,LPCNT) 永不回窗致换线圈死锁; 恢复后自然走重连+判稳重建 Origin |
| V2.59 | 2026-09-08 | 注释同步: 代码/测试全部 疾闪 → 一长两短 (V2.55~58 历史版本行保留当时变更记录) |
| V2.62 | 2026-09-11 | **V4.36.43 修正 V4.36.42 引入的离开变慢**G3 最小保持计时器 `g_rel_hold_tick--` 误置于无车分支 ⇒ 有车期间不递减 ⇒ 释放判定恒被挡住,只能靠 band_timeout 兜底(现场实测离开延迟 3.5~4.7s)⇒ 移到有车分支顶部每 tick 递减 |
| V2.61 | 2026-09-11 | **V4.36.42 低Q 临界悬停自激根治**`vac_ref()` 门控原先用会随状态切换的 `loop1_dlt_ORG`(无车=进表 49 / 有车=释表 23)⇒ 进门瞬间参考由 Origin 阶跃到 EMA,与低Q ×1.8 释放带叠加成**反向滞回** ⇒ 深度 1.0~1.8×dlt 的静止凹脉冲自激(100ms 周期)。新增 `vac_gate_dlt()`(G1) 统一参考 + 低Q 释放带夹紧(G2) + 有车 300ms 最小保持(G3)22µH/35µH 现场实测 300/300 → 1/0 |
| V2.60 | 2026-09-11 | **V4.36.41 环境重校准后触发高度变低根治**:进入判定用 `vac_ref()=min(Origin,真空EMA)`,环境重校准路径未同步该参考 ⇒ 新增 `origin_set_atomic()`(3 处 Origin 写入点;维持 OriginEMA ≤1×dlt 不变式)+ EMA 余数累加消 ±127 counts 整数死区;新增镜像单测 test_vac_ref_reanchor5 场景) |