From cc0581163be4ed0589332193df64036e95408814 Mon Sep 17 00:00:00 2001 From: wangfq Date: Wed, 9 Sep 2026 10:03:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(V4B):=20V4.36.38=20=E2=80=94=20fault2=20?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E7=BA=A7=E9=BB=84=E7=81=AF=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E9=95=BF=E4=B8=A4=E7=9F=AD=20(=E7=94=A8=E6=88=B7=E5=AE=9A)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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测试全绿 --- docs/devlog.md | 1 + docs/product-manual.md | 7 ++++--- docs/technical-spec.md | 9 +++++---- utilities/at32f421_freertos_demo/inc/cmcng.h | 4 ++-- .../at32f421_freertos_demo/src/TaskLoop.c | 20 ++++++++++++------- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/docs/devlog.md b/docs/devlog.md index 5afe26b..5a05ecc 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -2151,6 +2151,7 @@ if (dev >= dlt_ORG × 4) { | 版本 | 时间 | 说明 | |------|------|------| +| V2.74 | 2026-09-08 | V4.36.38: fault2 可用级黄灯 疾闪100ms → 一长两短(900/300/100/300/100/700ms 6相, 用户定) | | V2.73 | 2026-09-08 | V4.36.37 电感分级降级(方案A): fault2=156~171k疾闪100ms恒判车 / fault3=f>171k短路级断开快闪(宏作用域移171k), recover 实时置档 | | V2.72 | 2026-09-08 | spec 6.3/10.1 黄灯行为表补 V4.36.25 三分+低于下限宏解耦说明 (文档) | | V2.71 | 2026-09-08 | V4.36.36 就绪巩固期 Q 分级(高5s/中7s/低10s): 低Q 上电首压防卡 | diff --git a/docs/product-manual.md b/docs/product-manual.md index 737a7dd..9b0156b 100644 --- a/docs/product-manual.md +++ b/docs/product-manual.md @@ -188,7 +188,7 @@ SW_5 = ON 时:车辆(金属)持续压线超过 **4 分钟**(LC_HOLD_TIME |---------|------|------|------|------| | 线圈断开(当前) | 呼吸 | 灭 | **快闪** (200ms) | 检查线圈连接。**断开前有车:继电器保持 RELAY_HOLD_MS=1000ms 后仍断才释放**(防瞬时断开误释放,宏可调)。**重连后无车判稳门控**:值稳定(600ms 无漂移)且回带内才放行检测,判稳期黄灯保持快闪,Origin 自动对齐新空场 | | 电感量短路级(**L<20µH,f>171kHz**,V4.36.37) | 呼吸 | 灭(宏=1 时) | **快闪** (200ms,与断开同款) | 匝间短路/线圈损坏级。宏 COIL_UNDER_MIN_AS_OPEN:0=仅快闪(判定/继电器/绿灯照常);1=视为断开完全态(继电器保持释放+绿灯不亮+判定停,恢复=f 回窗≤171k 连续 5s)。检查线圈是否短路、核对匝数(43nF 档真短路阈 20µH) | -| 电感量可用级(**L 20~24µH,1561.15mH);125k156k 为下限以下(分级),见上行两行** | | 线圈重连,断开 1 次 | 呼吸 | 正常 | **1 短闪** + 1.2s 灭 | 发生过 1 次断开,已恢复 | | 线圈重连,断开 2 次 | 呼吸 | 正常 | **2 短闪** + 1.2s 灭 | 发生过 2 次断开,已恢复 | @@ -246,7 +246,7 @@ SW_5 = ON 时:车辆(金属)持续压线超过 **4 分钟**(LC_HOLD_TIME | 现象 | 可能原因 | 处理方法 | |------|---------|----------| | 黄灯快闪(200ms),绿灯灭 | 线圈断开/未连接,或电感量 <20µH(f>171kHz 短路级,宏=1 时绿灯灭) | 检查线圈接头、引线通断;小线圈核对匝数(43nF 档真短路阈 20µH) | -| 黄灯疾闪(100ms) | 电感量 20~24µH(156~171kHz 可用级)——线圈偏低但可用 | 可继续使用;如需消除提示核对匝数(43nF 档可用下限 20µH) | +| 黄灯一长两短 | 电感量 20~24µH(156~171kHz 可用级)——线圈偏低但可用 | 可继续使用;如需消除提示核对匝数(43nF 档可用下限 20µH) | | 绿灯常亮不灭 | 灵敏度太高 / 线圈频率漂移 | 降低灵敏度 / 检查线圈 | | 绿灯从不亮 | 灵敏度太低 / 线圈 Q 值过低 | 提高灵敏度 / 更换线圈 | | 红灯不亮 | 电源故障 | 检查供电电压 | @@ -278,7 +278,8 @@ SW_5 = ON 时:车辆(金属)持续压线超过 **4 分钟**(LC_HOLD_TIME | V2.11 | 2026-08-28 | 灵敏度 0/1 档对齐 PD132T(216/108→300/60),客户现场替换平滑交付 | | V2.12 | 2026-09-02 | 指示灯/自检描述更新(固件 V4.23:红灯呼吸≈2.6s、绿灯自检闪烁至基准稳定) | | V2.13 | 2026-09-04 | 黄灯行为全面同步 V4.30~36:一长一短 300/100/100/700ms、频率窗 20~115kHz(f>115k 告警)、环境校准 2s/7s/2s(总~15s)、铁块 7s+ 学入 | -| V2.14 | 2026-09-08 | 电感分级降级(固件 V4.36.37 方案A):f>156k 拆分——156~171k 可用级疾闪100ms(恒判车)、f>171k 短路级快闪200ms(宏=1 等同断开);真短路阈 20µH | +| V2.14 | 2026-09-08 | 电感分级降级(固件 V4.36.37 方案A):f>156k 拆分——156~171k 可用级(恒判车)、f>171k 短路级快闪200ms(宏=1 等同断开);真短路阈 20µH | +| V2.15 | 2026-09-08 | 可用级黄灯改**一长两短**(固件 V4.36.38):900/300/100/300/100/700ms 循环,与一长一短(出窗)/快闪(断开)区分 | --- diff --git a/docs/technical-spec.md b/docs/technical-spec.md index 8989d5d..2c0a9b7 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -1,6 +1,6 @@ # DLD154V4B 技术规格书 -> 单路线圈车辆检测器 | 固件版本: V4.36.37 | 文档版本: V2.55 +> 单路线圈车辆检测器 | 固件版本: V4.36.38 | 文档版本: V2.56 > 本文档面向工程开发、系统集成及故障深度分析 --- @@ -529,7 +529,7 @@ void poll_green_led(void) { | 1 | `g_disconnect_active == 1` 或 `!g_loop_power_up_state` | **快闪** | 200ms 亮 / 200ms 灭 | 线圈当前断开中 / 从无线圈上电 | | 1 | **`g_coil_fault == 3`(V4.36.37 短路级)** | **快闪**(同断开级) | 200ms 亮 / 200ms 灭 | **电感量 <20µH(f>171kHz,真短路级)**——断开级指示;功能随 `COIL_UNDER_MIN_AS_OPEN` | | 4 | `g_env_warn` 或 `g_env_resync` | **常亮** | — | 环境异常预判/重校准学习(V4.24/25/31;预判 2s 锁存、累计 7s 触发学习、替换后空闲 2s 灭) | -| 6 | **`g_coil_fault == 2`(V4.36.37 可用级)** | **疾闪**(独立节奏) | 100ms 亮 / 100ms 灭 | **电感量 20~24µH(1561.15mH) **或** 125k **V2.55 注:电感低于下限的分级(V4.36.37 方案A,用户拍板)——指示与功能解耦:** -> - **可用级 fault==2(156~171k,L 20~24µH)**:黄灯**疾闪 100ms**(独立节奏,与真断开可区分);判定/继电器/绿灯**恒照常**(不随宏)——23µH 类"低但可用"线圈不误杀 +> - **可用级 fault==2(156~171k,L 20~24µH)**:黄灯**一长两短**(900/300/100/300/100/700ms 循环,V4.36.38);判定/继电器/绿灯**恒照常**(不随宏)——23µH 类"低但可用"线圈不误杀 > - **短路级 fault==3(f>171k,L<20µH)**:黄灯**快闪 200ms**(与断开同款)——功能随 `COIL_UNDER_MIN_AS_OPEN`(宏作用域 V4.36.37 从 156k 移到 171k): > - =0(默认):仍正常判车,快闪仅作"真短路/损坏"提示 > - =1:等同线圈断开完全态——判车暂停(vd1_task 挂起)+ 继电器保持释放 + 绿灯不亮;恢复=coil_monitor_recover 无条件监测,f 回窗 ≤171k 连续 5s → 按当前 f 实时置档+重连确认+判稳 @@ -664,7 +664,7 @@ LC_Reset 在下次 Car_In 清除;V4.36.4 绿灯=RLY2 镜像 → 复位期间 | 线圈短路 | Xn 持续为 0 或极小 | 黄灯快闪 / 继电器释放 | | 电感量出窗(偏大) | 空场 f 持续 < 18 kHz(L>1.15mH,V4.36.25) | 黄灯**一长一短**(g_coil_fault=1)/ 防抖 5s | | 电感量出窗(偏小) | 空场 125k < f ≤ 156k(L 24~38µH,V4.36.25) | 黄灯**一长一短**(g_coil_fault=1)/ 防抖 5s,仍判车 | -| **电感量低于下限·可用级** | 空场 156 < f ≤ 171 kHz(L 20~24µH,V4.36.37) | 黄灯**疾闪 100ms**(g_coil_fault=2,独立节奏与断开区分);判定/继电器恒照常(不随宏);防抖 5s | +| **电感量低于下限·可用级** | 空场 156 < f ≤ 171 kHz(L 20~24µH,V4.36.37/38) | 黄灯**一长两短**(g_coil_fault=2,900/300/100/300/100/700ms);判定/继电器恒照常(不随宏);防抖 5s | | **电感量短路级** | 空场 f > 171 kHz(L<20µH,V4.36.37) | 黄灯**快闪 200ms(断开同款)**(g_coil_fault=3);功能随 `COIL_UNDER_MIN_AS_OPEN`:0=仍判车 / 1=等同断开(判车停+继电器释放+绿灯灭);恢复回窗≤171k 连续 5s 实时置档;防抖 5s | ### 10.2 黄灯编码设计 @@ -859,3 +859,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的 | V2.53 | 2026-09-08 | **V4.36.36 就绪巩固期 Q 分级**:低Q 上电判稳完(绿灯灭)即压板 → 绿灯常亮(系统未收敛完)。判稳完成后再按 Q 档绿灯继续慢闪: 高Q 5s(READY_HOLD_HI=1000)/中Q 7s(MID=1400)/低Q 10s(LO=2000, 5ms tick)——期间 Origin/EMA/滤波继续收敛, 绿灯灭才允许操作。Loop stable 打印带 ready:Ns | | V2.54 | 2026-09-08 | 文档补全:6.3 黄灯行为表更新 V4.36.25 三分语义——fault==2(L<24µH f>156k) 与断开同快闪(行 2);fault==1 一长一短含 125~156k;新增 COIL_UNDER_MIN_AS_OPEN 宏指示/功能解耦说明;10.1 故障表同步 18k/156k 三分 + 宏 + 防抖 5s | | V2.55 | 2026-09-08 | **V4.36.37 电感分级降级(方案A, 用户拍板)**:低于下限拆两级——156~171k(L20~24µH)=fault2 疾闪100ms(恒判车, 与断开区分);f>171k(L<20µH)=fault3 短路级断开快闪(COIL_UNDER_MIN_AS_OPEN 作用域 156k→171k);recover 回窗≤171k 且恢复实时置档(原清0有5s黄灯空档) | +| V2.56 | 2026-09-08 | V4.36.38: fault2 可用级黄灯指示 疾闪100ms → **一长两短** (900/300/100/300/100/700ms 循环, 用户定节奏) | diff --git a/utilities/at32f421_freertos_demo/inc/cmcng.h b/utilities/at32f421_freertos_demo/inc/cmcng.h index 1f07a76..86a2254 100644 --- a/utilities/at32f421_freertos_demo/inc/cmcng.h +++ b/utilities/at32f421_freertos_demo/inc/cmcng.h @@ -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 diff --git a/utilities/at32f421_freertos_demo/src/TaskLoop.c b/utilities/at32f421_freertos_demo/src/TaskLoop.c index a21377e..34bef26 100644 --- a/utilities/at32f421_freertos_demo/src/TaskLoop.c +++ b/utilities/at32f421_freertos_demo/src/TaskLoop.c @@ -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 环境(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;