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
This commit is contained in:
@@ -64,6 +64,7 @@
|
||||
#define ENV_RECOVER_WAIT 200 // 恢复确认 (V4.31): 新基线替换后 环境空闲连续 ~2s 才解除预判, 黄灯灭
|
||||
#define COIL_F_OK_MIN_KHZ 18 // 线圈频率合理窗 (V4.36.18): 默认低频档口径, <18kHz → L偏大 (≈双 250µH+ 大线圈放行)
|
||||
#define COIL_L_MIN_UH 20 // V4.36.20: 最低工作电感量 µH (43nF 低频档口径): L<此值 → 按线圈断开快闪指示
|
||||
#define COIL_FAULT_HOLD_TICKS 500 // V4.36.21: 电感量越界/恢复防抖 500tick=5s (原100=1s; 下限判定重要, 加长防误检瞬态冲高)
|
||||
#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未全量并入), 作废
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#define __CMCNG_H__
|
||||
|
||||
#define PRODUCT_MODEL "DLD154"
|
||||
#define FIRMWARE_VER "4.36.20" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
|
||||
#define FIRMWARE_VER "4.36.21" // 主.子.修订 (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 20
|
||||
#define FIRMWARE_VER_REV 21
|
||||
#define HARDWARE_VER_MAIN 3
|
||||
#define HARDWARE_VER_SUB 0
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ uint8_t g_release_need = 3; // V4.36.8: 释放确认样本数 (按Q
|
||||
uint8_t g_fault_phase = 0;
|
||||
uint16_t g_fault_tick = 0;
|
||||
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 置位/清除)
|
||||
uint16_t g_coil_bad_cnt = 0; // V4.26: 电感异常防抖计数 (V4.36.21: 500tick=5s 置位/清除, 宏 COIL_FAULT_HOLD_TICKS)
|
||||
|
||||
/*===========================================================================
|
||||
* 调试计数器
|
||||
@@ -932,7 +932,7 @@ static uint32_t coil_l_uH(uint32_t f_khz)
|
||||
* (黄灯"一长一短"告警, 见 poll_yellow_led 模式5)
|
||||
* 调用点保证: 仅稳定 + 无车空闲 + 未断开时执行 (车压/自检/断开不判)
|
||||
* g_coil_fault: 0=正常 1=L偏大(f<20kHz) 2=L偏小(f>120kHz)
|
||||
* 防抖: 越界/恢复均连续 100tick(=1s) 才置位/清除
|
||||
* 防抖: 越界/恢复均连续 COIL_FAULT_HOLD_TICKS(500tick=5s, V4.36.21) 才置位/清除 — 下限判定重要, 加长防误检
|
||||
*===========================================================================*/
|
||||
static void coil_monitor(void)
|
||||
{
|
||||
@@ -951,7 +951,7 @@ static void coil_monitor(void)
|
||||
g_coil_bad_cnt = 0; /* 状态一致 → 计时复位 */
|
||||
} else {
|
||||
g_coil_bad_cnt++;
|
||||
if (g_coil_bad_cnt >= 100) {
|
||||
if (g_coil_bad_cnt >= COIL_FAULT_HOLD_TICKS) {
|
||||
if (g_coil_fault == 0)
|
||||
PRINT("EVT|coil_fault f:%d kHz L~%lu uH Xn:%d %s\n",
|
||||
f_khz, coil_l_uH(f_khz), loop1_Xn,
|
||||
|
||||
Reference in New Issue
Block a user