feat(V4B): V4.36.44 — 铁板负偏差误释放防护(P1) + 有车最小保持定档 100ms

现场 154log260911d(22µH 铁板): 进入后 CAPVD 被磁导率抬到 dev +201/+198,
两次在 dev=+33/+96(≈2×进表dlt, 落在既有 ±4×dlt 正常跟踪窗内) 误判"离开" ⇒ 继电器掉。
修复: 有车期间 dev > +1×进表dlt ⇒ 冻结离开判定(含 band_timeout); 持续 5s ⇒ 重锚基线后放行(防锁死)。
同时 REL_MIN_HOLD_TICKS 30→10(100ms, 现场验证后正式化)。
单测场景8: 误释放 @1.04s → 冻结后 @6.04s, 正常撤板不受影响; 全套 8/8 全绿。

- P1: g_neg_rel_hold_cnt + REL_NEG_VAR_HOLD_TICKS=500; 门控普通释放与 band_timeout;
      Car_In/Car_Off 双向清零; 新增 EVT|neg_rel_hold / EVT|neg_rel_reanchor
- 边界: 真断开仍走 RELAY_HOLD_MS=1000; dev>=+4×dlt 强负 variation 仍归 V4.24 两段式环境逻辑
- 文档: devlog V2.81(+条目) / spec 头 V2.63 / manual 表 V2.20 / cmcng.h 4.36.43→4.36.44 REV 44
- 归档: docs/patches/v4.36.44-P1-negvar-hold-and-minhold-100ms.diff
This commit is contained in:
wangfq
2026-09-11 17:53:15 +08:00
parent 6c82bf61b8
commit d5e6a3d55b
8 changed files with 277 additions and 19 deletions
+33
View File
@@ -26,6 +26,38 @@
语法:待 MRS 编译确认(本机无 AT32 工具链);单测 8/8 全绿;REV 4.36.43spec V2.62 / devlog V2.80。
## 2026-09-11 — 铁板负偏差误释放防护(P1)+ 有车最小保持定档 100ms(固件 V4.36.44
**背景(现场 `154log260911d`,22µH 铁板测试)**:铁板进入/下降过程中出现「进入(继电器+绿灯) → 释放 → 黄灯快闪」。日志定性:
- 铁板 = **双重效应**目标:涡流分量先把 CAPVD 压低 ⇒ 正常"进入";继续贴近后**磁导率接管**,CAPVD 反向升至 `dev:+201/+198`(负 variation,铝合金不出现)
- 再压则**载波被压掉**`!LOOP_OK`)⇒ `loop_disconnect` ⇒ 黄灯快闪(断开级 200ms)。**不是软件误判,是振荡真的掉了**
- 但要修的是:**两次误释放**发生在 `dev=+33/+96`(≈2×进表 dlt),落在既有"±4×dlt 正常跟踪窗"内 ⇒ 该窗内的负偏差没有防护
**P1(本次实现)**:有车期间 CAPVD 进负偏差侧(`dev > +1×进表dlt`)⇒ **冻结离开判定**(含 band_timeout 兜底)。判定依据:真实"车走了"只会让 CAPVD **回到 Origin 附近(dev≈0**,不会把它抬到 +200。
- **防永久锁死**:负偏差持续 `REL_NEG_VAR_HOLD_TICKS`(5s) ⇒ 判为**真空位移**`origin_set_atomic()` 重锚基线后放行(单向、有界)
- **门控点**:普通释放路径 + `band_timeout``Car_In`/`Car_Off` 双向清零;新增 `EVT|neg_rel_hold` / `EVT|neg_rel_reanchor`
- **与既有逻辑的边界**:载波丢失(真断开)仍走 `RELAY_HOLD_MS=1000` 保护;`dev ≥ +4×dlt` 的强负 variation 仍由 V4.24 两段式环境逻辑接管
**G3 定档**`REL_MIN_HOLD_TICKS` 30 → **10100ms**。2026-09-11 现场以 10 跑通(`band_timeout` 归零、离开延迟 0.22~1.95s、自激未复现)后正式化。G1 已结构化消除自激,100ms 足够;若再现跳变,**第一手动作是把该常数提到 20(200ms)**。
**单测**`tests/test_vac_ref_reanchor.c` 场景 8,现场参数逐位):
| 场景 | 现状 V4.36.43 | V4.36.44 (P1) |
|---|---|---|
| 铁板停留 `dev=+96` | 释放 @**1.04s**(误释放,与现场一致) | 释放 @**6.04s**(冻结 5s 后重锚放行,仅 1 次) |
| 正常撤板 `dev→0` | 释放 ✓ | 释放 @2.04s ✓ **不受影响** |
**现场验证(待填)**
- [ ] 铁板:进入后不再"立刻释放";拿开后 ≤5s 内有界释放
- [ ] 正常车辆(含快速车/半截车/慢速车)进出不受影响
- [ ] 日志片段:
```
(待填:EVT|neg_rel_hold / EVT|neg_rel_reanchor
```
语法:待 MRS 编译确认(本机无 AT32 工具链);单测 8/8 全绿(gcc -O0 -Wall -Wextra 0 warning);REV 4.36.44spec V2.63 / devlog V2.81。
> 归档:`docs/patches/v4.36.44-P1-negvar-hold-and-minhold-100ms.diff`;铁板实证见 `docs/coil-range-alarm-design.md`(待补)。
## 2026-09-11 — 低Q 临界悬停自激根治:进/出判定参考统一 + 释放带夹紧 + 最小保持(固件 V4.36.42
用户反馈:拿金属板**缓慢接近**的时候,判据**乱跳**;随后用 **35µH**128kHz)、**46µH**112kHz)线圈复测,同样现象。
@@ -2257,6 +2289,7 @@ if (dev >= dlt_ORG × 4) {
| 版本 | 时间 | 说明 |
|------|------|------|
| V2.81 | 2026-09-11 | V4.36.44 铁板负偏差误释放防护(P1): 有车期间 dev>+1×进表dlt ⇒ 冻结离开判定(含 band_timeout 兜底), 持续 5s 重锚基线后放行(防锁死); G3 最小保持 30→10(100ms) 现场验证后定档; 单测场景8 现场参数: 误释放 @1.04s → 冻结后 @6.04s, 正常撤板不受影响 |
| 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 场景全绿 |