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
@@ -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)