diff --git a/docs/coil-range-alarm-design.md b/docs/coil-range-alarm-design.md index 90e548b..b85e772 100644 --- a/docs/coil-range-alarm-design.md +++ b/docs/coil-range-alarm-design.md @@ -1,16 +1,23 @@ # 线圈电感量估算与不合理范围告警 — 设计讨论稿 -> **状态:设计讨论稿(未实现,2026-09-02)** — 本文仅存档讨论结论,代码未落地。 +> **状态:设计讨论稿(未实现)** — 本文仅存档讨论结论,代码未落地。 > 固件版本基线:V4.25(cmcng.h);涉及产品:DLD154V4B(DLD154V4)。 +**修订记录:** + +| 版本 | 日期 | 说明 | +|------|------|------| +| v0.1 | 2026-09-02 | 初稿(合理范围按 50~300 µH,三区制) | +| v0.2 | 2026-09-03 | 合理范围改 **50 ~ 1000 µH(规格书口径,两档任意一档合法即不告警)**,三区窗口重算 | + ## 1. 背景 DLD154V4 线圈振荡电路:固定电容 **33 nF** + 拨码开关可并联另一 **33 nF**(C = 33 nF 或 66 nF 两级频率)。 拨码**不引到 MCU IO**,固件无法感知当前档位。 -需求: +需求(用户最终口径): 1. 由实测振荡频率推算线圈电感量 L(粗略值即可) -2. 对不合理电感量范围的线圈进行告警(判断合理范围 **50 ~ 300 µH**,用户给定) +2. 对不合理电感量范围的线圈告警:**两档任意 L ∈ [50, 1000] µH 合法**(规格书范围),超出才告警 3. 预留 C_eff 校准公式/系数,测试时微调 4. 持续监视 @@ -22,54 +29,60 @@ LC 谐振:**f = 1 / (2π·√(L·C))**,反推 **L = 1 / (4π²·f²·C)** - 误差预算:C 容差 ±5% → L 误差 ~10%;线圈分布电容 C0(几十 pF vs 33000 pF)≈0.3% 可忽略; 谐振拓扑非理想偏移 → 待标定收口 - **档位歧义(核心)**:C = 33/66 nF → 同一线圈频率差 √2=1.414 倍,反推 L 差 **2 倍**; - 拨码不可读 → 单次测频无法唯一判定档位(见 §4 三区制) + 拨码不可读 → 单次测频无法唯一判定档位 → 判定采用三区制(§4) ## 3. 频率 ↔ 电感对照表 -| L(µH) | C=33nF f(kHz) | C=66nF f(kHz) | -|-------|--------------|--------------| -| 20 | 195.9 | 138.5 | -| 50 | 123.9 | 87.6 | -| 100 | 87.6 | 62.0 | -| 150 | 71.5 | 50.6 | -| 300 | 50.6 | 35.8 | -| 500 | 39.2 | 27.7 | -| 1000 | 27.7 | 19.6 | -| 1440* | 23.1 | 16.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),无论哪档都超 300µH → - 该线圈应被"L 偏大"告警拦下(V4.24/V4.25 抓波形期间发现的现象) +\* 现场实测 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. 判定窗口 — 三区制(2026-09-02 讨论修订) +## 4. 判定窗口 — 三区制(v0.2:合理范围 50 ~ 1000 µH,两档任意合法) -初稿使用"两档并集 [35.8, 123.9] kHz 为绿",用户指出应关注**交集 [50.6, 87.6] kHz**。 -讨论结论:L 是线圈固有属性(f 随档位变),档位不可读时并集(可能漏报超范围线圈) -与交集(会误报合法线圈,如 66nF+200µH=43.8kHz、33nF+80µH=98kHz 均为手册推荐组合) -都是二值判据,无法消除两档交叠歧义 → **采用三区制**: +两档频率带: +- C=33nF 合法带:**27.7 ~ 123.9 kHz**(L∈[50,1000]µH) +- C=66nF 合法带:**19.6 ~ 87.6 kHz** + +"两档任意 L∈[50,1000]µH 合法" → 只要**存在一个档位**使 L 合法即不告警(并集思路); +但档位不可读,单档合法区无法确认 → 保留三区制: | 区 | 频率 (kHz) | 语义 | 动作 | |----|-----------|------|------| -| 🟢 确认正常 | 50.6 ~ 87.6(两档频带交集) | 两档下 L 均 ∈ [50,300] µH | 绿灯 | -| 🟡 歧义带 | 35.8~50.6 或 87.6~123.9(单档合法区) | 某一档合法/另一档超,无档位信息无法确认 | 不上故障灯,仅 EVT/状态字段提示 | -| 🔴 确认超范围 | < 35.8 或 > 123.9(并集外) | 两档下 L 必超(<35.8 → >300µH;>123.9 → <50µH) | 黄灯慢闪告警 | +| 🟢 确认正常 | 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) | 黄灯慢闪告警 | -- 🔴 区无歧义:<35.8 必然是 66nF 档 + L>300µH;>123.9 必然是 33nF 档 + L<50µH -- 🟡 区若上灯会误伤合法现场(如 66nF 档 + 200µH → f=43.8kHz),建议静默到诊断层,产品手册注明"该频段请核对拨码档位" +- 🔴 区无歧义:<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.1(50~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 358 // f < 35.8kHz → L 必 >300µH → L偏大 (0.1kHz 单位) -#define COIL_F_HIGH_LIMIT 1239 // f > 123.9kHz → L 必 <50µH → L偏小 (0.1kHz 单位) -#define COIL_F_GREEN_LOW 506 // 绿窗下界 50.6kHz (交集) -#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), 标定后微调 +#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. 判定状态机(持续监视 + 防抖) @@ -103,18 +116,19 @@ COIL_F_GREEN_LOW..HIGH → 正常 ## 7. 诊断输出(草案) ``` -EVT|coil_fault f:16.3kHz L~1445uH(C66/×2C33) too_large // 进入告警 -EVT|coil_ok f:62.1kHz L~100uH // 恢复 +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`:窗口边界换算(表驱动)/ 越界告警与恢复防抖 / -车压不误判(VD=1 不判)/ 两档歧义粗估(L66 与 ×2)。 +`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/状态位 1 级) -4. 绿/红四阈值需标定线圈实测后微调 +3. 灰带(歧义带)处理:推荐不上灯仅诊断日志(EVT|coil_gray),若产品要求提示再议 +4. 红/绿阈值(196/1239/277/876,0.1kHz 单位)需标定线圈实测后微调