原则:代码未实现的功能,协议文档在相应指令旁如实标注"未实现",避免文档承诺≠固件实现。 - rs485-modbus-protocol.md V1.7→V1.8: §3.1 DI 0x0008 Init Flag 未实现(恒 0);§3.2 IR 0x0006/0x0007(Variation)/ 0x000A/0x000B/0x000C 未实现(改读全数据块 0x010A/0x010B);§3.3 保持寄存器 全部标注(FC 0x06 仅 0x0010/0x0011/0x0012 可写,0x00FE 无分支); §4.3/4.5/4.8 未实现横幅;§5 功能码矩阵 0x03/0x10/0x11 → ✗; §6.3 仅 0x06;§7 0x3D/Init_B 对照标注;§8 版本历史 V1.8 - rs485-700bs-protocol.md: §4.4 0x3D 未实现注记 + §5 速查表 + §6 兼容对照 - ble-protocol.md / product-manual.md / technical-spec.md: 版本 V3.04→V3.05 + 版本历史 - devlog.md: 置顶 2026-08-27 条目(减配清单 + 文档标注 + 保留能力 + 宏修复)
5.3 KiB
5.3 KiB
车检器 RS485 通信协议 — DLD-700BS
版本: V1.15 | 日期: 2022-08-19 | 来源:
reference/docs/A5 20220819 车检器RS485通信协议 DLD-700BS V1.15.pdf兼容产品: DLD-700BS 系列车检器
1. 物理层
| 参数 | 值 |
|---|---|
| 接口 | RS485 半双工 |
| 波特率 | 9600 bps |
| 数据位 | 8 |
| 校验 | 无 (N) |
| 停止位 | 1 |
| 从机地址 | 0x01–0x10(16 个地址,DIP 拨码设置) |
2. 地址码设置(DIP 拨码)
| DIP7 | DIP8 | DIP9 | DIP10 | 地址 |
|---|---|---|---|---|
| OFF | OFF | OFF | OFF | 0x01 |
| ON | OFF | OFF | OFF | 0x02 |
| OFF | ON | OFF | OFF | 0x03 |
| ON | ON | OFF | OFF | 0x04 |
| OFF | OFF | ON | OFF | 0x05 |
| ON | OFF | ON | OFF | 0x06 |
| OFF | ON | ON | OFF | 0x07 |
| ON | ON | ON | OFF | 0x08 |
| OFF | OFF | OFF | ON | 0x09 |
| ON | OFF | OFF | ON | 0x0A |
| OFF | ON | OFF | ON | 0x0B |
| ON | ON | OFF | ON | 0x0C |
| OFF | OFF | ON | ON | 0x0D |
| ON | OFF | ON | ON | 0x0E |
| OFF | ON | ON | ON | 0x0F |
| ON | ON | ON | ON | 0x10 |
3. 通信数据包格式
主机发送固定 3 字节:
| STX | ADDR/CMD | XOR |
| 1 byte | 1 byte | 1 byte |
| 字段 | 类型 | 说明 |
|---|---|---|
| STX | uint8 | 起始字节 / 命令码 |
| ADDR | uint8 | 目标地址 (0x01–0x10),或命令码的组成部分 |
| XOR | uint8 | 异或校验:XOR = STX ^ ADDR/CMD |
4. 命令集
4.1 查询有车状态及线圈好坏
主机发送:
| 0xFA | ADDR | XOR |
例:查询 1# 车检器 →
FA 01 FB
从机回复:
| 0xF5 | DATA | XOR |
| DATA 位 | 说明 |
|---|---|
| bit7 | 车辆状态:0=无车,1=有车 |
| bit5 | 线圈状态:0=正常,1=线圈断开 |
| bit4–0 | 地址 (0x01–0x10) |
| XOR | 0xF5 ^ DATA |
例:
- 1# 无车 →
F5 01 F4- 2# 有车 →
F5 82 77- 3# 无车+线圈断 →
F5 23 D6
4.2 查询线圈振荡频率
主机发送:
| 0x1B | ADDR | XOR |
例:查询 1# →
1B 01 1A
从机回复:
| 0x14 | Fre_1 | Fre_2 | Fre_3 | ADDR | XOR |
| 字段 | 说明 |
|---|---|
| Fre_1–3 | 3 字节频率 (big-endian): Freq = (Fre_1 << 16) | (Fre_2 << 8) | Fre_3,单位 Hz |
| XOR | 0x14 ^ Fre_1 ^ Fre_2 ^ Fre_3 ^ ADDR |
例:
- 1# →
14 00 ED E8 01 10,Freq = 0x00EDE8 = 60.904 kHz- 2# →
14 01 63 06 02 72,Freq = 0x016306 = 90.886 kHz
4.3 车检器复位重新初始化线圈
主机发送:
| 0x2C | ADDR | XOR |
例:复位 1# →
2C 01 2D
从机无回复。
4.4 查询拨码开关 DIP1–5 设置
⚠ DLD154Pro 实现状态(V3.05 起):此命令固件未实现(省 Flash 减配,
CMD_QUERY_DIP分支已注释),从机不响应。DLD154Pro 无物理拨码,拨码语义由 BLE 配置映射,如需查询请走 BLE 或 Modbus 全数据块。
主机发送:
| 0x3D | ADDR | XOR |
例:查询 1# →
3D 01 3C
从机回复:
| 0x32 | DATA | ADDR | XOR |
| DATA 位 | 说明 |
|---|---|
| bit4–0 | DIP1–5 状态:0=OFF,1=ON |
例:
- 1# →
32 0D 01 3E(DIP1、DIP3、DIP4=ON,DIP2、DIP5=OFF)- 2# →
32 0A 02 3A(DIP2、DIP4=ON,DIP1、DIP3、DIP5=OFF)
4.5 主动上报心跳 (0xAA)
空闲每隔 5 秒上报一次。线圈异常每隔 1 秒上报直到恢复。有车/无车事件立即上报。
从机主动发送:
| 0xAA | Init_B | State | Fre_Err | Fre_1 | Fre_2 | Fre_3 | ADDR | XOR |
| 字段 | 字节 | 说明 |
|---|---|---|
| Init_B | 1 | A1=设备复位后首次上报,A0=正常 |
| State | 1 | bit7=有车,bit5=线圈断开,bit4–0=地址 |
| Fre_Err | 1 | 0x00=频率正常。bit0=1→下限异常;bit4=1→上限异常 |
| Fre_1–3 | 3 | 线圈振荡频率 (big-endian, Hz) |
| ADDR | 1 | 设备地址 |
| XOR | 1 | 0xAA ^ Init_B ^ State ^ Fre_Err ^ Fre_1 ^ Fre_2 ^ Fre_3 ^ ADDR |
复位触发条件:上电、协议控制复位(0x2C)、有限存在模式超时复位、重新连接线圈。
例:
- 1# 启动后首次上报 →
AA A1 01 00 00 BF 50 01 E4- 1# 车进入 →
AA A0 81 00 00 BF 84 01 B1- 1# 车离开 →
AA A0 01 00 00 BF 50 01 E5- 1# 线圈断开 →
AA A0 21 00 00 BF 4E 01 DB(持续每秒发送,直到恢复)
5. 命令速查表
| STX | 方向 | 功能 | 回复 |
|---|---|---|---|
| 0xFA | 主→从 | 查询有车 + 线圈状态 | F5 DATA XOR |
| 0x1B | 主→从 | 查询线圈频率 | 14 Fre1-3 ADDR XOR |
| 0x2C | 主→从 | 复位初始化线圈 | 无回复 |
| 0x3D | 主→从 | 查询 DIP1-5 | 32 DATA ADDR XOR |
| 0xAA | 从→主 | 主动心跳上报 | 不回复 |
6. DLD154Pro 兼容说明
| 700BS 命令 | DLD154Pro 兼容 | 备注 |
|---|---|---|
| 0xFA 查询状态 | Modbus → DI 0x0000–01 | 等价覆盖 |
| 0x1B 查询频率 | Modbus → IR 0x0000–01 | 等价覆盖(32-bit) |
| 0x2C 复位 | Modbus → HR 0x00FF | 新增命令寄存器 |
| 0x3D 查拨码 | Modbus → IR 0x000C (DIP Virtual) | ⚠ 未实现(V3.05 起减配,IR 0x000C 与 700BS 0x3D 均不响应) |
| 0xAA 心跳 | Modbus 无等价 | 主从架构限制,靠轮询 DI+IR 补偿 |