diff --git a/docs/devlog.md b/docs/devlog.md index b9861b6..28fcee1 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -2,6 +2,54 @@ > MCU: CH591R (RISC-V, BLE) @60MHz | 通道: 1 路线圈 | 调试口: UART0 (DEBUG 编译, 230400) +## 2026-07-20 — variation 3 字节上报 + 编码 GBK→UTF-8 + 线圈重连对齐 DLD154V4B spec + +### variation 上报升级 + +- `int16_t` → `int32_t`:去掉 ±32767 截断,保留完整诊断信号(线圈漂移/老化等异常场景下 variation + 可远超 32767) +- BLE 上报 2 → 3 字节(小端序 int24),与 `frequent`/`cut_amount` 统一宽度 +- `storage.h` 结构体大小不变(原 int16_t 后 uint32_t 有 2B padding,改为 int32_t 后 padding 消失) + +### 全项目编码 GBK → UTF-8 + +62 个 `.c`/`.h` 源文件全部从 GBK 转换为 UTF-8(保留 CRLF 行尾),消除 patch 工具乱码问题。 + +### 补充 g_sys_freq 全局变量定义 + +`dbn_ble_srv.h:93` 声明了 `extern uint32_t g_sys_freq;`,但 `.c` 中漏了定义导致 +`undefined reference`。在 `peripheral_main.c` 全局变量区补上 `uint32_t g_sys_freq = 0;`。 + +### RLY1 脉冲输出 (进入脉冲 / 离开脉冲) + +原代码中 `case 1`(进入脉冲)和 `case 2`(离开脉冲)的 `switch` 逻辑正确, +问题为 `output_mode` 配置未正确写入 flash 导致始终走 `case 0`(存在输出)。 +修复后现场验证通过。 + +### 线圈重连逻辑对齐 DLD154V4B spec (第 8 章) + +**问题**:旧逻辑断开时清零 `loop1_VD_FLAG`,重连时调 `INIT_VD()` 全复位重建基线, +无法恢复断开前有车状态。 + +**修复** (对齐 DLD154V4B technical-spec.md §8): + +| 改动 | 旧行为 | 新行为 | +|------|--------|--------| +| 断开时 VD_FLAG | 清零 | **保留**(车在线圈上时不丢状态) | +| 重连后 | INIT_VD 全复位 | **CAPVD=0 直锁首个样本**快速收敛 | +| 断开跟踪 | 无 | 新增 `g_disconnect_active` 状态位 | +| 断开次数上限 | 255 | **3**(对齐 spec) | +| LED 断开指示 | `loop1_FLAG_CUT` 150ms 闪 | `g_disconnect_active` 200ms 快闪 | + +**行为变化**:线圈断开时继电器释放,但保留 `loop1_VD_FLAG`。重连后 CAPVD=0 +触发首个样本直锁 + 丢弃断开期间的 ORG_SUM/CNT 过期数据: +- 车仍在 → VD_FLAG=1,继续走有车分支,恢复继电器输出 ✓ +- 车已离开 → 走离开检测(cnt_release 递增),正常释放 ✓ + +> **注意**:此改动推翻了移植日志(2026-07-18)中的"断线重连不再恢复车辆状态"说明。 + +--- + ## 2026-07-18 — 检测算法移植 DLD154V4B (V2.0) ### 背景 @@ -90,4 +138,5 @@ rapid_change 快速变化检测 / relay_on(off)_confirm 多重确认 / FUNCTION_ | 版本 | 时间 | 说明 | |------|------|------| +| V1.1 | 2026-07-20 | variation 3B上报 + GBK→UTF-8 + RLY1脉冲 + 线圈重连对齐DLD154V4B spec | | V1.0 | 2026-07-18 | 建仓; 算法移植 DLD154V4B V2.0, 删除旧线圈算法; FIRMWARE_VER 4.00→4.20 |