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
+23
View File
@@ -4,6 +4,28 @@
---
## 2026-09-11 — 修正 V4.36.42 引入的离开变慢(G3 最小保持计时器递减位置错误)(固件 V4.36.43)
用户反馈(烧 V4.36.42 后):**现在反应好慢,离开 3、4 秒了才释放**。
**日志定位**46µH/113kHz):离开**全部**是 `Car_OFF(band_timeout)`(环带兜底),延迟 3.5~4.7s`RLN` 正常(有车态 = `Origin41` ⇒ G1 生效、100ms 自激已消失 ✓),但正常释放路径从未命中。
**根因(实现错误)**G3 的倒计时 `g_rel_hold_tick--` 被放进了 **`if (!loop1_VD_FLAG)`(无车)分支**内 ⇒ **有车期间永不递减** ⇒ 首次 `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` 仍为 30300ms)。
**单测**:8/8 全绿(场景 7 语义不变)。⚠ **教训**:镜像单测只验证**算法语义**,验证不了**固件内的执行路径/放置位置** —— 本类问题只能靠日志里的 `Car_OFF` **原因字段**`band_timeout` / `FLAT` / 普通)揪出。
**现场验证(待填)**
- [ ] 离开延迟恢复到 ~300ms 以内(不再常态出现 `Car_OFF(band_timeout)`
- [ ] 缓慢接近/停在边界仍不跳(G1 目标不受影响)
- [ ] 日志片段粘贴区:
```
(待填:Car_OFF, … 行,确认不再是 band_timeout
```
语法:待 MRS 编译确认(本机无 AT32 工具链);单测 8/8 全绿;REV 4.36.43spec V2.62 / devlog V2.80。
## 2026-09-11 — 低Q 临界悬停自激根治:进/出判定参考统一 + 释放带夹紧 + 最小保持(固件 V4.36.42
用户反馈:拿金属板**缓慢接近**的时候,判据**乱跳**;随后用 **35µH**128kHz)、**46µH**112kHz)线圈复测,同样现象。
@@ -2235,6 +2257,7 @@ if (dev >= dlt_ORG × 4) {
| 版本 | 时间 | 说明 |
|------|------|------|
| V2.80 | 2026-09-11 | V4.36.43 修正 V4.36.42 的 G3 放置错误: g_rel_hold_tick-- 原在"无车"分支内 ⇒ 有车期间不递减 ⇒ 正常释放被永久挡住只能 band_timeout(离开延迟 3.5~4.7s); 移到"有车"分支顶部 |
| V2.79 | 2026-09-11 | V4.36.42 低Q 临界悬停自激根治: vac_ref() 门控改用状态无关进表 dlt(G1) + 低Q 释放带夹紧守卫(G2, 不动 180) + 有车 300ms 最小保持(G3); 22µH/35µH 现场自激(100ms 周期)修后 300/300→1/0; 新增"非低Q不跳"判别用例 |
| V2.78 | 2026-09-11 | V4.36.41 环境重校准后触发高度变低根治: 新增 origin_set_atomic() 同步真空 EMA(3 处写入点; 维持 OriginEMA ≤1×dlt 不变式) + EMA 余数累加消 ±127 counts 整数死区; 新增镜像单测 test_vac_ref_reanchor 5 场景全绿 |
| V2.77 | 2026-09-08 | 注释同步: TaskLoop.c/h + tests 全部 疾闪 → 一长两短 (V4.36.38 现役描述, 历史版本行保留变更记录) |