wangfq
|
5daf508150
|
feat(V4B): V4.36.32 — 释放后分级补偿: 仿 PD132T 慢采样等效
用户对比 PD132T: 采样慢→Origin 学习慢→无释放漂移问题
机理确认: update_moving_average 满窗替换(500样本/5s), 10ms 快采样窗装得快
→ 释放后板缓离残余(低 CAPVD)≥5s 会整窗拉低 Origin
- 全冻结 1s: REL_ORIGIN_FREEZE_TICKS 50→100 (残余样本完全不进窗)
- 降权低速补偿 2s: ORIGIN_LOWLEARN_TICKS=200 + MULT=5 (窗500→2500=25s, 速率1/5 ≈132T等效)
- 递减: 冻结结束才递减降权; Car_OFF 两处预置; 均值窗 window 分阶段; INIT 清零
EMA/B3 vac_ref 零影响; 全宏可调
语法0 error, 4测试全绿; spec V2.48 / devlog V2.67
|
2026-09-08 08:19:57 +08:00 |
|
wangfq
|
17575e8747
|
feat(V4B): V4.36.31 — B3 真空 EMA 重锚: 判定参考与锚错 Origin 解耦
用户拍板: B3 为主, A2(学入步长)可选加严存档
- g_vacuum_ema: 无车 dev 窗内 EMA(α128 τ≈1.28s, 与均值窗同守卫); 判稳建立; INIT 清零
- vac_ref()=min(Origin, EMA): Origin 被 env 学高(搁置态 130636 vs 真空 130506)
→ 释放线/进入线不再偏高; 撤板真空即释放
- 替换: 进入判定/低Q释放线/环带兜底线/DBG RLN; 高Q中Q 零影响; env 学习用 Origin 本尊
- DBG 加 VEM 字段
语法0 error, 4测试全绿; spec V2.47 / devlog V2.66
|
2026-09-07 18:47:03 +08:00 |
|
wangfq
|
74512bcf54
|
feat(V4B): V4.36.30 — 环带超时兜底: 时间回滞替代空间回滞
用户反馈 V4.36.29: 抬一点就释放(容差压塌回滞到4) / 反复试探=连续过车?
- 撤 REL_LO_TOL=4: 回滞恢复 8 counts (Origin-49 触发/Origin-41 释放)
- 新增 REL_BAND_TIMEOUT_TICKS=250(2.5s): 低Q 触发后 CAPVD 平滑>进入线
(已离开触发深度) 持续 2.5s → 强制释放
- 根治'板停空间回滞带内永久卡死'(试探场景); 真实车深压不触发(安全);
J1 撤板 75s→2.5s; 抬 4 counts 不再立刻释放
- '越来越难释放'机制: 拿起板 Origin 被 env 学高, 试探快于收敛则净升 (远期 env 过冲抑制)
- 低L 灵敏度自适应(进入带回放大)列为下一档评估
语法0 error, 4测试全绿; spec V2.46 / devlog V2.65
|
2026-09-07 16:32:24 +08:00 |
|
wangfq
|
3ea876b7d9
|
feat(V4B): V4.36.29 — 低Q 释放容差 REL_LO_TOL=4 (破差1count死锁)
J1 日志(23µH, V4.36.28) 75s 延迟释放完整机理:
- Origin 过冲(拿起板 env 学高→130636/130693), 均值窗 15s 收敛中残留 34 counts
- 过冲残留被 VD=1 冻结(130540 vs 真真空 130506) → 释放线 130499 偏高
- 撤板后真空 CAPVD 130506 距线仅 7 counts, RSM 平滑 130498 差 1 count 不过线 → 卡 75s
- 释放后 Origin 7s 自动收敛回 130506 (均值窗正常)
修复: rel_release_hit 低Q 分支 _line 减 REL_LO_TOL=4 (等效线 Origin-45)
- J1 卡死: RSM>线 立即释放; 板停触发深处不误释放; 正常撤板余量不变
- 回滞 49-45=4 counts (σ1-2 → 2~4σ 安全)
语法0 error, 4测试全绿; spec V2.45 / devlog V2.64
|
2026-09-07 16:01:28 +08:00 |
|
wangfq
|
40bb1b467f
|
feat(V4B): V4.36.28 — 低Q 锁死根因: 静态带回缺口 → REL_BAND_LO_MULT 180
23µH/33µH 双日志 + V4.36.27 诊断字段定位 (QLO/RSM/RLN/RCN):
- 排除: Origin 漂移(129094 恒定)/g_q_lo(=1)/平滑滞后(RSM 跟随)/σ25(实测 σ1-2)
- 根因: 23µH 板停临界稳态回摆 Origin-36, 释放线 Origin-34(MULT150) 高 2 counts
→ RCN 永不累计锁死; 33µH 回摆 Origin-25 富余 9 正常
- 修正: MULT 150→180 (带回 35→41): 23µH 线 Origin-41 余 4 counts 释放;
回滞 49-41=8 counts=4~8σ 安全; MULT200(回滞3)否决
语法0 error, 4测试全绿; spec V2.44 / devlog V2.63
|
2026-09-07 15:04:16 +08:00 |
|
wangfq
|
33c268409d
|
feat(V4B): V4.36.26 — 低Q 发散治理剂量加大: τ85ms + 释放后 Origin 冻结 500ms
用户拍板方案 A (V4.36.19 仍偶发, 有改善 → 剂量中等+治本一起上)
- REL_ALFA 46→30: 低Q 释放平滑 τ≈50→85ms (削抖动带宽更狠)
- 带回保持 REL_BAND_LO_MULT=150(35): 触发-释放回滞 14 counts 不压缩 (防抖落)
- 治本 REL_ORIGIN_FREEZE_TICKS=50: 释放确认后 Origin 均值窗冻结 500ms,
切断「释放残余→Origin 学入→释放线漂移→cycle 间发散」正反馈
- 冻结只挡均值窗; INIT_VD 清零
语法0 error, 4测试全绿; spec V2.43 / devlog V2.62
|
2026-09-07 11:18:15 +08:00 |
|
wangfq
|
e0b86e9f6e
|
feat(V4B): V4.36.25 — 电感量三分语义: 合理窗 18~125k + 出窗一长一短 + 低于下限快闪
用户设计拍板: 纠正 V4.36.22/23 把合理窗上限随下限推到 153/156 的偏差
- COIL_F_OK_MAX_KHZ 156→125 (恢复合理窗 18~125kHz=V4.36.9 口径, >125k=38µH 偏小)
- 新增 COIL_L_MIN_F_KHZ=156 (=COIL_L_MIN_UH 24µH, 43nF f@24µH=156.7k)
- coil_monitor want 三分: f<18k→1; f>156k→2(快闪断开级); 125k<f≤156k→1(一长一短)
打印 too_large/too_small/below_l_min
- coil_monitor_recover 判据 18~156 (解除强制; 125~156 转原路径一长一短)
- test: 126→1 / 156→1 / 157→2; 全绿
语法0 error; spec V2.42 / manual / devlog V2.61
|
2026-09-07 10:01:12 +08:00 |
|
wangfq
|
5a3ab667bc
|
feat(V4B): V4.36.24 — L<下限双模式宏 COIL_UNDER_MIN_AS_OPEN
用户需求: L<24µH 后 0=仅黄灯快闪(现状, 判定/继电器/绿灯照常);
1=视为线圈断开完全状态: 黄灯快闪+继电器保持释放+绿灯不亮
- ISR RF 分支置 LOOP_OK=1 后强制压 0 → 主循环断开路径(vd1_task 停/黄灯快闪/disconnect)
- RLY 刷新(RF段)与保持(hold段)短路 → 继电器保持释放, 绿灯镜像灭;
短路放条件而非事后压 OFF(防 5ms ON/OFF 继电器抖动打火)
- coil_monitor 随 vd1_task 停摆 → 新增 coil_monitor_recover() 无条件每 10ms
恢复监测 (f 回窗 18~156kHz 连续 5s 清 fault → LOOP_OK 恢复 → 重连确认+判稳门控)
- 默认 0 (与 V4.36.23 一致无回归); 切 1 现场验证完全断开语义
语法0 error, 4测试全绿; spec V2.41 / manual 故障表 / devlog V2.60
|
2026-09-07 09:33:00 +08:00 |
|
wangfq
|
7b68daa472
|
feat(V4B): V4.36.23 — 最低电感量下限 25µH→24µH
用户拍板 COIL_L_MIN_UH=24 (43nF 口径)
- 频率窗上限 153→156kHz (f@24µH=156.7k; 156=L24.21µH 正常/157=L23.90µH 偏小)
- L<24µH(f>156k) → 断开级快闪 (判定/指示/防抖 5s 逻辑不变)
- test 边界 156/157; 4 测试全绿
语法0 error; spec V2.40 / manual / devlog V2.59
|
2026-09-07 09:17:19 +08:00 |
|
wangfq
|
d69f15e5f7
|
feat(V4B): V4.36.22 — 最低电感量下限 20µH→25µH
用户拍板 COIL_L_MIN_UH=25 (43nF 口径)
- 频率窗上限 171→153kHz (f@25µH=153.5k; 153=L25.16µH 正常/154=L24.84µH 偏小)
- L<25µH(f>153k) → 断开级快闪 (判定/指示/防抖 5s 逻辑不变)
- 提示: 现场 21/23µH 测试线圈(f≈164k>153k)将再入断开快闪区, 需换 ≥30µH
- test 边界 153/154; 4 测试全绿
语法0 error; spec V2.39 / manual / devlog V2.58
|
2026-09-07 09:14:45 +08:00 |
|
wangfq
|
809c52e40b
|
feat(V4B): V4.36.21 — 电感量下限判定防抖 1s→5s
用户: 电感量下限判定重要, 确保不误检, 判定时间可加长
- COIL_FAULT_HOLD_TICKS 100→500 (1s→5s, TaskLoop.h 宏)
- 越界置位/恢复清除均 5s 连续确认 (防起振/瞬态 f 冲高 171k 误报断开级快闪)
- 判定线不变 (18~171kHz / L≥20µH); coil_monitor 防抖宏化
- test 全用例同步 5s 语义 (499 不置位/500 置位); 全绿
语法0 error; spec V2.38 / devlog V2.57
|
2026-09-07 09:12:00 +08:00 |
|
wangfq
|
16eed844a6
|
feat(V4B): V4.36.20 — 最低工作电感量 COIL_L_MIN_UH=20µH, 低于按线圈断开指示
用户需求: 设定最低电感量工作值(默认 20µH, 43nF 低频档口径, 宏定义);
线圈电感量低于该值 → 黄灯快闪以线圈断开状态指示
- TaskLoop.h: 新增 COIL_L_MIN_UH 20; 频率窗上限 125→171kHz (=L 20.06µH,
43nF: L=2.533e7/(f²×43)) — 20~38µH 小线圈转为可正常工作(含现场 21/23µH)
- poll_yellow_led 模式1: g_coil_fault==2 归入断开级快闪(!LOOP_OK/reconn_stab 同级)
- 一长一短(模式5)仅保留 coil_fault==1 (L 偏大 f<18kHz)
- coil_monitor 防抖 1s 不变; 继电器/判定逻辑不动(仅指示级)
- test: 171 正常/172(L<20µH) 偏小, L 偏大 17; 全绿
语法0 error, 4测试全绿; spec V2.37 / devlog V2.56
|
2026-09-07 09:08:37 +08:00 |
|
wangfq
|
ef5959d6fe
|
feat(V4B): V4.36.19 — 低Q 释放抗抖 (平滑判释放+带回加宽)
问题: 43nF/高灵敏/低Q(≤50µH) 金属板边界试探 → 触发稳定但释放点外移
发散至锁死(绿灯长亮); 开 DEBUG 打印复现不了(阻塞降采样平均抖动) = 关键旁证
根因: 释放带回 dlt_rel=23 ≈ 低Q σ(±15~25), 快值判释放(5样本)被抖断
修复(Q 分档, 高/中Q 零影响):
- rel_release_hit(): 低Q 用 g_rel_smooth(τ50ms REL_ALFA=46) 判释放
- 低Q 释放带回 ×1.5 (REL_BAND_LO_MULT=150: 23→~35)
- g_rel_smooth: IIR 后跟随/CAPVD=0 与重连归零/Car_In snap
语法0 error, 4测试全绿; spec V2.35 / devlog V2.54
|
2026-09-04 18:42:22 +08:00 |
|
wangfq
|
e1b5542296
|
feat(V4B): V4.36.18 — 频率窗下界 20→18kHz
COIL_F_OK_MIN_KHZ 18: 合理窗 18~125kHz (@43nF ≈ L47µH~1.15mH) 放行更大电感
test 边界 17偏大/18正常 全绿; 镜像同步
顺带修正 spec 参数表历史滞后: MAX 115→125, COIL_CAL_C_NF 68→43
语法0 error; spec V2.34 / manual / devlog V2.53
|
2026-09-04 17:35:41 +08:00 |
|
wangfq
|
fc070a9145
|
feat(V4B): V4.36.15 — 重连判稳门控 (值稳定才放行)
现场 21µH 无车拔插: blank 1500/3000ms 结束瞬间仍假 Car_In (非必现)
根因: 低Q 起振蠕变 ~2.2s 时长不固定(插头/线圈态相关), 固定窗治标
机制(用户思路): 无车重连(VD_FLAG==0) → 判稳门控:
200ms 步进漂移≤dlt/2 连续 600ms + |dev|≤dlt 回带确认 → 完成
Origin 对齐当前空场 + CAPVD_slow/dlt 同步 → 放行 (消新旧基线差)
不稳: 进入判定挂起 + 黄灯快闪保持(用户要求); 强车 8×dlt 例外
即时放行; 5s 兜底强制放行. 有车重连(VD=1 保持路径)不判稳
语法0 error, 4测试全绿; spec V2.31 / manual / devlog V2.49
|
2026-09-04 16:03:35 +08:00 |
|
wangfq
|
c7adcc6397
|
feat(V4B): V4.36.9 — 频率窗上限 115→125kHz
COIL_F_OK_MAX_KHZ 125 (43nF板口径 ≈38µH 起)
test_coil_range 边界 125/126 全绿; 语法0 error
spec V2.25 / manual 故障表 / devlog V2.43
|
2026-09-04 10:54:12 +08:00 |
|
wangfq
|
6a0a39f8ee
|
feat(V4B): V4.36.8 — 进入/释放确认按 Q 档分档 (A+B)
Q 分档心智沿用至判定: 低Q(高频小L)抖动大 → 确认样本加长防误判
进入确认: 高3/中4/低5 样本 (原固定3)
释放确认: 高3/中4/低5 样本 (原固定3)
update_q_confirm_need() 每样本按空场 f 更新; dlt 已比例化无需分档
语法0 error, 4测试全绿; spec V2.24 / devlog V2.42
|
2026-09-04 10:45:24 +08:00 |
|
wangfq
|
8c35cc0522
|
feat(V4B): V4.36 — 频率窗上限 108→115kHz (43nF板≈44µH, 放行~48µH小线圈)
test_coil_range 边界 115/116 全绿; 语法 0 error
文档: devlog V2.34 / spec V2.15 / manual V2.12
|
2026-09-03 17:15:47 +08:00 |
|
wangfq
|
f6e2a82935
|
feat(V4B): V4.35 — 频率窗上限复核 92→108kHz (43nF板口径≈50µH)
V4.33 的 92k 是 0Ω 实验板(68nF)语境; 产品回到三极管板(43nF)后 92k≈70µH 过严,
40~70µH 正常线圈会误报 → 上限 108k = L≈50µH (保留最小合理线圈)
test_coil_range 边界 108/109 全绿; 语法 0 error
文档: devlog V2.33 / spec V2.14 / manual V2.11
|
2026-09-03 17:13:00 +08:00 |
|
wangfq
|
be91c584ee
|
feat(V4B): V4.34 — 产品基准回到三极管库存板: COIL_CAL_C_NF 68→43
决策: 不改电路沿用库存板(R19在/R27空), 低频档 C_eff≈43nF(2台×5颗);
0Ω板实验(68.4)仅机理验证不作产品基准
⚠ 窗口口径提醒: 92kHz 上限在 43nF 板对应 L≈70µH(0Ω板为30µH),
48µH 线圈 0Ω板88k窗内→三极管板~111k窗外, 待现场复核
注释/文档全同步; 语法0 error, 4测试全绿
|
2026-09-03 17:11:05 +08:00 |
|
wangfq
|
1c065b280e
|
feat(V4B): V4.33 — 线圈频率窗上限 120→92kHz (COIL_F_OK_MAX_KHZ)
f>92kHz → L偏小告警(一长一短, 原 120kHz); 顺带修正 manual 黄灯表旧时序
(200/100/100/800→300/100/100/700, V4.32 遗留) 与频率窗描述
test_coil_range 边界 92/93 全绿; 语法 0 error
文档: devlog V2.31 / spec V2.12 / manual V2.10
|
2026-09-03 16:36:17 +08:00 |
|
wangfq
|
7983bfd72d
|
feat(V4B): V4.31 — 故障补偿时序再调: 预判2s + 补偿7s (总恢复 ~15s)
V4.30 基础上现场手感再收紧: ENV_WARN_WAIT 300→200(2s);
ENV_RESYNC_WAIT 800→700(7s); 恢复确认 200(2s) 不变
时序: 2s 黄灯预判锁存 → 7s 进入学习 → 6s 学完原子替换 → 2s 确认灭
test_env_resync.c 同步 → 5 场景 ALL PASS (warn@200, applied@1300, 灭@1500)
文档: devlog V2.29 / spec V2.10 / design doc v0.8
|
2026-09-03 16:16:37 +08:00 |
|
wangfq
|
4200d96250
|
feat(V4B): V4.30 — 故障补偿时序: 预判3s + 补偿8s + 恢复2s (总恢复 ~16s)
拍板: 预判 ENV_WARN_WAIT 500→300(3s); 补偿 ENV_RESYNC_WAIT 1000→800(8s);
恢复确认 ENV_RECOVER_WAIT 500→200(2s, 新基线替换后空闲稳定即灭灯)
时序: 3s 黄灯预判锁存 → 8s 进入学习 → 6s(3×200tick)学完原子替换 → 2s 确认灭
test_env_resync.c 重写: 镜像与固件逐分支一致(学习中压线=搁置不退出/学习仅高位段
计数/abort后循环重触发) → 5 场景 ALL PASS (warn@300, applied@1400, 灭@1600)
文档: devlog V2.28 / spec V2.9 / design doc v0.7
|
2026-09-03 16:08:21 +08:00 |
|
wangfq
|
ac3fda09e2
|
feat(V4B): V4.29 — C_eff 标定定稿 68 (0Ω板低频档) + 硬件疑点闭环
硬件修复(用户): 拨码三极管 5.1K→0Ω → 第二颗33nF真正并联
0Ω板低频档实测: 52k/136µH→C_eff=68.9; 127k/23µH→68.3; 88k/48µH→68.1 (均值68.4≈名义66)
→ V4.28 的 43nF 为 5.1K 旧板带病特性(三极管未饱和导通, 并联只等效+8.6nF), 作废
改动: COIL_CAL_C_NF 43→68; 33nF档标定34(旧板)待0Ω板复测
验证: 68 回代残差 ≤1.5% (52k→138vs136; 127k→23vs23; 88k→48vs48)
文档: devlog V2.27 / spec V2.8 / design doc v0.6
|
2026-09-03 14:13:08 +08:00 |
|
wangfq
|
5c8a425da1
|
docs(V4B): 双档标定记录 — 33nF档 C_eff=34.4(宏参考34); 两档有效C比仅1.25(名义2.0)疑低频档并联未全效, 待查
高频档(33nF名义)3组实测: f=73k/179k/125k → C_eff=35.0/34.4/33.8 (均值34.4)
低频档(66nF名义)5组: C_eff=41.3~45.5 (均值43)
→ TaskLoop.h 增加 COIL_CAL_C_NF_33 参考宏; 拨33nF档使用时把 COIL_CAL_C_NF 改34
无行为变化(默认仍43=低频档标定)
|
2026-09-03 13:48:32 +08:00 |
|
wangfq
|
c3a5a6f6ff
|
feat(V4B): V4.28 — L估算引入标定等效谐振电容 COIL_CAL_C_NF=43
问题: V4.27 频率对齐后 L 仍有系统性 ~1.5 倍偏差(实际/打印 1.46~1.64)
根因: 公式用名义档位电容 66nF, 但 5 组 LCR 实测反推振荡回路等效
C_eff=41.3~45.5nF (均值 42.97) — 频率真实+LCR真实下偏差收敛到 C 一参
改动: coil_l_uH 改用 COIL_CAL_C_NF 43 (宏可标定); COIL_DEF_C_NF 保留名义口径
验证: 43nF 回代 5 组残差 ±6% 内 (64k→144vs136 +5.7%, 113k→46vs48 -3.9% ...)
标定指引: LCR 测 L → C=2.533e7/(f²×L) 多颗平均改宏
文档: devlog V2.26 / spec V2.7 / design doc v0.5
|
2026-09-03 12:11:02 +08:00 |
|
wangfq
|
92f675e2d3
|
feat(V4B): V4.26 — 线圈电感量告警(一长一短) + 故障补偿 60s→10s (4点拍板)
1. 默认低频档频率合理窗 20~120kHz, 出界即告警(不做档位判定/灰带):
TaskLoop.c 新增 coil_monitor() — 稳定+无车空闲由无车主路径调用,
Origin 反推空场 f, f<20kHz→L偏大/f>120kHz→L偏小, 1s 防抖置位/清除
2. 告警形式: 黄灯"一长一短" 200ms亮/100ms灭/100ms亮/800ms灭 循环 (模式5)
3. 黄灯优先级: 断开快闪 > 故障补偿(学习)常亮 > 电感量一长一短 > N短闪 > 灭
4. 故障补偿等待 ENV_RESYNC_WAIT 6000→1000 (60s→10s): 总补偿 ~66s→~21s
验证: tests/test_coil_range.c 5场景(边界19/20/120/121+防抖) ALL PASS;
test_env_resync.c 适配10s(applied_at=1600tick) 5场景 ALL PASS; 语法 0 error
文档: devlog V2.24/spec V2.5/manual V2.9/design doc v0.3(标记已实现)
修复: 源文件行尾多CR污染(\\r\\r\\r\\r\\n)统一规范化回标准CRLF
|
2026-09-03 10:50:26 +08:00 |
|
wangfq
|
47cb1d944e
|
fix(V4B): V4.25 黄灯预判改锁存语义 — 触发后回摆保持常亮, 环境空闲稳定5s才灭
原(V4.25首个提交): 黄灯条件 wait_cnt>=5s, 回摆(wait清零)即灭 — 用户反馈应锁存:
一旦5s黄灯常亮, 高位回摆/目标靠近也保持常亮; 只有"新的没有变化的环境"
超过5s 确认恢复, 黄灯才灭。
改动:
- 新增 g_env_warn 预判锁存标志(只增不清): dev>+4dlt 高位累计满
ENV_WARN_WAIT=500tick(~5s) → g_env_warn=1, 黄灯常亮
- 新增 g_env_recover_cnt 恢复确认: 环境回窗口内且 dev 未进进入线(>-dlt)
连续 ENV_RECOVER_WAIT=500tick(~5s) → 解除锁存, 黄灯灭
- 目标进确认区(dev<-dlt)/深压(dev<-4dlt) → 恢复计时清零
- 高位重现 → 恢复计时清零, 黄灯保持
- abort/apply 均不清 g_env_warn (替换后也需恢复确认5s才灭)
- 黄灯模式4条件 = g_env_resync || g_env_warn
tests 5 场景: 回摆保持常亮→稳定5s灭→高位重现再锁存; 学习打断/放弃后锁存保持
docs: devlog V2.23 + spec V2.4 + 手册 V2.8 同步锁存语义
|
2026-09-02 19:03:49 +08:00 |
|
wangfq
|
7fd120fdf3
|
feat(V4B): V4.25 — 环境异常黄灯预判: 高位持续5s即常亮(将进入重学)
背景: V4.24 黄灯只在60s进入学习后才亮, 前60s操作员无可视反馈
改动: poll_yellow_led 模式4条件放宽 = g_env_resync || g_env_wait_cnt>=ENV_WARN_WAIT
- ENV_WARN_WAIT=500tick(~5s) 放 TaskLoop.h 文件级(poll_yellow_led 可见)
- dev>+4dlt 高位连续5s未回摆 → 黄灯预判常亮; 累计60s才真正学习(黄灯保持)
- 预判≠学习: 回摆/目标靠近(wait清零) → 黄灯即灭, 不触发学习
tests/test_env_resync.c 扩展: 预判点亮时刻=500tick / 瞬态4000tick预判亮但不学
/ 打断回摆后预判灭; 5场景ALL PASS + 语法0 error
docs: devlog V2.23 + spec V2.4(ENV_WARN_WAIT行) + 产品手册 V2.8 同步
|
2026-09-02 18:40:39 +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
|
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段
|
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
|
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
|
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
|
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
|
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
|
df8e59803a
|
tune: 冻结超时 30s→10s (FREEZE_TIMEOUT 3000→1000)
|
2026-06-29 10:48:48 +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
|
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
|
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
|
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
|
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 |
|
wangfq
|
86d09eb953
|
feat: USE_FLATNESS_EXIT 宏开关 — 平坦性/简单防抖可切换
- TaskLoop.h 新增 #define USE_FLATNESS_EXIT 1
- #if USE_FLATNESS_EXIT 包裹所有平坦性状态变量和逻辑
- #else 回退到 cnt_release>=3 简单防抖
- 置 0 即可切回传统离开判定
|
2026-06-23 17:24:46 +08:00 |
|
wangfq
|
aff6aa9a2b
|
feat: 移植 CN200910309382 平坦性离开判定
- 进入: 保持单一阈值法 f-f_b > Δ1
- Phase 1 (g_exit_state=0): 追踪第一上升坡面 max |f'|, |f''|
- Phase 2 (g_exit_state=1): 三条件平坦性
|f-f_b| < Δ1 (SensTable_1) && |f'| < Δ2 && |f''| < Δ3
- Δ2 = max_slope / 8, Δ3 = max_slope_rate / 8 (动态阈值)
- 连续3次平坦确认后释放, 防大车多峰误触发
- 安全复位时重置平坦性状态
|
2026-06-23 16:17:19 +08:00 |
|
wangfq
|
69bb28cf58
|
fix: 上电后稳定期 — 128样本(~128ms)仅跟踪基线不检测
- 新增 g_loop_stable 标志,Origin确立后持续慢闪
- vd1_task 稳定期内只做 IIR + 基线跟踪,跳过进入检测
- 稳定期 128 样本 (~128ms) 后自动启用检测
- 绿灯慢闪延续到稳定期结束
- 安全复位时重置 g_loop_stable
|
2026-06-23 14:40:38 +08:00 |
|
wangfq
|
6dfa9ee831
|
fix: 黄灯逻辑 — 断开中快闪, 重连后N短闪
- 线圈断开中: 快闪 (200ms), 无论断开多少次
- 线圈重连后: 按断开次数显示 N 短闪 (1/2/3次)
- 无线圈上电后首次接线: 不计入, 黄灯灭
- 判定条件: g_disconnect_active || !g_loop_power_up_state → 快闪
|
2026-06-23 14:18:07 +08:00 |
|