diff --git a/docs/coil-range-alarm-design.md b/docs/coil-range-alarm-design.md index c567202..85d25fd 100644 --- a/docs/coil-range-alarm-design.md +++ b/docs/coil-range-alarm-design.md @@ -113,6 +113,8 @@ COIL_F_GREEN_LOW..HIGH → 正常 |------|------|------| | 1 | 断开/无线圈 | 快闪 200ms | | 5(新增) | 线圈电感异常(L 偏大/偏小) | 慢闪 500ms/500ms(1Hz) | + +> **实现定稿(V4.26→V4.32)**:模式 5 实际编码为**一长一短循环**——长亮 300ms / 灭 100ms / 短亮 100ms / 灭 700ms(V4.32 由 200/100/100/800 调整;TaskLoop.c dur[4]={60,20,20,140},5ms/tick)。§6 上表 500ms 慢闪为早期草案,已被拍板取代。 | 4 | 环境预判/学习中 | 常亮 | | 3 | 断开史 N 短闪 | — | | 2 | 正常 | 灭 | diff --git a/docs/devlog.md b/docs/devlog.md index 649f4f2..e19b5ff 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -4,6 +4,31 @@ --- +## 2026-09-03 — 黄灯一长一短模式时序调整(固件 V4.32) + +> **固件版本:V4.32**(cmcng.h:FIRMWARE_VER="4.32" + MAIN=4/SUB=32)。devlog 修订 V2.30。 + +### 拍板(2026-09-03) + +电感量告警黄灯**一长一短**模式节奏调整(原 V4.26 拍板 200/100/100/800ms): + +**长亮 300ms → 灭 100ms → 短亮 100ms → 灭 700ms → 循环** + +(长亮+100ms,末段灭 800→700ms,总周期 1.1s→1.2s 变 1.2s→1.2s?实际 200+100+100+800=1.2s → 300+100+100+700=**1.2s 总周期不变**,节奏感更明显) + +### 改动 + +- TaskLoop.c poll_yellow_led() 模式 5:`dur[4] = {40,20,20,160}` → `{60,20,20,140}`(5ms/tick = 300/100/100/700ms) +- 注释同步;版本 V4.31→V4.32;spec V2.11 / devlog V2.30 / design doc §6 注记 + +### 验证 + +- 语法 0 error;coil_range/env/red_breath/power_on_stable 测试不受影响(模式时序为 poll 层常量,无单测耦合) + +### 待现场验证 + +- 超范围线圈(或 f 边界测试)观察:一长(300ms) 一短(100ms) 节奏,总周期 1.2s + ## 2026-09-03 — 故障补偿时序再调:预判2s + 补偿7s(固件 V4.31) > **固件版本:V4.31**(cmcng.h:FIRMWARE_VER="4.31" + MAIN=4/SUB=31)。devlog 修订 V2.29。 @@ -1290,6 +1315,7 @@ if (dev >= dlt_ORG × 4) { | 版本 | 时间 | 说明 | |------|------|------| +| V2.30 | 2026-09-03 | V4.32 黄灯一长一短: 200/100/100/800ms → 300/100/100/700ms | | V2.29 | 2026-09-03 | V4.31 故障补偿时序再调: 预判2s(200)/补偿7s(700)/恢复2s, 总 ~15s | | V2.28 | 2026-09-03 | V4.30 故障补偿时序: 预判3s(300)/补偿8s(800)/恢复2s(200), 总 ~16s | | V2.27 | 2026-09-03 | V4.29 硬件修复(拨码三极管5.1K→0Ω)后 C_eff=68.1~68.9nF≈名义66, COIL_CAL_C_NF 43→68 (旧43为5.1K带病特性作废) | diff --git a/docs/technical-spec.md b/docs/technical-spec.md index 365dae7..f25e7e5 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -776,3 +776,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的 | V2.8 | 2026-09-03 | 更新至 V4.29:硬件修复(拨码三极管 5.1K→0Ω)使低频档并联全导通,C_eff 43→68.4≈名义66;COIL_CAL_C_NF 43→68 | | V2.9 | 2026-09-03 | 更新至 V4.30:故障补偿时序 预判 5s→3s(300)/补偿 10s→8s(800)/恢复确认 5s→2s(200),总恢复 ~16s | | V2.10 | 2026-09-03 | 更新至 V4.31:预判 3s→2s(200)/补偿 8s→7s(700),总恢复 ~16s→~15s | +| V2.11 | 2026-09-03 | 更新至 V4.32:黄灯一长一短模式时序 200/100/100/800ms → 300/100/100/700ms(dur[4]={60,20,20,140}) | diff --git a/utilities/at32f421_freertos_demo/inc/cmcng.h b/utilities/at32f421_freertos_demo/inc/cmcng.h index f8ccf5c..2b62891 100644 --- a/utilities/at32f421_freertos_demo/inc/cmcng.h +++ b/utilities/at32f421_freertos_demo/inc/cmcng.h @@ -14,10 +14,10 @@ #define __CMCNG_H__ #define PRODUCT_MODEL "DLD154" -#define FIRMWARE_VER "4.31" +#define FIRMWARE_VER "4.32" #define HARDWARE_VER "3.00" #define FIRMWARE_VER_MAIN 4 -#define FIRMWARE_VER_SUB 31 +#define FIRMWARE_VER_SUB 32 #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 00d9dc7..cc1bedd 100644 --- a/utilities/at32f421_freertos_demo/src/TaskLoop.c +++ b/utilities/at32f421_freertos_demo/src/TaskLoop.c @@ -308,7 +308,7 @@ void poll_green_led(void) * 4 环境异常预判/重校准学习 (g_env_warn/g_env_resync): * → 常亮 (V4.24/25, 故障补偿 10s 内完成) * 5 线圈电感量不合理 (g_coil_fault, 频率 20~120kHz 窗之外): - * → 一长一短 (长亮200ms/灭100ms/短亮100ms/灭800ms 循环) + * → 一长一短 (长亮300ms/灭100ms/短亮100ms/灭700ms 循环) * 3 线圈已恢复连接, 且上电后有断开记录 (g_disconnect_count >= 1): * → N 短闪 (80ms亮/200ms灭 × N, 1.2s间隔, N=断开次数≤3) * 2 线圈正常连接, 无断开记录: @@ -345,11 +345,11 @@ void poll_yellow_led(void) } /*--- V4.26 模式5: 线圈电感量不合理 → 一长一短 - * 长亮200ms(40tick) → 灭100ms(20) → 短亮100ms(20) → 灭800ms(160), 循环 + * 长亮300ms(60tick) → 灭100ms(20) → 短亮100ms(20) → 灭700ms(140), 循环 * g_coil_fault: 1=L偏大(f<20kHz) 2=L偏小(f>120kHz) * 优先级: 断开(1) > 环境(4) > 电感量(5) > N短闪(3) > 灭 ---*/ if (g_coil_fault) { - static const uint16_t dur[4] = { 40, 20, 20, 160 }; + static const uint16_t dur[4] = { 60, 20, 20, 140 }; // 300/100/100/700ms (V4.32) if (g_fault_phase > 3) g_fault_phase = 0; if (g_fault_phase & 1) LED_YELLOW_OFF;