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
This commit is contained in:
wangfq
2026-09-07 09:08:37 +08:00
parent a3d0b9ff75
commit 16eed844a6
7 changed files with 39 additions and 20 deletions
@@ -63,7 +63,8 @@
#define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持)
#define ENV_RECOVER_WAIT 200 // 恢复确认 (V4.31): 新基线替换后 环境空闲连续 ~2s 才解除预判, 黄灯灭
#define COIL_F_OK_MIN_KHZ 18 // 线圈频率合理窗 (V4.36.18): 默认低频档口径, <18kHz → L偏大 (≈双 250µH+ 大线圈放行)
#define COIL_F_OK_MAX_KHZ 125 // 线圈频率合理窗 (V4.36/9): >125kHz → L偏小 (43nF板口径, ≈38µH)
#define COIL_L_MIN_UH 20 // V4.36.20: 最低工作电感量 µH (43nF 低频档口径): L<此值 → 按线圈断开快闪指示
#define COIL_F_OK_MAX_KHZ 171 // 线圈频率合理窗 (V4.36.20): >171kHz → L<20µH(COIL_L_MIN_UH) 断开级偏小 (43nF: L=2.533e7/(f²×43); 原125=38µH 放宽至 20µH)
#define COIL_CAL_C_NF 43 // 标定等效谐振电容 nF (V4.34): 三极管库存板 低频档(66nF名义, R19在/R27空)实测 C_eff≈43 (41.3~45.5; 0Ω板68仅实验口径, 产品不用)
// 旧43 = 5.1K电阻旧板带病特性(三极管开关未饱和导通, 第二颗33nF未全量并入), 作废
#define COIL_CAL_C_NF_33 34 // 高频档(33nF名义)标定值: 实测 C_eff≈34.4 (33.8~35.0, 3组) — 用33nF档时改 COIL_CAL_C_NF 为34
+2 -2
View File
@@ -14,11 +14,11 @@
#define __CMCNG_H__
#define PRODUCT_MODEL "DLD154"
#define FIRMWARE_VER "4.36.19" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
#define FIRMWARE_VER "4.36.20" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
#define HARDWARE_VER "3.00"
#define FIRMWARE_VER_MAIN 4
#define FIRMWARE_VER_SUB 36
#define FIRMWARE_VER_REV 19
#define FIRMWARE_VER_REV 20
#define HARDWARE_VER_MAIN 3
#define HARDWARE_VER_SUB 0
@@ -172,7 +172,7 @@ uint32_t g_stab_base = 0; // V4.36.15: 步进比较基准 CAPVD
uint8_t g_release_need = 3; // V4.36.8: 释放确认样本数 (按Q档, 高3/中4/低5)
uint8_t g_fault_phase = 0;
uint16_t g_fault_tick = 0;
uint8_t g_coil_fault = 0; // V4.26: 线圈电感量异常 0=正常 1=L偏大(f<20kHz) 2=L偏小(f>120kHz)
uint8_t g_coil_fault = 0; // V4.26: 线圈电感量异常 0=正常 1=L偏大(f<18kHz→一长一短) 2=L<COIL_L_MIN_UH(f>171kHz→断开级快闪, V4.36.20)
uint16_t g_coil_bad_cnt = 0; // V4.26: 电感异常防抖计数 (100tick=1s 置位/清除)
/*===========================================================================
@@ -395,12 +395,13 @@ void poll_yellow_led(void)
g_fault_tick++;
/*--- 模式1: 快闪 — 载波缺失/重连判稳接管 (V4.36.16/17):
/*--- 模式1: 快闪 — 载波缺失/重连判稳接管/L过低断开级 (V4.36.16/17/20):
* !loop1_LOOP_OK: 上电无线圈 + 运行中断开 (5ms 实时, 不等 loop_task 150ms 慢拍
* 置 disconnect_active; 上电 phase power_up=0 时不置位, 由本条件兜底)
* g_reconn_stab: 运行中无车重连判稳门控
* g_coil_fault==2: 电感量 < COIL_L_MIN_UH(20µH, f>171kHz) → 按线圈断开状态指示
* 上电有线圈/判稳中: LOOP_OK=1 → 黄灯不闪, 自检指示归绿灯慢闪 ---*/
if (!loop1_LOOP_OK || g_reconn_stab) {
if (!loop1_LOOP_OK || g_reconn_stab || g_coil_fault == 2) {
if (g_fault_tick >= FLT_FAST_HALF) {
g_fault_tick = 0;
LED_YELLOW_GPIO->odt ^= LED_YELLOW_PIN; // toggle
@@ -420,11 +421,11 @@ void poll_yellow_led(void)
return;
}
/*--- V4.26 模式5: 线圈电感量不合理 → 一长一短
/*--- V4.26 模式5: 线圈电感量不合理(L 偏大) → 一长一短
* 长亮900ms(180tick) → 灭300ms(60) → 短亮100ms(20) → 灭700ms(140), 循环
* g_coil_fault: 1=L偏大(f<20kHz) 2=L偏小(f>120kHz)
* g_coil_fault: 1=L偏大(f<18kHz, 一长一短); 2=L<20µH 已在模式1 断开级快闪(V4.36.20)
* 优先级: 断开(1) > 环境(4) > 电感量(5) > N短闪(3) > 灭 ---*/
if (g_coil_fault) {
if (g_coil_fault == 1) {
static const uint16_t dur[4] = { 180, 60, 20, 140 }; // 900/300/100/700ms (V4.36.13: 灭 100→300ms)
if (g_fault_phase > 3) g_fault_phase = 0;
if (g_fault_phase & 1)