feat(V4B): V4.36.37 — 电感分级降级 (方案A 用户拍板)
低于下限拆两级, COIL_UNDER_MIN_AS_OPEN 作用域 156k→171k: - fault=2: 156~171k (L 20~24µH) 可用级 → 黄灯疾闪 100ms(与断开200ms区分), 判定恒照常 - fault=3: f>171k (L<20µH) 短路级 → 断开级快闪 200ms; 宏=1 等同断开(判车停+RLY释放+绿灯灭) - coil_monitor_recover: 回窗≤171k(非156k) + 恢复实时置档(原清0有5s黄灯空档) - tests 镜像四分: 157/171→2, 172→3; 文案同步 - spec V2.55 / manual V2.14 / devlog V2.73 语法0 error, 4测试全绿
This commit is contained in:
+13
-7
@@ -2,8 +2,9 @@
|
||||
* test_coil_range.c — 线圈电感量合理范围监视 gcc 隔离单测 (DLD154V4B V4.26)
|
||||
*
|
||||
* 验证对象: TaskLoop.c coil_monitor() (V4.26 拍板规格)
|
||||
* 默认低频档口径(43nF 三极管板): 空场频率合理窗 18~171kHz(=L 20µH 下限),
|
||||
* 出界即判定电感量不合理; g_coil_fault: 0=正常 1=L偏大(f<18kHz) 2=L<20µH(f>171kHz)
|
||||
* 默认低频档口径(43nF 三极管板, V4.36.37 方案A 分级):
|
||||
* g_coil_fault: 0=正常 1=出窗一长一短(f<18k 或 125<f≤156k) 2=156~171k 疾闪(L20~24µH, 恒判车)
|
||||
* 3=f>171k 短路级 L<20µH → 断开级快闪(宏 COIL_UNDER_MIN_AS_OPEN 功能随动)
|
||||
* 防抖: 越界/恢复均连续 COIL_FAULT_HOLD_TICKS(500tick=5s) 才置位/清除
|
||||
* (V4.36.21 加长, 下限判定重要防误检瞬态冲高)
|
||||
*
|
||||
@@ -17,6 +18,7 @@
|
||||
#define COIL_F_OK_MIN_KHZ 18
|
||||
#define COIL_F_OK_MAX_KHZ 125
|
||||
#define COIL_L_MIN_F_KHZ 156
|
||||
#define COIL_L_SHORT_F_KHZ 171
|
||||
#define COIL_FAULT_HOLD_TICKS 500
|
||||
#define COIL_DEF_C_NF 66
|
||||
|
||||
@@ -30,6 +32,8 @@ static void coil_step(uint32_t f_khz)
|
||||
|
||||
if (f_khz < COIL_F_OK_MIN_KHZ)
|
||||
want = 1;
|
||||
else if (f_khz > COIL_L_SHORT_F_KHZ)
|
||||
want = 3;
|
||||
else if (f_khz > COIL_L_MIN_F_KHZ)
|
||||
want = 2;
|
||||
else if (f_khz > COIL_F_OK_MAX_KHZ)
|
||||
@@ -73,8 +77,8 @@ static void test_too_small(void)
|
||||
{
|
||||
g_coil_fault = 0; g_coil_bad_cnt = 0;
|
||||
run_ticks(200, 500);
|
||||
assert(g_coil_fault == 2);
|
||||
printf("2. L偏小 (f=200kHz, 5s 防抖置位) OK\n");
|
||||
assert(g_coil_fault == 3);
|
||||
printf("2. 短路级 (f=200kHz, 5s 防抖置位 fault=3) OK\n");
|
||||
}
|
||||
|
||||
static void test_recover(void)
|
||||
@@ -96,8 +100,10 @@ static void test_boundaries(void)
|
||||
run_ticks(125, 500); assert(g_coil_fault == 0); /* 边界 125 正常(窗内) */
|
||||
run_ticks(126, 500); assert(g_coil_fault == 1); /* 126 → L偏小出窗, 一长一短级 */
|
||||
run_ticks(156, 500); assert(g_coil_fault == 1); /* 156 → 出窗但仍≥24µH, 一长一短级 */
|
||||
run_ticks(157, 500); assert(g_coil_fault == 2); /* 157 → L<24µH 下限, 快闪(断开级) */
|
||||
printf("4. 边界 17/18/125/126/156/157 OK\n");
|
||||
run_ticks(157, 500); assert(g_coil_fault == 2); /* 157 → 156~171k 可用级, 疾闪 */
|
||||
run_ticks(171, 500); assert(g_coil_fault == 2); /* 171 → 边界仍可用级疾闪 (f@20µH=171.6k) */
|
||||
run_ticks(172, 500); assert(g_coil_fault == 3); /* 172 → L<20µH 短路级, 断开级快闪 */
|
||||
printf("4. 边界 17/18/125/126/156/157/171/172 OK\n");
|
||||
}
|
||||
|
||||
static void test_jitter_no_alarm(void)
|
||||
@@ -118,6 +124,6 @@ int main(void)
|
||||
test_recover();
|
||||
test_boundaries();
|
||||
test_jitter_no_alarm();
|
||||
printf("\nALL PASS (合理窗18~125kHz=L≥38µH; 126~156=一长一短; >156k=L<24µH快闪; 防抖 5s)\n");
|
||||
printf("\nALL PASS (合理窗18~125kHz; 126~156=一长一短; 157~171=疾闪L20~24µH恒判车; >171=L<20µH短路级快闪; 防抖 5s)\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user