fix: 时序参数修正 — OUT/PULSE_DELAY 均为500ms

- OUT_DELAY: 1.9s→500ms (10 tick), SW_4=ON时生效, OFF时为0
- PULSE_DELAY: 950ms→500ms (10 tick), 固定不变
- 删除 OUT_DELAY_FAST/PULSE_DELAY_FAST, 仅保留一组值
- SW_4 语义: 0=无离开延时, 1=500ms离开延时
- 同步更新产品手册、技术规格书、README、devlog
This commit is contained in:
wangfq
2026-06-24 09:13:46 +08:00
parent fc459c911f
commit 2f6cb54847
6 changed files with 63 additions and 60 deletions

View File

@@ -22,7 +22,7 @@
| PA0 | SA_1 | 灵敏度 bit0 | 与 SA_2 组合4 级灵敏度 |
| PA1 | SA_2 | 灵敏度 bit1 | |
| PA2 | SW_3 | 存在/脉冲 | 0=存在输出1=脉冲输出 |
| PA3 | SW_4 | 快速模式 | 0=正常, 1=快速 500ms |
| PA3 | SW_4 | 离开延时 | 0=, 1=500ms |
| PA4 | SW_5 | 安全复位 | 0=正常1=安全复位 |
### 继电器输出
@@ -53,7 +53,7 @@
| PA0 | SA_1 (灵敏度) | IN | GPIO |
| PA1 | SA_2 (灵敏度) | IN | GPIO |
| PA2 | SW_3 (存在/脉冲) | IN | GPIO |
| PA3 | SW_4 (快速模式) | IN | GPIO |
| PA3 | SW_4 (离开延时) | IN | GPIO |
| PA4 | SW_5 (安全复位) | IN | GPIO |
| PA5 | RLY2 (继电器2) | OUT | GPIO |
| PA6 | RLY1 (继电器1) | OUT | GPIO |
@@ -74,7 +74,7 @@
| 1 | 1 | 最高 |
- **SW_3**0 = 存在输出继电器保持1 = 脉冲输出(继电器吸合后释放)
- **SW_4**0 = 正常1 = 快速 500ms缩短离开防抖和脉冲宽度为 500ms
- **SW_4**0 = 无离开延时直接输出脉冲1 = 离开延时 500ms
- **SW_5**:拨到 ON 触发安全复位(所有输出关闭,频率重新学习)
### 指示灯
@@ -89,7 +89,7 @@
### 继电器输出模式
**存在输出SW_3=0** 有车时 RLY1 吸合,无车释放。
**脉冲输出SW_3=1** 车辆进入时 RLY1 吸合 200ms 后释放。
**脉冲输出SW_3=1** 车辆进入时 RLY1 吸合 500ms 后释放。
## 目录结构

View File

@@ -262,42 +262,44 @@ else
---
## 2026-06-24 — SW4 快速模式 & 接口
## 2026-06-24 — 时序参数修正 & 接口
### SW4 行为修正
### 时序参数修正
**旧行为**SW_4=ON 时 FLAG_OUT 立即跳到 FLAG_PLUSE跳过离开延时FLAG_PLUSE 仍用正常 PULSE_DELAY950ms。语义混乱——名字叫"延时"实际是跳过延时。
OUT_DELAY 和 PULSE_DELAY 之前沿用 M1H 的值1.9s / 950ms现修正为 500ms
**新行为**SW_4 重定义为**快速模式**。ON 时 OUT_DELAY 和 PULSE_DELAY 均缩短为 10 tick500msOFF 时维持原值1.9s/950ms
| 参数 | M1H 旧值 | DLD154V4B 新值 |
|------|---------|---------------|
| OUT_DELAY | 1.9s (38 tick) | **500ms (10 tick)**SW_4 控制开关 |
| PULSE_DELAY | 950ms (19 tick) | **500ms (10 tick)**,固定 |
SW_4 语义0 = 无离开延时立即脉冲1 = 离开延时 500ms。删除 OUT_DELAY_FAST / PULSE_DELAY_FAST 宏,因只有一组值。
```c
// TaskLoop.h 新增
#define OUT_DELAY_FAST 10 // 500ms
#define PULSE_DELAY_FAST 10 // 500ms
// TaskLoop.h
#define OUT_DELAY 10 // 离开防抖 500ms仅 SW_4=ON 时生效)
#define PULSE_DELAY 10 // 脉冲宽度 500ms
// TaskLoop.c 运行时选择
uint16_t out_delay = SET_DLY ? OUT_DELAY_FAST : OUT_DELAY;
uint16_t pulse_delay = SET_DLY ? PULSE_DELAY_FAST : PULSE_DELAY;
// TaskLoop.c
if (SET_DLY) {
loop1_OUTCNT++;
if (loop1_OUTCNT > OUT_DELAY) { ... } // 500ms 延时
} else {
// 无离开延时:立即 FLAG_PLUSE
}
```
适用范围ETC 收费站等需要快速落杆的场景。
### 接口修正
- 去除所有 RS485 相关描述:本产品只有 TTL 电平 UART Tx 调试口,无 RS485 通信能力
- 去除所有 RS485 相关描述:本产品只有 TTL 电平 UART Tx 调试口
- 产品手册端子定义RS485-A/B → Tx TTL 调试输出
- 技术规格书 §9整节从 RS485 协议改为 TTL Tx 调试接口说明
### 文档同步
- 产品手册 + 技术规格书同步更新SW4 描述、端子定义、时序参数表
- README.md 同步更新
## 修订记录
| 版本 | 时间 | 说明 |
|------|------|------|
| V1.6 | 2026-06-24 | SW4 快速模式修正,RS485→TTL Tx 接口更正 |
| V1.6 | 2026-06-24 | 时序修正OUT_DELAY/PULSE_DELAY→500msRS485→TTL Tx |
| V1.5 | 2026-06-23 | Origin 污染保护、USE_FLATNESS_EXIT 开关 |
| V1.4 | 2026-06-23 | 移植 CN200910309382 平坦性离开判定 |
| V1.3 | 2026-06-23 | 指示灯行为、稳定期、重连状态保持 |

View File

@@ -50,8 +50,8 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
| 灵敏度等级 | 4 级(拨码可调) |
| 响应时间 | < 10 ms进入检测 |
| 进入防抖 | 500 ms |
| 离开防抖 | 1.9 s + 平坦性三条件确认SW_4=ON 时 500 ms |
| 脉冲输出宽度 | 950 msSW_4=ON 时 500 ms |
| 离开防抖 | 500 msSW_4=ON或 0SW_4=OFF |
| 脉冲输出宽度 | 500 ms |
| 继电器输出 | 2 路(主输出 + 辅助输出) |
| 继电器触点容量 | AC 250V / 3A |
| 调试接口 | TTL 电平 Tx |
@@ -128,7 +128,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
| PA0 | SA_1 | 灵敏度 bit0 | — | — |
| PA1 | SA_2 | 灵敏度 bit1 | — | — |
| PA2 | SW_3 | 输出模式 | 脉冲输出 | 存在输出 |
| PA3 | SW_4 | 快速模式 | 500ms 快速 | 正常 |
| PA3 | SW_4 | 离开延时 | 500ms | 无 |
| PA4 | SW_5 | 安全复位 | 触发复位 | 正常运行 |
### 4.4 输出模式
@@ -136,16 +136,16 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
**存在输出SW_3 = OFF**
- 有车时 RLY1 持续吸合
- 无车时 RLY1 释放
- 配合 OUT_DELAY 1.9s 离开延时
- 配合 OUT_DELAY 离开延时SW_4 控制)
**脉冲输出SW_3 = ON**
- 车辆确认进入时 RLY1 吸合 950ms 后释放
- 车辆确认进入时 RLY1 吸合 500ms 后释放
- 适用于触发道闸抬杆等需要单次脉冲的场景
**快速模式SW_4 = ON**
- 离开防抖缩短为 500 ms(替代默认 1.9 s
- 脉冲输出宽度缩短为 500 ms替代默认 950 ms
- 适用于需要快速落杆的场景(如高速收费站 ETC
**离开延时SW_4 = ON**
- 车辆离开后等待 500ms 再触发脉冲
- 适用于需要延时落杆的场景
- SW_4 = OFF 时不延时,离开立即输出
### 4.5 安全复位

View File

@@ -74,7 +74,7 @@ FreeRTOS Kernel (CMSIS-RTOS v2)
| PA0 | SA_1 | 灵敏度 bit0 | IN | GPIO, 上拉 | — | DIP 开关 |
| PA1 | SA_2 | 灵敏度 bit1 | IN | GPIO, 上拉 | — | DIP 开关 |
| PA2 | SW_3 | 存在/脉冲选择 | IN | GPIO, 上拉 | — | 0=存在, 1=脉冲 |
| PA3 | SW_4 | 快速模式 | IN | GPIO, 上拉 | — | 0=正常, 1=500ms快速 |
| PA3 | SW_4 | 离开延时 | IN | GPIO, 上拉 | — | 0=, 1=500ms |
| PA4 | SW_5 | 安全复位 | IN | GPIO, 上拉 | — | 1=复位 |
| PA5 | RLY2 | 继电器 2 | OUT | GPIO PP | 0 (开路) | 辅助输出 |
| PA6 | RLY1 | 继电器 1 | OUT | GPIO PP | 0 (开路) | 主输出 |
@@ -323,27 +323,27 @@ else
### 5.1 状态转移
```
IN_DELAY=10 OUT_DELAY=38
IN_DELAY=10 OUT_DELAY=10
[空闲] ──有车──→ [进入延时] ──超时──→ [有车确认]
↑ │
│ 车辆离开
│ 车辆离开 (+ SW_4离开延时)
│ ↓
└──脉冲结束───── [脉冲输出] ←──超时── [离开延时]
PULSE_DELAY=19
PULSE_DELAY=10
```
### 5.2 时序参数
| 参数 | Tick (50ms) | 时间 (SW_4=OFF) | 时间 (SW_4=ON 快速) | 说明 |
|------|------------|-----------------|--------------------|------|
| IN_DELAY | 10 | **500 ms** | 500 ms不变 | 进入确认防抖 |
| OUT_DELAY | 38 / 10 | **1.9 s** | **500 ms** | 离开确认防抖 |
| PULSE_DELAY | 19 / 10 | **950 ms** | **500 ms** | 脉冲输出宽度 |
| HOLD_TIME | 5×1200 | **~5 min** | ~5 min不变 | 有限存在超时 |
| LC_HOLD_TIME | 4×1200 | **~4 min** | ~4 min不变 | 安全复位超时 |
| STABLE_SAMPLES | 128 tick | **~128 ms** | 128 ms不变 | 上电稳定期 |
| 参数 | Tick (50ms) | 时间 | 说明 |
|------|------------|------|------|
| IN_DELAY | 10 | **500 ms** | 进入确认防抖 |
| OUT_DELAY | 10 | **500 ms** | 离开防抖(仅 SW_4=ON 时生效OFF 时为 0 |
| PULSE_DELAY | 10 | **500 ms** | 脉冲输出宽度 |
| HOLD_TIME | 5×1200 | **~5 min** | 有限存在超时 |
| LC_HOLD_TIME | 4×1200 | **~4 min** | 安全复位超时 |
| STABLE_SAMPLES | 128 tick | **~128 ms** | 上电稳定期 |
> **SW_4 快速模式**SW_4=ON 时OUT_DELAY 和 PULSE_DELAY 均缩短为 10 tick500 ms用于快速落杆场景。IN_DELAY 和其他参数不受影响。
> **SW_4 离开延时**SW_4=ON 时OUT_DELAY=500msSW_4=OFF 时,离开延时为 0FLAG_OUT 立即切换到 FLAG_PLUSE。PULSE_DELAY 固定 500ms,不受 SW_4 影响。
### 5.3 系统 Tick 来源

View File

@@ -23,12 +23,8 @@
#define HOLD_TIME (5 * 1200) // 有限存在保持(约 5 分钟)
#define LC_HOLD_TIME (4 * 1200) // 安全复位时间(约 4 分钟)
#define IN_DELAY 10 // 进入防抖 500ms
#define OUT_DELAY 38 // 离开防抖 1.9s
#define PULSE_DELAY 19 // 脉冲宽度 950ms
/* SW_4 快速模式:缩短离开防抖和脉冲宽度为 500ms */
#define OUT_DELAY_FAST 10 // 离开防抖快速 500ms
#define PULSE_DELAY_FAST 10 // 脉冲宽度快速 500ms
#define OUT_DELAY 10 // 离开防抖 500ms仅 SW_4=ON 时生效)
#define PULSE_DELAY 10 // 脉冲宽度 500ms
/*===========================================================================
* 滤波参数 — 对齐 M1H
@@ -119,7 +115,7 @@ extern uint8_t TM1cnt; // 50ms tick 分频计数
* 拨码开关状态
*===========================================================================*/
extern uint8_t SET_PLUS; // 0=存在输出, 1=脉冲输出
extern uint8_t SET_DLY; // 0=正常, 1=快速模式(500ms)
extern uint8_t SET_DLY; // 离开延时: 0=无, 1=500ms
extern uint8_t SET_SAFE; // 1=安全复位拨下
/*===========================================================================

View File

@@ -76,7 +76,7 @@ uint8_t TM1cnt = 0;
* 拨码开关状态
*===========================================================================*/
uint8_t SET_PLUS = 0;
uint8_t SET_DLY = 0; // 0=正常, 1=快速模式(500ms)
uint8_t SET_DLY = 0; // 离开延时: 0=无, 1=500ms
uint8_t SET_SAFE = 0;
/*===========================================================================
@@ -508,22 +508,27 @@ void TMR15_GLOBAL_IRQHandler(void)
}
}
/* FLAG_OUT: 离开延时(正常 1.9s,快速模式 500ms */
/* FLAG_OUT: 离开延时(SW_4=ON 时 500msOFF 时 0 */
if (loop1_FLAG_OUT) {
uint16_t out_delay = SET_DLY ? OUT_DELAY_FAST : OUT_DELAY;
loop1_OUTCNT++;
if (loop1_OUTCNT > out_delay) {
if (SET_DLY) {
loop1_OUTCNT++;
if (loop1_OUTCNT > OUT_DELAY) {
loop1_FLAG_OUT = 0;
loop1_FLAG_PLUSE = 1;
loop1_OUTCNT = 0;
}
} else {
/* 无离开延时:立即触发脉冲 */
loop1_FLAG_OUT = 0;
loop1_FLAG_PLUSE = 1;
loop1_OUTCNT = 0;
}
}
/* FLAG_PLUSE: 脉冲宽度(正常 950ms快速模式 500ms */
/* FLAG_PLUSE: 脉冲宽度 500ms */
if (loop1_FLAG_PLUSE) {
uint16_t pulse_delay = SET_DLY ? PULSE_DELAY_FAST : PULSE_DELAY;
loop1_OUTCNT++;
if (loop1_OUTCNT > pulse_delay) {
if (loop1_OUTCNT > PULSE_DELAY) {
loop1_FLAG_PLUSE = 0;
loop1_OUTCNT = 0;
}