diff --git a/BLE/DLD154Pro_Peripheral_28K/APP/include/storage.h b/BLE/DLD154Pro_Peripheral_28K/APP/include/storage.h index 5c9f68f..44d5ffd 100644 --- a/BLE/DLD154Pro_Peripheral_28K/APP/include/storage.h +++ b/BLE/DLD154Pro_Peripheral_28K/APP/include/storage.h @@ -179,13 +179,13 @@ extern Loop_ACS_Info g_loop_acs_info; typedef enum _DLD_OUTPUT_MODE { - OUTPUT_MODE_LOOP_X_RESET = 0, // 光耦输入为 设备 复位信号,仅地感检测 输出 - OUTPUT_MODE_LOOP_ONLY, // 仅地感输出 有效,光耦输入 无效 - OUTPUT_MODE_RADAR_ONLY, // 仅光耦输入有效,雷达的输出信号接光耦输入,雷达有输出,车检器的继电器输出;地感信号 无效。 - OUTPUT_MODE_LOOP_OR_RADAR, // 地感或雷达,雷达的输出信号接光耦输入,雷达或地感有信号,车检器的继电器输出。 - OUTPUT_MODE_LOOP_AND_RADAR, // 地感和雷达,雷达的输出信号接光耦输入,雷达 并且 地感都有信号,车检器继电器才输出。 - OUTPUT_MODE_HUMAN_VD_MIX, // 人车混行,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),车辆离开地感与雷达检测区域后,三秒内雷达检测有效,车检器继电器立即输出,起到防砸人的效果,连续进入持续防砸、人走落杆。 - OUTPUT_MODE_ETC, // ETC模式,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),雷达输出断开后会有500ms的防抖超时时间,超时时间结束后,车检器才确定释放继电器。 + OUTPUT_MODE_LOOP_OR_RADAR = 0, // 地感或雷达,雷达的输出信号接光耦输入,雷达或地感有信号,车检器的继电器输出。 + OUTPUT_MODE_LOOP_AND_RADAR, // 地感和雷达,雷达的输出信号接光耦输入,雷达 并且 地感都有信号,车检器继电器才输出。 + OUTPUT_MODE_HUMAN_VD_MIX, // 人车混行,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),车辆离开地感与雷达检测区域后,三秒内雷达检测有效,车检器继电器立即输出,起到防砸人的效果,连续进入持续防砸、人走落杆。 + OUTPUT_MODE_ETC, // ETC模式,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),雷达输出断开后会有500ms的防抖超时时间,超时时间结束后,车检器才确定释放继电器。 + OUTPUT_MODE_LOOP_ONLY, // 仅地感输出 有效,光耦输入 无效 + OUTPUT_MODE_RADAR_ONLY, // 仅光耦输入有效,雷达的输出信号接光耦输入,雷达有输出,车检器的继电器输出;地感信号 无效。 + OUTPUT_MODE_LOOP_X_RESET, // 光耦输入为 设备 复位信号,仅地感检测 输出 }DLD_OUTPUT_MODE; diff --git a/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c b/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c index b3e829c..2c2c431 100644 --- a/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c +++ b/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c @@ -251,7 +251,7 @@ __attribute__((aligned(4))) uint32_t Image_Flag __attribute__((section(".ImageFl -uint8_t loop_cng_default[7] = {2,1,0,0,4,0,0}; +uint8_t loop_cng_default[7] = {2,1,0,0x00,4,0,0}; void set_factory_param(void) @@ -891,7 +891,7 @@ static void opt_input_poll(void) } /*================================================================ - * 模式 0 — 光耦复位 + * 模式 6 — 光耦复位 *================================================================*/ if (g_output_radar_mode == OUTPUT_MODE_LOOP_X_RESET) { static uint32_t _rst_low_since = 0; @@ -915,7 +915,7 @@ static void opt_input_poll(void) } /*================================================================ - * 模式 1 — 纯地感 + * 模式 4 — 纯地感 *================================================================*/ if (g_output_radar_mode == OUTPUT_MODE_LOOP_ONLY) { g_opt_trigger = 0; @@ -923,7 +923,7 @@ static void opt_input_poll(void) } /*================================================================ - * 模式 2/3/4 — 纯雷达 / 或 / 与 + * 模式 0/1/5 — 或 / 与 / 纯雷达 * g_opt_trigger 直出光耦信号, 融合判决在继电器输出段 *================================================================*/ if (g_output_radar_mode == OUTPUT_MODE_RADAR_ONLY || @@ -934,7 +934,7 @@ static void opt_input_poll(void) } /*================================================================ - * 模式 5/6 — 人车混行 / ETC (状态机) + * 模式 2/3 — 人车混行 / ETC (状态机) *================================================================*/ { static uint8_t _opt_state = OPT_STATE_IDLE; @@ -1274,9 +1274,11 @@ void TMR1_IRQHandler(void) } } - /*--- 光耦参与模式 (2-6): LED 同步继电器实际状态 ---*/ - /* 断开/稳定期闪烁已在 5ms 段优先处理 */ - if (g_output_radar_mode >= OUTPUT_MODE_RADAR_ONLY + /*--- 光耦参与模式: LED 同步继电器实际状态 ---*/ + /* (非 LOOP_ONLY/LOOP_X_RESET 时开启) ---*/ + /* 断开/稳定期闪烁已在 5ms 段优先处理 ---*/ + if (g_output_radar_mode != OUTPUT_MODE_LOOP_ONLY + && g_output_radar_mode != OUTPUT_MODE_LOOP_X_RESET && !g_disconnect_active && g_loop_power_up_state && g_loop_stable) { diff --git a/docs/devlog.md b/docs/devlog.md index 7d77c0d..dc2a05d 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -4,6 +4,34 @@ --- +## 2026-07-29 — 输出融合模式枚举重排 + +### 变更 + +枚举值重新分配,将高频使用的融合模式前置: + +``` +旧: 0=复位 1=仅地感 2=仅光耦 3=或 4=且 5=混行 6=ETC +新: 0=或 1=且 2=混行 3=ETC 4=仅地感 5=仅光耦 6=复位 +``` + +### 涉及文件 + +| 文件 | 变更 | +|------|------| +| `storage.h` | `DLD_OUTPUT_MODE` 枚举顺序重排 | +| `peripheral_main.c` | 注释号同步更新 (0→6, 1→4, 2/3/4→0/1/5, 5/6→2/3); L1279 `>= RADAR_ONLY` 区间判断→精确 `!=LOOP_ONLY && !=LOOP_X_RESET` 比较; 工厂默认 `direction_mode=0x04` (仅地感) | +| `docs/technical-spec.md` | §6 融合模式表 + 状态机标题 | +| `docs/product-manual.md` | §4.6 融合模式表 | +| `docs/rs485-modbus-protocol.md` | V1.3→V1.4: §3.3 默认值、§4.3/4.4 示例、§6.5 表格、复位注释 | +| `docs/devlog.md` | 本条目 | + +### 影响 +- 已有测试设备的 flash 配置 (`direction_mode` 低 4 位) 需要重新设置,旧值与新模式语义不兼容 +- 代码逻辑(命名常量比较)不受影响,仅枚举值和注释变更 + +--- + ## 2026-07-29 — 发布 V3.01 版本文档:技术规格书 + 产品说明书 ### 文档产出 diff --git a/docs/product-manual.md b/docs/product-manual.md index 64a36c8..35e21ac 100644 --- a/docs/product-manual.md +++ b/docs/product-manual.md @@ -170,15 +170,15 @@ DLD154Pro 支持通过光耦输入接入外部雷达/车检器的干接点信号 | 模式 | 名称 | 继电器吸合条件 | 适用场景 | |------|------|--------------|---------| -| 0 | 光耦复位 | 仅地感(光耦用于远程复位) | 需要远程复位功能 | -| 1 | **仅地感** | 线圈有车 | 纯线圈场景(默认,未接光耦时也用此模式) | -| 2 | 仅光耦 | 光耦输入有效 | 纯雷达,地感做背景监控 | -| 3 | 地感**或**光耦 | 任一触发 | 互补冗余,提高检测可靠性 | -| 4 | 地感**且**光耦 | 两者同时触发 | 双确认,防地感误触(行人/拖车) | -| 5 | **人车混行防砸** | 有车后任一触发,离场 3s 窗口内光耦有效 | 混合交通防砸人 | -| 6 | **ETC 模式** | 有车后任一触发,光耦断开 500ms 防抖才释放 | ETC 车道 | +| 0 | 地感**或**光耦 | 任一触发 | 互补冗余,提高检测可靠性(默认) | +| 1 | 地感**且**光耦 | 两者同时触发 | 双确认,防地感误触(行人/拖车) | +| 2 | **人车混行防砸** | 有车后任一触发,离场 3s 窗口内光耦有效 | 混合交通防砸人 | +| 3 | **ETC 模式** | 有车后任一触发,光耦断开 500ms 防抖才释放 | ETC 车道 | +| 4 | 仅地感 | 线圈有车 | 纯线圈场景 | +| 5 | 仅光耦 | 光耦输入有效 | 纯雷达,地感做背景监控 | +| 6 | 光耦复位 | 仅地感(光耦用于远程复位) | 需要远程复位功能 | -**人车混行防砸 (模式 5) 工作原理:** +**人车混行防砸 (模式 2) 工作原理:** 1. 平常状态只用线圈检测,屏蔽光耦(防行人误触) 2. 线圈检测到车、继电器吸合后,光耦信号也参与(人或雷达都能续吸) 3. 车离开线圈+雷达区域后,保留 **3 秒防砸窗口**——期间光耦检测到人立即吸合 diff --git a/docs/rs485-modbus-protocol.md b/docs/rs485-modbus-protocol.md index b2960af..4abb0f2 100644 --- a/docs/rs485-modbus-protocol.md +++ b/docs/rs485-modbus-protocol.md @@ -82,7 +82,7 @@ | 0x0007 | Variation Lo | int16 | | 变化量,低 16 位 | | 0x0008 | FW Version | uint16 | 1 寄存器 | 固件版本,高字节=主版本,低字节=子版本。例 `0x0300` = v3.00 | | 0x0009 | HW Version | uint16 | 1 寄存器 | 硬件版本。例 `0x0301` = v3.01 | -| 0x000A | Freq Sens | uint16 | 1 寄存器 | 当前灵敏度等级 (0=低, 1=中, 2=高, 3=最高) | +| 0x000A | Freq Sens | uint16 | 1 寄存器 | 当前灵敏度等级 (0=低, 1=中低, 2=中高, 3=高) | | 0x000B | Condition | uint16 | 1 寄存器 | 环境活跃度 (0=安静, 1–100=嘈杂) | | 0x000C | DIP Virtual | uint16 | 1 寄存器 | 虚拟拨码(700BS 兼容): bit[7:4]=function_mode, bit[3:0]=fusion_mode | @@ -96,7 +96,7 @@ | 地址 | 名称 | 范围 | 默认 | R/W | 说明 | |------|------|------|------|-----|------| -| 0x0000 | Sensitivity | 0–3 | 1 | R/W | 灵敏度等级 (0=低, 1=中, 2=高, 3=最高) | +| 0x0000 | Sensitivity | 0–3 | 1 | R/W | 灵敏度等级 (0=低, 1=中低, 2=中高, 3=高) | | 0x0001 | Fusion Mode | 0–6 | 0 | R/W | 输出组合模式(见 §6.5) | | 0x0002 | Hold Time | 0–255 | 0 | R/W | 有限存在时间 (×5s), 0=永久存在 | | 0x0003 | Output Delay | 0–255 | 10 | R/W | 离开延时 (×50ms), 例 10=500ms | @@ -148,7 +148,7 @@ ``` >>> 01 03 00 00 00 05 84 09 (读 5 个: 灵敏度/融合模式/存在时间/延时/频率档) <<< 01 03 0A 00 01 00 00 00 00 00 0A 00 00 XX XX - → 灵敏度=1(中), 融合模式=0(仅地感), 永久存在, 延时=500ms, 高频 + → 灵敏度=1(中), 融合模式=0(地感或光耦), 永久存在, 延时=500ms, 高频 ``` ### 4.4 写单个寄存器 — 功能码 0x06 @@ -160,11 +160,11 @@ <<< 01 06 00 00 00 02 88 32 ``` -修改融合模式为"地感或雷达": +修改融合模式为"地感或光耦": ``` ->>> 01 06 00 01 00 03 99 F5 (写 0x0001=3, 地感或雷达) -<<< 01 06 00 01 00 03 99 F5 +>>> 01 06 00 01 00 00 D9 F6 (写 0x0001=0, 地感或光耦) +<<< 01 06 00 01 00 00 D9 F6 ``` ### 4.5 批量写寄存器 — 功能码 0x10 @@ -242,12 +242,12 @@ DLD154Pro 算法移植后,`MEASUREMENT_BASE = 524288 (2^19)`(CH591R@60MHz | 灵敏度值 | SensTable 进入 | ΔL/L 进入 | SensTable1 离开 | ΔL/L 离开 | |---------|---------------|-----------|----------------|-----------| -| 3 (最高) | 14 | **0.043%** | 12 | 0.037% | -| 2 (高) | 28 | **0.085%** | 16 | 0.049% | -| 1 (中) | 54 | **0.165%** | 32 | 0.098% | +| 3 (高) | 14 | **0.043%** | 12 | 0.037% | +| 2 (中高) | 28 | **0.085%** | 16 | 0.049% | +| 1 (中低) | 54 | **0.165%** | 32 | 0.098% | | 0 (低) | 108 | **0.330%** | 81 | 0.247% | -ΔL/L 越大越不灵敏。最高灵敏度 (3) 适合摩托车/安静环境,低灵敏度 (0) 适合强干扰环境。 +ΔL/L 越大越不灵敏。高灵敏度 (3) 适合摩托车/安静环境,低灵敏度 (0) 适合强干扰环境。 > ⚠ 第 3 档 (sens=14) 信噪比余量仅约 2:1(20°C 温漂 ≈0.1% 感量偏移),仅推荐摩托车/小型车辆检测场景,需确保线圈安装质量。 @@ -264,19 +264,19 @@ DLD154Pro 算法移植后,`MEASUREMENT_BASE = 524288 (2^19)`(CH591R@60MHz | 值 | 模式 | 继电器吸合条件 | 适用场景 | |----|------|--------------|---------| -| 0 | 光耦复位 + 地感 | 线圈有车(光耦用于远程复位) | 需要远程复位功能 | -| 1 | 仅地感 | 线圈有车 | 纯线圈场景(默认,未接光耦时也用此模式) | -| 2 | 仅光耦 | 光耦输入有效(雷达有车) | 纯雷达,地感只做背景监控 | -| 3 | 地感 **或** 光耦 | 线圈 OR 雷达 | 互补冗余,任一触发即吸合 | -| 4 | 地感 **且** 光耦 | 线圈 AND 雷达 | 双确认,防地感误触(如行人/拖车) | -| 5 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 | -| 6 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用逻辑 | +| 0 | 地感 **或** 光耦 | 线圈 OR 雷达 | 互补冗余,任一触发即吸合 | +| 1 | 地感 **且** 光耦 | 线圈 AND 雷达 | 双确认,防地感误触(如行人/拖车) | +| 2 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 | +| 3 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用逻辑 | +| 4 | 仅地感 | 线圈有车 | 纯线圈场景(默认,未接光耦时也用此模式) | +| 5 | 仅光耦 | 光耦输入有效(雷达有车) | 纯雷达,地感只做背景监控 | +| 6 | 光耦复位 | 线圈有车(光耦用于远程复位) | 需要远程复位功能 | -**模式 5(人车混行防砸)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → WINDOW(3s 防砸窗口,光耦触发即续吸,连续进入持续防砸)→ 3s 超时 → IDLE。 +**模式 2(人车混行防砸)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → WINDOW(3s 防砸窗口,光耦触发即续吸,连续进入持续防砸)→ 3s 超时 → IDLE。 -**模式 6(ETC)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → DEBOUNCE(500ms 防抖,期间触发即回 ARMED)→ 超时 → IDLE。 +**模式 3(ETC)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → DEBOUNCE(500ms 防抖,期间触发即回 ARMED)→ 超时 → IDLE。 -> **注意**:当光耦配置为复位功能(`function_mode` bit1=1)时,`fusion_mode` 无效,继电器仅由线圈检测结果驱动。模式 0 下光耦输入低电平 ≥400ms 后上升沿触发 `SYS_ResetExecute()` 芯片全复位。 +> **注意**:当光耦配置为复位功能(`function_mode` bit1=1)时,`fusion_mode` 无效,继电器仅由线圈检测结果驱动。模式 6 下光耦输入低电平 ≥400ms 后上升沿触发 `SYS_ResetExecute()` 芯片全复位。 ### 6.6 实现要点(待编码时参考) @@ -328,6 +328,7 @@ DLD154Pro RS485 同时支持 700BS 协议(`g_fm_700bs_disable=0`)和 Modbus | 版本 | 日期 | 作者 | 变更 | |------|------|------|------| +| V1.4 | 2026-07-29 | wangfq | 枚举重排: 融合模式值重新分配 (0=或,1=且,2=混行,3=ETC,4=仅地感,5=仅光耦,6=复位); 默认融合模式 0→4(仅地感); 修正所有示例和说明文本 | | V1.3 | 2026-07-29 | wangfq | 修正: 灵敏度档位 3→4 (范围 0–3, 默认 1); MEASUREMENT_BASE 131072→524288; Origin 窗口 100→500; 融合模式 5/6 待定义→已实现+状态机; 命令示例数值对齐实际硬件; 700BS 标注为已完成; 版本号 FW 3.00→3.01 | | V1.2 | 2026-07-22 | wangfq | 700BS 兼容: +DI Freq Low/High Fault, +DI Init Flag, +IR DIP Virtual, +HR Device Reset(0x00FF), +HR Init Flag Clear(0x00FE); +§7 700BS 兼容对照表 | | V1.1 | 2026-07-22 | wangfq | 修正: CAPVD/Origin/Variation 扩展为 32-bit (×2 寄存器); Output Mode 删除脉冲模式(仅存在输出); 新增 Fusion Mode(输出组合模式 0-6); direction_mode 字段重构说明 | diff --git a/docs/technical-spec.md b/docs/technical-spec.md index f9c1112..07c1393 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -363,15 +363,15 @@ DLD154Pro 支持通过光耦输入 (PB10) 接入外部雷达/车检器信号, | 模式值 | 名称 | 继电器吸合条件 | 适用场景 | |--------|------|--------------|---------| -| 0 | 光耦复位 + 地感 | 仅地感 (光耦用于复位) | 带远程复位功能 | -| 1 | 仅地感 | 线圈有车 | 纯线圈场景 (默认) | -| 2 | 仅光耦 | 光耦输入有效 | 纯雷达,地感只做背景监控 | -| 3 | 地感**或**光耦 | coil OR opto | 互补冗余,任一触发即吸合 | -| 4 | 地感**且**光耦 | coil AND opto | 双确认,防地感误触 | -| 5 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 | -| 6 | ETC 模式 | 同"或",光耦断开后 500ms 防抖才释放 | ETC 专用 | +| 0 | 地感**或**光耦 | coil OR opto | 互补冗余,任一触发即吸合(默认) | +| 1 | 地感**且**光耦 | coil AND opto | 双确认,防地感误触 | +| 2 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 | +| 3 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用 | +| 4 | 仅地感 | 线圈有车 | 纯线圈场景 | +| 5 | 仅光耦 | 光耦输入有效 | 纯雷达,地感只做背景监控 | +| 6 | 光耦复位 | 仅地感(光耦用于远程复位) | 带远程复位功能 | -### 6.2 人车混行防砸 (模式 5) 状态机 +### 6.2 人车混行防砸 (模式 2) 状态机 ``` IDLE (仅线圈检测) @@ -386,7 +386,7 @@ WINDOW (3s 防砸窗口) │ 3s 超时无触发 → 回到 IDLE,落杆 ``` -### 6.3 ETC 模式 (模式 6) 状态机 +### 6.3 ETC 模式 (模式 3) 状态机 ``` IDLE (仅线圈检测)