feat(V4B): V4.36.38 — fault2 可用级黄灯改一长两短 (用户定)

156~171k(L 20~24µH) 指示: 疾闪100ms → 一长两短 6相
900ms亮/300ms灭/100ms亮/300ms灭/100ms亮/700ms灭 循环
与一长一短(出窗 fault1)/快闪(断开·短路级 fault3) 三层区分
spec V2.56 / manual V2.15 / devlog V2.74
语法0 error, 4测试全绿
This commit is contained in:
wangfq
2026-09-09 10:03:49 +08:00
parent 2be9e3c208
commit cc0581163b
5 changed files with 25 additions and 16 deletions
+2 -2
View File
@@ -14,11 +14,11 @@
#define __CMCNG_H__
#define PRODUCT_MODEL "DLD154"
#define FIRMWARE_VER "4.36.37" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
#define FIRMWARE_VER "4.36.38" // 主.子.修订 (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 37
#define FIRMWARE_VER_REV 38
#define HARDWARE_VER_MAIN 3
#define HARDWARE_VER_SUB 0
@@ -441,22 +441,28 @@ void poll_yellow_led(void)
return;
}
/*--- V4.36.37 模式6: 电感量低于下限可用级(156~171k, L 20~24µH) → 疾闪 100ms
* 与断开/短路级快闪(200ms) 区分 — 现场可见"电感偏低但可用", 判定恒照常 ---*/
/*--- V4.36.38 模式6: 电感量低于下限可用级(156~171k, L 20~24µH) → 一长两短 (用户定)
* 长亮900ms(180) → 灭300ms(60) → 短亮100ms(20) → 灭300ms(60) → 短亮100ms(20) → 灭700ms(140) 循环
* 与一长一短(fault1, 长-短) 同家族两短区分; 与断开/短路级快闪(200ms) 明显区分; 判定恒照常 ---*/
if (g_coil_fault == 2) {
if (g_fault_tick >= 20) { // 100ms (20 × 5ms)
static const uint16_t dur2[6] = { 180, 60, 20, 60, 20, 140 }; // 一长两短 6 相
if (g_fault_phase > 5) g_fault_phase = 0;
if (g_fault_phase & 1)
LED_YELLOW_OFF;
else
LED_YELLOW_ON;
if (g_fault_tick >= dur2[g_fault_phase]) {
g_fault_tick = 0;
LED_YELLOW_GPIO->odt ^= LED_YELLOW_PIN; // toggle
g_fault_phase++;
}
g_fault_phase = 0;
return;
}
/*--- V4.26/25 模式5: 线圈电感量出合理窗(18~125kHz) → 一长一短
* 长亮900ms(180tick) → 灭300ms(60) → 短亮100ms(20) → 灭700ms(140), 循环
* g_coil_fault: 1=f<18k L偏大 或 125k<f≤156k L偏小(均一长一短);
* 2=156~171k 疾闪(V4.36.37); 3=L<20µH 短路级已在模式1 断开级快闪
* 优先级: 断开(1) > 环境(4) > 疾闪(6) > 电感量(5) > N短闪(3) > 灭 ---*/
* 2=156~171k 一长两短(V4.36.38); 3=L<20µH 短路级已在模式1 断开级快闪
* 优先级: 断开(1) > 环境(4) > 一长两短(6) > 一长一短(5) > N短闪(3) > 灭 ---*/
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;