Files
DLD154V4B/docs/coil-range-alarm-design.md
T
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

139 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 线圈电感量估算与不合理范围告警 — 设计讨论稿
> **状态:已实现(V4.26/V4.272026-09-03** — 本文为设计讨论与实现归档;落地代码见 TaskLoop.c coil_monitor()vd1_task 无车主路径调用)与 poll_yellow_led() 模式 5。
> 固件版本基线:V4.27cmcng.h);涉及产品:DLD154V4BDLD154V4)。
**修订记录:**
| 版本 | 日期 | 说明 |
|------|------|------|
| v0.1 | 2026-09-02 | 初稿(合理范围按 50~300 µH,三区制) |
| v0.2 | 2026-09-03 | 合理范围改 **50 ~ 1000 µH(规格书口径,两档任意一档合法即不告警)**,三区窗口重算 |
| v0.3 | 2026-09-03 | **用户 4 点拍板收口(取代 v0.2 三区/灰带)**:默认低频档频率窗 **20~120 kHz** 出界即告警;黄灯**一长一短**;优先级 1 断开快闪 > 4 故障补偿常亮 > 5 电感一长一短 > 3 N短亮 > 2 灭;故障补偿 ENV_RESYNC_WAIT **60s→10s**。已实现于 V4.26672f143 后) |
| v0.4 | 2026-09-03 | **测频 4 倍偏差修正(V4.27**calc_freq_khz 60000→240000TMR3 实际 120MHz 计数 + 通道捕获 DIV_2)。本文 §3 中"Xn=3681→f=16.3kHz→L≈1.4mH 超限案例"为**测频 bug 假象**——修正后实为 f≈65.2kHz、L≈90µH 的正常线圈;该"红区案例"作废,需按真实频率重新采集现场数据 |
| v0.5 | 2026-09-03 | **L 估算标定(V4.28**:五组 LCR 实测反推振荡回路等效谐振电容 C_eff=41.3~45.5nF(均值 43),与名义 66nF 明显不符 → 固件改标定值 COIL_CAL_C_NF=43L_uH=2.533e7/(f²×C_eff));COIL_DEF_C_NF 保留为名义口径。残差 ±6% 内,待多线圈/标定电感进一步收口 |
## 1. 背景
DLD154V4 线圈振荡电路:固定电容 **33 nF** + 拨码开关可并联另一 **33 nF**C = 33 nF 或 66 nF 两级频率)。
拨码**不引到 MCU IO**,固件无法感知当前档位。
需求(用户最终口径):
1. 由实测振荡频率推算线圈电感量 L(粗略值即可)
2. 对不合理电感量范围的线圈告警(**v0.3 拍板,取代 §4 三区制**):按默认低频档计算,频率合理范围
**20 ~ 120 kHz,不在合理范围内一律判定电感量不合理 → 告警**(不做档位判定、不做灰带提示)
3. 预留 C_eff 校准公式/系数,测试时微调
4. 持续监视
## 2. 物理模型与测量精度
LC 谐振:**f = 1 / (2π·√(L·C))**,反推 **L = 1 / (4π²·f²·C)**
- f 固件现成:`calc_freq_khz()`Xn@60MHz 捕获,f_kHz = 60000 / Xn),Xn≈3681 时测量精度 ~0.03%,足够
- 误差预算:C 容差 ±5% → L 误差 ~10%;线圈分布电容 C0(几十 pF vs 33000 pF)≈0.3% 可忽略;
谐振拓扑非理想偏移 → 待标定收口
- **档位歧义(核心)**:C = 33/66 nF → 同一线圈频率差 √2=1.414 倍,反推 L 差 **2 倍**
拨码不可读 → 单次测频无法唯一判定档位 → 判定采用三区制(§4)
## 3. 频率 ↔ 电感对照表
| L(µH) | C=33nF f(kHz) | C=66nF f(kHz) | 备注 |
|-------|--------------|--------------|------|
| 20 | 195.9 | 138.5 | 超出下限(<50)→ 红区(>123.9 必超) |
| **50**| **123.9** | **87.6** | 规格下界 |
| 100 | 87.6 | 62.0 | 推荐带 |
| 200 | 62.0 | 43.8 | 推荐带 |
| 300 | 50.6 | 35.8 | 推荐带上沿 |
| 500 | 39.2 | 27.7 | 可工作(33nF 档落绿/66nF 档落绿边界) |
| 800 | 31.0 | 21.9 | 66nF 档落灰带(33nF 档对应 L=2000µH 超,无法判档) |
| **1000**| **27.7** | **19.6** | 规格上界 |
| 1440* | 23.1 | 16.3 | 超出上限(<19.6 必超) |
\* 现场实测 Xn=3681 → f=16.3kHz → L≈1445µH(66nF)/2889µH(33nF),无论哪档都 >1000µH →
该线圈应被"L 偏大"红区告警拦下(V4.24/V4.25 抓波形期间发现的现象)
**换算公式(默认档粗估)**L_µH = 2.533e7 / (f_kHz² × C_nF)33nF 档结果 = 66nF 档结果 × 2
**C_eff 校准预留**L_µH = (2.533e9 / (f_kHz² × C_nF)) × COIL_CAL_COEF_Q10 / 1024
标定线圈(100µH / 300µH 精密电感)实测 f 后调单一系数收口。
## 4. 判定窗口 — 三区制(v0.2:合理范围 50 ~ 1000 µH,两档任意合法)
两档频率带:
- C=33nF 合法带:**27.7 ~ 123.9 kHz**L∈[50,1000]µH
- C=66nF 合法带:**19.6 ~ 87.6 kHz**
"两档任意 L∈[50,1000]µH 合法" → 只要**存在一个档位**使 L 合法即不告警(并集思路);
但档位不可读,单档合法区无法确认 → 保留三区制:
| 区 | 频率 (kHz) | 语义 | 动作 |
|----|-----------|------|------|
| 🟢 确认正常 | 27.7 ~ 87.6(两档频带交集) | 拨任意一档,L 都在 [50,1000] µH | 绿灯 |
| 🟡 歧义带 | 19.6~27.7 或 87.6~123.9(单档合法区) | 某一档合法/另一档超,无档位信息无法确认 | 不上故障灯,仅 EVT/状态字段提示 |
| 🔴 确认超范围 | < 19.6 或 > 123.9(并集外) | 两档下 L 必超(<19.6 → L>1000µH>123.9 → L<50µH | 黄灯慢闪告警 |
- 🔴 区无歧义:<19.6 必然是 66nF 档 + L>1000µH>123.9 必然是 33nF 档 + L<50µH
- 🟡 区(放宽后收窄):如 800µH 拨 66nF → f=21.9kHz 落灰带(33nF 档对应 2000µH 超);
常见推荐组合 100~500µH 两档均落绿区(见 §3 表)——灰带上灯会误伤这类现场,建议静默到诊断层
- 与 v0.150~300µH)对比:红下界 35.8 → **19.6**(300~1000µH 的规格内线圈不再误报),
绿窗 50.6~87.6 → **27.7~87.6**
### 建议宏(TaskLoop.h,待标定)
```c
#define COIL_F_LOW_LIMIT 196 // f < 19.6kHz → L 必 >1000µH → L偏大 (0.1kHz 单位)
#define COIL_F_HIGH_LIMIT 1239 // f > 123.9kHz → L 必 <50µH → L偏小 (0.1kHz 单位)
#define COIL_F_GREEN_LOW 277 // 绿窗下界 27.7kHz (两档交集)
#define COIL_F_GREEN_HIGH 876 // 绿窗上界 87.6kHz (两档交集)
#define COIL_DEF_C_NF 66 // 默认档电容 nF (拨码不可读, 粗估 L 用; 33nF 档 ×2)
#define COIL_CAL_COEF_Q10 1024 // C_eff 校准系数 Q10 (=1.000), 标定后微调
```
## 5. 判定状态机(持续监视 + 防抖)
```
条件: !g_disconnect_active && g_loop_stable && !loop1_VD_FLAG (空闲/稳定, 车来不判)
f = calc_freq_khz(loop1_Origin, loop1_LPCNT) (空场滤波后频率)
f < COIL_F_LOW_LIMIT → 故障 1 = L 偏大
f > COIL_F_HIGH_LIMIT → 故障 2 = L 偏小
COIL_F_GREEN_LOW..HIGH → 正常
其余 (歧义带) → 状态位提示 (不上灯)
防抖: 越界持续 100tick(1s) 置位; 恢复持续 100tick 清除
监视点: vd1_task 无车段末尾 (Origin 更新后)
```
## 6. 黄灯模式 5(方案草案)
| 模式 | 状态 | 指示 |
|------|------|------|
| 1 | 断开/无线圈 | 快闪 200ms |
| 5(新增) | 线圈电感异常(L 偏大/偏小) | 慢闪 500ms/500ms1Hz |
| 4 | 环境预判/学习中 | 常亮 |
| 3 | 断开史 N 短闪 | — |
| 2 | 正常 | 灭 |
优先级:断开(1) > 电感异常(5) > 环境(4) > N短闪(3) > 灭
自检段(STBL=0)不判,防上电抖动。红绿指示不受影响。
## 7. 诊断输出(草案)
```
EVT|coil_fault f:16.3kHz L~1445uH(C66/×2C33) too_large // 进入告警 (红区)
EVT|coil_gray f:21.9kHz // 歧义带提示 (可选, 不上灯)
EVT|coil_ok f:62.1kHz L~100uH // 恢复
```
## 8. 单测计划
`tests/test_coil_range.c`:窗口边界换算(表驱动 50/1000 边界)/ 红区告警与恢复防抖 /
车压不误判(VD=1 不判)/ 两档歧义粗估(L66 与 ×2)/ 灰带不上灯仅状态位。
## 9. 待确认项(未定)
1. 黄灯模式 5 慢闪 1Hz 节奏是否采纳(或"常亮+1 短灭"
2. 默认档 `COIL_DEF_C_NF`:66nF(出厂并联 ON)?现场是否有普遍拨 33nF 的情况
3. 灰带(歧义带)处理:推荐不上灯仅诊断日志(EVT|coil_gray),若产品要求提示再议
4. 红/绿阈值(196/1239/277/8760.1kHz 单位)需标定线圈实测后微调