Commit Graph
16 Commits
Author SHA1 Message Date
wangfq 22511ba466 feat: Modbus 新增 0x0012 系统指令寄存器,写 0x2C2C 复位 MCU (对齐 700BS 0x2C) 2026-07-31 08:21:39 +08:00
wangfq df6e38f118 refactor: Modbus 缓冲大小用宏替换硬编码 250
- rs485_modbus.h: +MB_MAX_READ_REGS(125) / MB_MAX_DATA_BYTES(250) / MB_RESP_BUF_SIZE(255)
- rs485_modbus.c: data_buf[250]→data_buf[MB_MAX_DATA_BYTES]
                   buf[5+250]  →buf[MB_RESP_BUF_SIZE]
                   quantity>125→quantity>MB_MAX_READ_REGS
2026-07-30 15:28:11 +08:00
wangfq e32f3892fe feat: Modbus RTU V1.6 私有协议编码实现
新增:
- rs485_modbus.h/c — 完整 Modbus RTU 从机实现 (516行)
  · FC 0x02 读离散输入 (9-bit 位图: car_state/线圈/光耦/继电器)
  · FC 0x03 读保持寄存器 (含 HR 0x0010/0x0011)
  · FC 0x04 读输入寄存器 (基础 IR + 全数据块 0x0100-0x0112)
  · FC 0x06/0x10 写寄存器 (含值域校验+只读拦截)
  · FC 0x11 Report Slave ID
  · CRC16 查表 (poly=0xA001)
  · 全数据块组装 (19 reg = 38B big-endian)
  · 主动上报 3 级速率调度 (事件立即/活动150ms/空闲800ms)
  · 车间距/通过时间测量 (mstick/2=10ms单位, relay边沿触发)
  · 光耦状态实时读取 (GPIOB_ReadPortPin)
  · Holding Register 写穿透: Fusion Mode 同步 direction_mode,
    Hold Time 同步 g_hold_time, Freq Level 同步 g_loop_cng_unit

改造:
- rs485_700bs.h/c: 暴露 rs485_send() + rx缓冲(_rx_buf/_rx_len/_rx_last_tick) 供Modbus共用
- peripheral_main.c: g_fm_700bs_disable 分派 700BS/Modbus; modbus_init() 随 rs485_init 调用
2026-07-30 12:02:24 +08:00
wangfq ccd996d56e refactor: 融合模式枚举重排,地感且光耦后移
0=或 1=混行 2=ETC 3=且 4=仅地感 5=仅光耦 6=复位
- storage.h: AND_RADAR 从位置 2 移至位置 4
- peripheral_main.c: 注释块 MODE 标签及内联模式号同步
- 全部 4 份文档表格/节号/版本号对齐
2026-07-30 09:01:12 +08:00
wangfq 8a01a5e769 refactor: 输出融合模式枚举重排,出厂默认模式0(地感或光耦)
枚举值重新分配:
  旧: 0=复位 1=仅地感 2=仅光耦 3=或 4=且 5=混行 6=ETC
  新: 0=或   1=且     2=混行   3=ETC 4=仅地感 5=仅光耦 6=复位

涉及:
- storage.h: 枚举顺序重排
- peripheral_main.c: 注释号同步; LED区间判断改用精确比较; 工厂默认direction_mode=0x00
- 三份文档: 融合模式表/示例/默认值全部同步
2026-07-29 18:46:35 +08:00
wangfq 67de020351 docs: 发布 V3.01 技术规格书 + 产品说明书
- 新增 docs/technical-spec.md: 系统架构、电气参数、IO引脚、检测算法全链路、时序状态机、7种输出融合模式、通信协议、Flash存储布局
- 新增 docs/product-manual.md: 产品概述、技术参数、硬件接口、BLE配置项、灵敏度、融合模式(含人车混行防砸/ETC)、安装指南、故障排查、RS485集成速查
- 更新 docs/devlog.md: 置顶文档发布条目
- cmcng.h: 固件版本 3.00→3.01
2026-07-29 09:50:46 +08:00
wangfq 978cce4af8 feat(opt): 光耦输出模式完整实现 — 6种融合逻辑 + 人车混行/ETC 状态机
- 新增 g_opt_trigger 全局变量:opt_input_poll() 产出, TMR1 ISR 消费
- MODE 1/2/3/4: 纯地感/纯雷达/或/与 — g_opt_trigger 直出光耦信号
- MODE 5 (HUMAN_VD_MIX): 3态机 IDLE→ARMED→WINDOW, 3s防砸窗口
- MODE 6 (ETC): 3态机 IDLE→ARMED→DEBOUNCE, 500ms防抖释放
- TMR1 ISR case 0: 6模式融合判决 (coil || opt_trigger / coil && opt_trigger等)
- 光耦防抖: 3样本多数表决, ~30ms消抖
- MODE 0 复位逻辑不变
- docs: 更新开发日志 (状态机图 + 各模式对照表)
2026-07-28 09:34:18 +08:00
wangfq f5edab43c2 feat(opt): 光耦输出模式升级 — DLD_OUTPUT_MODE 枚举 + direction_mode 低四位取值
- 新增 DLD_OUTPUT_MODE 枚举: 7种模式(复位/纯地感/纯雷达/或/与/人车混行/ETC)
- g_fm_radar_input_disable → g_output_radar_mode: 从 function_mode bit1 改为 direction_mode & 0x0F
- 仅模式0(复位)已实现, 1~6 暂为 no-op
- BLE 回读字段改为 direction_mode 完整字节
- rs485_700bs.c: 注释块重排(无功能变更)
- docs: 更新开发日志
2026-07-28 09:26:09 +08:00
wangfq e974fd7814 fix(rs485): 修正心跳周期 — mstick() 单位是 5ms/tick
RS485_HEARTBEAT_MS: 5000→1000 (5s / 5ms = 1000 tick)
RS485_FAULT_MS:     1000→200  (1s / 5ms = 200 tick)
2026-07-24 17:48:18 +08:00
wangfq 4964e0d019 feat: 支持四级灵敏度 (MAX_LOOP_SENS_AMOUNT 3→4)
- SensTable:  新增第四档 14 (原 108/54/28)
- SensTable1: 新增第四档 12 (原 81/32/16)
- set_factory_param(): total 由 MAX_LOOP_SENS_AMOUNT 宏决定
2026-07-24 11:10:44 +08:00
wangfq d50135c77b feat(rs485): 0x3D DIP查询从BLE配置实时映射灵敏度/输出/延时
- rs485_700bs.c: handle_query_dip() 从 g_loop_cng_unit 读取 sensitvity/output_mode/exist_mode/delay_time,映射为 DIP1-5 位
- rs485_700bs.h: 恢复 CMD_QUERY_DIP / RSP_DIP 常量
- docs: 添加 DLD-700BS V1.15 使用说明书 MD 版
- DLD154Pro 无物理拨码,所有配置通过 BLE 管理,0x3D 返回当前有效参数
2026-07-23 19:07:12 +08:00
wangfq ab469315bf feat(DLD154Pro): RS485 700BS 从机协议实现
新增 rs485_700bs.c/h:
  - UART0 9600 8N1 中断接收, PA13 方向控制
  - 命令处理: 0xFA(状态)/0x1B(频率)/0x2C(复位)/0x3D(拨码)
  - 心跳上报: 0xAA 空闲5s/故障1s/事件立即
  - XOR 校验, 地址匹配 (g_rs485_id)
  - 0x2C 复位: loop1_LC_Reset + INI_LOOP 完整初始化

集成 peripheral_main.c:
  - rs485_init() 替换 GPIO placeholder
  - rs485_poll() 加入主循环 (cjq_srv 之后)
2026-07-23 18:51:30 +08:00
wangfq 441a3e61cb feat: BLE 新增 RS485 地址/波特率读写 + 空闲关蓝牙超时 + 功能码细分
- 新增 CMD_DBN_RW_UART_BAUD (0x31): 读写 RS485 波特率、485 地址、空闲关蓝牙超时
- storage.h: 新增 flash 地址 ADDR_BT_Close_TIMEOUT_Offset(0x10)、Addr_RS485_Baud_Offset(0x11,3B)、Addr_RS485_ID_Offset(0x14)
- 功能码细分: g_function_mode bit0→fm_700bs_disable(0=700BS/1=Modbus), bit1→fm_radar_input_disable(0=光耦/1=复位)
- factory_dev 出厂默认: RS485 ID=1, 波特率=9600, 蓝牙超时=0
- para_store_init 上电从 flash 恢复所有新增配置
2026-07-22 14:25:32 +08:00
wangfq 7683627639 fix: 修复灵敏度无法修改 + 调整有限存在时间 + 版本号更新
- dbn_ble_srv.c: unpack_pkg_set_cjq_param() 中同步更新 g_freq_sens,
  修复 BLE 小程序修改灵敏度无效的 bug
- dbn_ble_srv.c: g_hold_time 公式对齐 para_store_init (20*5)
- peripheral_main.c: g_freq_sens 从 INIT_VD 写死值移到
  para_store_init() 从存储读取
- cmcng.h: 固件 v3.00, 硬件 v3.01
2026-07-21 16:19:40 +08:00
wangfq 91ba84495d feat: 按DLD154Pro硬件资源文档调整代码
变更摘要:
- LED.h: PB15→PB22(LEDA绿)+PB23(LEDB红呼吸灯)
- cmcng.h: 型号DLD110S→DLD154Pro, 版本v4.01/hw1.00
- peripheral.c: BLE广播名/设备名→DLD154Pro
- peripheral_main.c: 删RLY2/KEY_SA1_SA2/FLEVEL_L/DEBUG_UART
- peripheral_main.c: 新增RS485预留(PA14/15/13)+光耦预留(PB10)
- peripheral_main.c: 简化继电器为单路(PA8), 一级调频(PA12)
- peripheral_main.c: 删poll_sens_key(), g_freq_sens默认值=2
- IDE工程文件: DLD110S→DLD154Pro
2026-07-21 10:43:45 +08:00
wangfq 5f5f697992 init: DLD154Pro 单线圈蓝牙车检器,从 DLD110SV4 复制初始代码和文档 2026-07-21 10:38:23 +08:00