docs(V4B): 注释同步 — 全部 疾闪 → 一长两短 (用户指出残留)

TaskLoop.c/h 现役注释 5 处 + tests 4 处 (180/983/997/1004/84 + 6/103/104/127)
代码本体 V4.36.38 已是一长两短 6 相, 注释滞后同步
devlog V2.77 / spec V2.59 (历史版本行保留当时变更记录)
语法0 error, 4测试全绿
This commit is contained in:
wangfq
2026-09-09 11:35:35 +08:00
parent 41a4577fa7
commit 1de4b4c8f3
5 changed files with 12 additions and 10 deletions
+1
View File
@@ -2151,6 +2151,7 @@ if (dev >= dlt_ORG × 4) {
| 版本 | 时间 | 说明 | | 版本 | 时间 | 说明 |
|------|------|------| |------|------|------|
| V2.77 | 2026-09-08 | 注释同步: TaskLoop.c/h + tests 全部 疾闪 → 一长两短 (V4.36.38 现役描述, 历史版本行保留变更记录) |
| V2.76 | 2026-09-08 | V4.36.40 热切换修复: fault3 强制期 Origin/LPCNT 冻结 → recover 改 TMR3 实时 Xn 判回窗(240000/Xn); 恢复后 LOOP_OK 回位自动发起重连确认+判稳重建 Origin, 换线圈不断电 ~6s 自愈 | | V2.76 | 2026-09-08 | V4.36.40 热切换修复: fault3 强制期 Origin/LPCNT 冻结 → recover 改 TMR3 实时 Xn 判回窗(240000/Xn); 恢复后 LOOP_OK 回位自动发起重连确认+判稳重建 Origin, 换线圈不断电 ~6s 自愈 |
| V2.75 | 2026-09-08 | V4.36.39: COIL_UNDER_MIN_AS_OPEN 默认 0→1 (用户拍板) —— L<20µH 短路级出厂等同断开 | | V2.75 | 2026-09-08 | V4.36.39: COIL_UNDER_MIN_AS_OPEN 默认 0→1 (用户拍板) —— L<20µH 短路级出厂等同断开 |
| V2.74 | 2026-09-08 | V4.36.38: fault2 可用级黄灯 疾闪100ms → 一长两短(900/300/100/300/100/700ms 6相, 用户定) | | V2.74 | 2026-09-08 | V4.36.38: fault2 可用级黄灯 疾闪100ms → 一长两短(900/300/100/300/100/700ms 6相, 用户定) |
+2 -1
View File
@@ -1,6 +1,6 @@
# DLD154V4B 技术规格书 # DLD154V4B 技术规格书
> 单路线圈车辆检测器 | 固件版本: V4.36.40 | 文档版本: V2.58 > 单路线圈车辆检测器 | 固件版本: V4.36.40 | 文档版本: V2.59
> 本文档面向工程开发、系统集成及故障深度分析 > 本文档面向工程开发、系统集成及故障深度分析
--- ---
@@ -862,3 +862,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的
| V2.56 | 2026-09-08 | V4.36.38: fault2 可用级黄灯指示 疾闪100ms → **一长两短** (900/300/100/300/100/700ms 循环, 用户定节奏) | | V2.56 | 2026-09-08 | V4.36.38: fault2 可用级黄灯指示 疾闪100ms → **一长两短** (900/300/100/300/100/700ms 循环, 用户定节奏) |
| V2.57 | 2026-09-08 | V4.36.39: COIL_UNDER_MIN_AS_OPEN 默认值 0→1 (用户拍板) —— L<20µH 短路级出厂即等同断开(判车停+继电器释放+绿灯灭) | | V2.57 | 2026-09-08 | V4.36.39: COIL_UNDER_MIN_AS_OPEN 默认值 0→1 (用户拍板) —— L<20µH 短路级出厂即等同断开(判车停+继电器释放+绿灯灭) |
| V2.58 | 2026-09-08 | V4.36.40 热切换修复: recover 恢复判定改 TMR3 实时 Xn(240000/Xn) —— 原 calc_freq_khz(冻结Origin,LPCNT) 永不回窗致换线圈死锁; 恢复后自然走重连+判稳重建 Origin | | V2.58 | 2026-09-08 | V4.36.40 热切换修复: recover 恢复判定改 TMR3 实时 Xn(240000/Xn) —— 原 calc_freq_khz(冻结Origin,LPCNT) 永不回窗致换线圈死锁; 恢复后自然走重连+判稳重建 Origin |
| V2.59 | 2026-09-08 | 注释同步: 代码/测试全部 疾闪 → 一长两短 (V2.55~58 历史版本行保留当时变更记录) |
+4 -4
View File
@@ -3,7 +3,7 @@
* *
* : TaskLoop.c coil_monitor() (V4.26 ) * : TaskLoop.c coil_monitor() (V4.26 )
* (43nF , V4.36.37 A ): * (43nF , V4.36.37 A ):
* g_coil_fault: 0= 1=(f<18k 125<f156k) 2=156~171k (L20~24µH, ) * g_coil_fault: 0= 1=(f<18k 125<f156k) 2=156~171k (L20~24µH, )
* 3=f>171k L<20µH ( COIL_UNDER_MIN_AS_OPEN ) * 3=f>171k L<20µH ( COIL_UNDER_MIN_AS_OPEN )
* : / COIL_FAULT_HOLD_TICKS(500tick=5s) / * : / COIL_FAULT_HOLD_TICKS(500tick=5s) /
* (V4.36.21 , ) * (V4.36.21 , )
@@ -100,8 +100,8 @@ static void test_boundaries(void)
run_ticks(125, 500); assert(g_coil_fault == 0); /* 边界 125 正常(窗内) */ run_ticks(125, 500); assert(g_coil_fault == 0); /* 边界 125 正常(窗内) */
run_ticks(126, 500); assert(g_coil_fault == 1); /* 126 → L偏小出窗, 一长一短级 */ 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(156, 500); assert(g_coil_fault == 1); /* 156 → 出窗但仍≥24µH, 一长一短级 */
run_ticks(157, 500); assert(g_coil_fault == 2); /* 157 → 156~171k 可用级, 疾闪 */ 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(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 短路级, 断开级快闪 */ 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"); printf("4. 边界 17/18/125/126/156/157/171/172 OK\n");
} }
@@ -124,6 +124,6 @@ int main(void)
test_recover(); test_recover();
test_boundaries(); test_boundaries();
test_jitter_no_alarm(); test_jitter_no_alarm();
printf("\nALL PASS (合理窗18~125kHz; 126~156=一长一短; 157~171=疾闪L20~24µH恒判车; >171=L<20µH短路级快闪; 防抖 5s)\n"); printf("\nALL PASS (合理窗18~125kHz; 126~156=一长一短; 157~171=一长两短L20~24µH恒判车; >171=L<20µH短路级快闪; 防抖 5s)\n");
return 0; return 0;
} }
@@ -81,7 +81,7 @@
#define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持) #define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持)
#define ENV_RECOVER_WAIT 200 // 恢复确认 (V4.31): 新基线替换后 环境空闲连续 ~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_MIN_KHZ 18 // 线圈频率合理窗 (V4.36.18): 默认低频档口径, <18kHz → L偏大 (≈双 250µH+ 大线圈放行)
#define COIL_L_MIN_UH 24 // V4.36.23/25: 出窗偏小指示阈值 µH (对应 COIL_L_MIN_F_KHZ=156): L<此值 → 黄灯疾闪 100ms(独立节奏), 判定恒照常 #define COIL_L_MIN_UH 24 // V4.36.23/25/38: 出窗偏小指示阈值 µH (对应 COIL_L_MIN_F_KHZ=156): L<此值 → 黄灯一长两短(可用级), 判定恒照常
#define COIL_L_SHORT_UH 20 // V4.36.37: 真短路级阈值 µH (方案A 分级): L<20µH(f>171k) → 断开级快闪(200ms, 与真断开同款), COIL_UNDER_MIN_AS_OPEN 作用于此级 #define COIL_L_SHORT_UH 20 // V4.36.37: 真短路级阈值 µH (方案A 分级): L<20µH(f>171k) → 断开级快闪(200ms, 与真断开同款), COIL_UNDER_MIN_AS_OPEN 作用于此级
#define COIL_L_SHORT_F_KHZ 171 // V4.36.37: f@20µH=171.6k 取 171: f>此值 → L<20µH 短路级 #define COIL_L_SHORT_F_KHZ 171 // V4.36.37: f@20µH=171.6k 取 171: f>此值 → L<20µH 短路级
#define COIL_UNDER_MIN_AS_OPEN 1 // V4.36.24/37/39: L<20µH(f>171k, 短路级) 是否视为线圈断开完全状态(方案A 作用域从 156k 移到 171k): #define COIL_UNDER_MIN_AS_OPEN 1 // V4.36.24/37/39: L<20µH(f>171k, 短路级) 是否视为线圈断开完全状态(方案A 作用域从 156k 移到 171k):
@@ -177,7 +177,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_release_need = 3; // V4.36.8: 释放确认样本数 (按Q档, 高3/中4/低5)
uint8_t g_fault_phase = 0; uint8_t g_fault_phase = 0;
uint16_t g_fault_tick = 0; uint16_t g_fault_tick = 0;
uint8_t g_coil_fault = 0; // V4.26/25/37: 电感量异常 0=正常 1=出合理窗→一长一短(f<18k L偏大 / 125k<f≤156k L偏小) 2=156<f≤171k L20~24µH→疾闪100ms(恒判车) 3=f>171k L<20µH短路级→断开级快闪(宏=1 等同断开) uint8_t g_coil_fault = 0; // V4.26/25/37/38: 电感量异常 0=正常 1=出合理窗→一长一短(f<18k L偏大 / 125k<f≤156k L偏小) 2=156<f≤171k L20~24µH→一长两短(可用级, 恒判车) 3=f>171k L<20µH短路级→断开级快闪(宏=1 等同断开)
uint16_t g_coil_bad_cnt = 0; // V4.26: 电感异常防抖计数 (V4.36.21: 500tick=5s 置位/清除, 宏 COIL_FAULT_HOLD_TICKS) uint16_t g_coil_bad_cnt = 0; // V4.26: 电感异常防抖计数 (V4.36.21: 500tick=5s 置位/清除, 宏 COIL_FAULT_HOLD_TICKS)
/*=========================================================================== /*===========================================================================
@@ -980,7 +980,7 @@ static uint32_t coil_l_uH(uint32_t f_khz)
* : , 20~120kHz, * : , 20~120kHz,
* ("一长一短", poll_yellow_led 5) * ("一长一短", poll_yellow_led 5)
* : + + (//) * : + + (//)
* g_coil_fault: 0= 1= 2=156~171k疾闪() 3=f>171k短路级() * g_coil_fault: 0= 1= 2=156~171k一长两短() 3=f>171k短路级()
* : / COIL_FAULT_HOLD_TICKS(500tick=5s, V4.36.21) / , * : / COIL_FAULT_HOLD_TICKS(500tick=5s, V4.36.21) / ,
*===========================================================================*/ *===========================================================================*/
static void coil_monitor(void) static void coil_monitor(void)
@@ -994,14 +994,14 @@ static void coil_monitor(void)
/* V4.36.25/37 四分语义 (43nF, 方案A 分级): /* V4.36.25/37 四分语义 (43nF, 方案A 分级):
* f<18k want=1 L偏大 * f<18k want=1 L偏大
* 125k<f156k want=1 L偏小() * 125k<f156k want=1 L偏小()
* 156k<f171k want=2 L 20~24µH 100ms(), * 156k<f171k want=2 L 20~24µH (V4.36.38, ),
* f>171k want=3 L<20µH (200ms), COIL_UNDER_MIN_AS_OPEN */ * f>171k want=3 L<20µH (200ms), COIL_UNDER_MIN_AS_OPEN */
if (f_khz < COIL_F_OK_MIN_KHZ) if (f_khz < COIL_F_OK_MIN_KHZ)
want = 1; /* L 偏大 */ want = 1; /* L 偏大 */
else if (f_khz > COIL_L_SHORT_F_KHZ) else if (f_khz > COIL_L_SHORT_F_KHZ)
want = 3; /* L<20µH 短路级 → 断开级快闪 */ want = 3; /* L<20µH 短路级 → 断开级快闪 */
else if (f_khz > COIL_L_MIN_F_KHZ) else if (f_khz > COIL_L_MIN_F_KHZ)
want = 2; /* 156~171k L20~24µH → 疾闪(可用级) */ want = 2; /* 156~171k L20~24µH → 一长两短(可用级) */
else if (f_khz > COIL_F_OK_MAX_KHZ) else if (f_khz > COIL_F_OK_MAX_KHZ)
want = 1; /* L 偏小(出合理窗, 不低于下限) → 一长一短 */ want = 1; /* L 偏小(出合理窗, 不低于下限) → 一长一短 */