refactor: 融合模式枚举重排,地感且光耦后移

0=或 1=混行 2=ETC 3=且 4=仅地感 5=仅光耦 6=复位
- storage.h: AND_RADAR 从位置 2 移至位置 4
- peripheral_main.c: 注释块 MODE 标签及内联模式号同步
- 全部 4 份文档表格/节号/版本号对齐
This commit is contained in:
wangfq
2026-07-30 09:01:12 +08:00
parent 8a01a5e769
commit ccd996d56e
6 changed files with 56 additions and 26 deletions
@@ -180,9 +180,9 @@ extern Loop_ACS_Info g_loop_acs_info;
typedef enum _DLD_OUTPUT_MODE
{
OUTPUT_MODE_LOOP_OR_RADAR = 0, // 地感或雷达,雷达的输出信号接光耦输入,雷达或地感有信号,车检器的继电器输出。
OUTPUT_MODE_LOOP_AND_RADAR, // 地感和雷达,雷达的输出信号接光耦输入,雷达 并且 地感都有信号,车检器继电器才输出。
OUTPUT_MODE_HUMAN_VD_MIX, // 人车混行,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),车辆离开地感与雷达检测区域后,三秒内雷达检测有效,车检器继电器立即输出,起到防砸人的效果,连续进入持续防砸、人走落杆。
OUTPUT_MODE_ETC, // ETC模式,雷达的输出信号接光耦输入,刚开始屏蔽雷达信号,当地感检测有车、车检器继电器输出后,车检器对地感 或雷达信号都有效(或的关系),雷达输出断开后会有500ms的防抖超时时间,超时时间结束后,车检器才确定释放继电器。
OUTPUT_MODE_LOOP_AND_RADAR, // 地感和雷达,雷达的输出信号接光耦输入,雷达 并且 地感都有信号,车检器继电器才输出。
OUTPUT_MODE_LOOP_ONLY, // 仅地感输出 有效,光耦输入 无效
OUTPUT_MODE_RADAR_ONLY, // 仅光耦输入有效,雷达的输出信号接光耦输入,雷达有输出,车检器的继电器输出;地感信号 无效。
OUTPUT_MODE_LOOP_X_RESET, // 光耦输入为 设备 复位信号,仅地感检测 输出
@@ -853,13 +853,13 @@ void cjq_srv(void){
*
* 产出 g_opt_trigger (1=有效, 0=无效),供继电器输出段融合判决。
* 各模式逻辑:
* MODE 0 (LOOP_X_RESET): 光耦=复位信号,≥400ms 低电平后上升沿芯片复位
* MODE 1 (LOOP_ONLY): 光耦忽略,g_opt_trigger=0
* MODE 2 (RADAR_ONLY): g_opt_trigger = 光耦信号 (3 样本多数表决防抖)
* MODE 3 (LOOP_OR): g_opt_trigger = 光耦信号
* MODE 4 (LOOP_AND): g_opt_trigger = 光耦信号
* MODE 5 (HUMAN_VD_MIX): 状态机 — 屏蔽→地感触发后解禁→离场 3s 防砸窗口
* MODE 6 (ETC): 状态机 — 屏蔽→地感触发后解禁→光耦断开 500ms 防抖
* MODE 0 (LOOP_OR_RADAR): g_opt_trigger = 光耦信号, 或关系
* MODE 1 (HUMAN_VD_MIX): 状态机 — 屏蔽→地感触发后解禁→离场 3s 防砸窗口
* MODE 2 (ETC): 状态机 — 屏蔽→地感触发后解禁→光耦断开 500ms 防抖
* MODE 3 (LOOP_AND_RADAR): g_opt_trigger = 光耦信号, 且关系
* MODE 4 (LOOP_ONLY): 光耦忽略, g_opt_trigger=0
* MODE 5 (RADAR_ONLY): g_opt_trigger = 光耦信号 (3 样本多数表决防抖)
* MODE 6 (LOOP_X_RESET): 光耦=复位信号,≥400ms 低电平后上升沿芯片复位
*
* 注意: mstick() 单位 5ms/tick
*===========================================================================*/
@@ -923,7 +923,7 @@ static void opt_input_poll(void)
}
/*================================================================
* 模式 0/1/5 — 或 / / 纯雷达
* 模式 0/3/5 — 或 / / 纯雷达
* g_opt_trigger 直出光耦信号, 融合判决在继电器输出段
*================================================================*/
if (g_output_radar_mode == OUTPUT_MODE_RADAR_ONLY ||
@@ -934,7 +934,7 @@ static void opt_input_poll(void)
}
/*================================================================
* 模式 2/3 — 人车混行 / ETC (状态机)
* 模式 1/2 — 人车混行 / ETC (状态机)
*================================================================*/
{
static uint8_t _opt_state = OPT_STATE_IDLE;
+29
View File
@@ -4,6 +4,35 @@
---
## 2026-07-30 — 输出融合模式枚举再次重排:地感且光耦后移
### 变更
将「地感且光耦」从值 1 移到值 3(排到后面),混行/ETC 前移:
```
旧 (V1.4): 0=或 1=且 2=混行 3=ETC 4=仅地感 5=仅光耦 6=复位
新 (V1.5): 0=或 1=混行 2=ETC 3=且 4=仅地感 5=仅光耦 6=复位
```
### 涉及文件
| 文件 | 变更 |
|------|------|
| `storage.h` | `DLD_OUTPUT_MODE` 枚举顺序:AND_RADAR 从 line 2 移至 line 4 |
| `peripheral_main.c` | 注释块 MODE N 标签 + 内联模式号 (0/1/5→0/3/5, 2/3→1/2) |
| `docs/technical-spec.md` | §6.1 融合模式表重排; §6.2/6.3 标题模式号更新; §7.2 LED 行改写为非数字区间 |
| `docs/product-manual.md` | §4.6 融合模式表重排 + 默认值 1→4 (仅地感); 模式号引用更新 |
| `docs/rs485-modbus-protocol.md` | §6.5 融合模式表重排 + 状态机标题模式号更新; V1.4→V1.5 |
| `docs/devlog.md` | 本条目 |
### 影响
- 代码全用符号名,无行为影响
- 已有 flash 配置的 `fusion_mode` 旧值语义与新模式不兼容,需重新设置
---
## 2026-07-29 — 输出融合模式枚举重排
### 变更
+5 -5
View File
@@ -128,7 +128,7 @@ DLD154Pro **无物理拨码开关**,所有参数通过手机 BLE 小程序配
| 离开延时 | 0 ~ 255 (×100ms) | 5 (500ms) | 车辆离开后延时释放 |
| 有限存在 | 0 (永久) 或 1~255 (×5s) | 0 | 超时后释放并复位 |
| 频率档位 | 0 (高频) / 1 (低频) | 0 | 调频电容切换 |
| 融合模式 | 0 ~ 6 | 1 (仅地感) | 见 §4.6 |
| 融合模式 | 0 ~ 6 | 4 (仅地感) | 见 §4.6 |
| 功能码 (function_mode) | bit0: RS485 协议, bit1: 光耦功能 | 0 | 700BS/Modbus 切换 |
| RS485 协议 | 700BS / Modbus RTU | 700BS | bit0=0→700BS, bit0=1→Modbus |
| RS485 地址 | 1 ~ 247 | 1 | Modbus 从机地址 |
@@ -171,14 +171,14 @@ DLD154Pro 支持通过光耦输入接入外部雷达/车检器的干接点信号
| 模式 | 名称 | 继电器吸合条件 | 适用场景 |
|------|------|--------------|---------|
| 0 | 地感**或**光耦 | 任一触发 | 互补冗余,提高检测可靠性(默认) |
| 1 | 地感**且**光耦 | 两者同时触发 | 双确认,防地感误触(行人/拖车) |
| 2 | **人车混行防砸** | 有车后任一触发,离场 3s 窗口内光耦有效 | 混合交通防砸人 |
| 3 | **ETC 模式** | 有车后任一触发,光耦断开 500ms 防抖才释放 | ETC 车道 |
| 1 | **人车混行防砸** | 有车后任一触发,离场 3s 窗口内光耦有效 | 混合交通防砸人 |
| 2 | **ETC 模式** | 有车后任一触发,光耦断开 500ms 防抖才释放 | ETC 车道 |
| 3 | 地感**且**光耦 | 两者同时触发 | 双确认,防地感误触(行人/拖车) |
| 4 | 仅地感 | 线圈有车 | 纯线圈场景 |
| 5 | 仅光耦 | 光耦输入有效 | 纯雷达,地感做背景监控 |
| 6 | 光耦复位 | 仅地感(光耦用于远程复位) | 需要远程复位功能 |
**人车混行防砸 (模式 2) 工作原理:**
**人车混行防砸 (模式 1) 工作原理:**
1. 平常状态只用线圈检测,屏蔽光耦(防行人误触)
2. 线圈检测到车、继电器吸合后,光耦信号也参与(人或雷达都能续吸)
3. 车离开线圈+雷达区域后,保留 **3 秒防砸窗口**——期间光耦检测到人立即吸合
+6 -5
View File
@@ -265,16 +265,16 @@ DLD154Pro 算法移植后,`MEASUREMENT_BASE = 524288 (2^19)`CH591R@60MHz
| 值 | 模式 | 继电器吸合条件 | 适用场景 |
|----|------|--------------|---------|
| 0 | 地感 **或** 光耦 | 线圈 OR 雷达 | 互补冗余,任一触发即吸合 |
| 1 | 地感 **且** 光耦 | 线圈 AND 雷达 | 双确认,防地感误触(如行人/拖车) |
| 2 | 人车混行防砸 | 有车后 coil OR opto离场 3s 窗口内光耦有效 | 混合交通流防砸人 |
| 3 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用逻辑 |
| 1 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 |
| 2 | ETC 模式 | 有车后 coil OR opto光耦断开 500ms 防抖才释放 | ETC 专用逻辑 |
| 3 | 地感 **且** 光耦 | 线圈 AND 雷达 | 双确认,防地感误触(如行人/拖车) |
| 4 | 仅地感 | 线圈有车 | 纯线圈场景(默认,未接光耦时也用此模式) |
| 5 | 仅光耦 | 光耦输入有效(雷达有车) | 纯雷达,地感只做背景监控 |
| 6 | 光耦复位 | 线圈有车(光耦用于远程复位) | 需要远程复位功能 |
**模式 2(人车混行防砸)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → WINDOW(3s 防砸窗口,光耦触发即续吸,连续进入持续防砸)→ 3s 超时 → IDLE。
**模式 1(人车混行防砸)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → WINDOW(3s 防砸窗口,光耦触发即续吸,连续进入持续防砸)→ 3s 超时 → IDLE。
**模式 3ETC)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → DEBOUNCE(500ms 防抖,期间触发即回 ARMED)→ 超时 → IDLE。
**模式 2ETC)状态机**:IDLE(仅线圈检测)→ 线圈有车 → ARMED(线圈||光耦)→ 两者均释放 → DEBOUNCE(500ms 防抖,期间触发即回 ARMED)→ 超时 → IDLE。
> **注意**:当光耦配置为复位功能(`function_mode` bit1=1)时,`fusion_mode` 无效,继电器仅由线圈检测结果驱动。模式 6 下光耦输入低电平 ≥400ms 后上升沿触发 `SYS_ResetExecute()` 芯片全复位。
@@ -328,6 +328,7 @@ DLD154Pro RS485 同时支持 700BS 协议(`g_fm_700bs_disable=0`)和 Modbus
| 版本 | 日期 | 作者 | 变更 |
|------|------|------|------|
| V1.5 | 2026-07-30 | wangfq | 枚举再次重排: 且后移 (0=或,1=混行,2=ETC,3=且,4=仅地感,5=仅光耦,6=复位); 模式号引用同步更新 |
| V1.4 | 2026-07-29 | wangfq | 枚举重排: 融合模式值重新分配 (0=或,1=且,2=混行,3=ETC,4=仅地感,5=仅光耦,6=复位); 默认融合模式 0→4(仅地感); 修正所有示例和说明文本 |
| V1.3 | 2026-07-29 | wangfq | 修正: 灵敏度档位 3→4 (范围 03, 默认 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 兼容对照表 |
+6 -6
View File
@@ -364,14 +364,14 @@ DLD154Pro 支持通过光耦输入 (PB10) 接入外部雷达/车检器信号,
| 模式值 | 名称 | 继电器吸合条件 | 适用场景 |
|--------|------|--------------|---------|
| 0 | 地感**或**光耦 | coil OR opto | 互补冗余,任一触发即吸合(默认) |
| 1 | 地感**且**光耦 | coil AND opto | 双确认,防地感误触 |
| 2 | 人车混行防砸 | 有车后 coil OR opto离场 3s 窗口内光耦有效 | 混合交通流防砸人 |
| 3 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用 |
| 1 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 |
| 2 | ETC 模式 | 有车后 coil OR opto光耦断开 500ms 防抖才释放 | ETC 专用 |
| 3 | 地感**且**光耦 | coil AND opto | 双确认,防地感误触 |
| 4 | 仅地感 | 线圈有车 | 纯线圈场景 |
| 5 | 仅光耦 | 光耦输入有效 | 纯雷达,地感只做背景监控 |
| 6 | 光耦复位 | 仅地感(光耦用于远程复位) | 带远程复位功能 |
### 6.2 人车混行防砸 (模式 2) 状态机
### 6.2 人车混行防砸 (模式 1) 状态机
```
IDLE (仅线圈检测)
@@ -386,7 +386,7 @@ WINDOW (3s 防砸窗口)
│ 3s 超时无触发 → 回到 IDLE,落杆
```
### 6.3 ETC 模式 (模式 3) 状态机
### 6.3 ETC 模式 (模式 2) 状态机
```
IDLE (仅线圈检测)
@@ -425,7 +425,7 @@ TMR1 ISR (每 5ms)
| 线圈断开 | **灭** | 等待恢复 |
| 正常运行,无车 | **灭** | 就绪 |
| 正常运行,有车 | **亮** | 车辆检测中 |
| 光耦融合模式 2-6 下 | 跟随 `relay1_state` | 与实际继电器状态一致 |
| 光耦参与模式 (非 LOOP_ONLY/LOOP_X_RESET) | 跟随 `relay1_state` | 与实际继电器状态一致 |
### 7.3 红灯行为