Files
DLD154Pro/docs/rs485-700bs-protocol.md
wangfq 692b406d0f docs(DLD154Pro): RS485 协议未实现标注 (rs485-modbus V1.8 / 700BS) + V3.05 文档同步
原则:代码未实现的功能,协议文档在相应指令旁如实标注"未实现",避免文档承诺≠固件实现。

- 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 条目(减配清单 + 文档标注 + 保留能力 + 宏修复)
2026-08-27 08:55:20 +08:00

213 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 车检器 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 |
| 从机地址 | 0x010x1016 个地址,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 | 目标地址 (0x010x10),或命令码的组成部分 |
| 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=线圈断开 |
| bit40 | 地址 (0x010x10) |
| 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_13 | 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 查询拨码开关 DIP15 设置
> ⚠ **DLD154Pro 实现状态(V3.05 起)**:此命令固件**未实现**(省 Flash 减配,`CMD_QUERY_DIP` 分支已注释),从机不响应。DLD154Pro 无物理拨码,拨码语义由 BLE 配置映射,如需查询请走 BLE 或 Modbus 全数据块。
**主机发送:**
```
| 0x3D | ADDR | XOR |
```
> 例:查询 1# → `3D 01 3C`
**从机回复:**
```
| 0x32 | DATA | ADDR | XOR |
```
| DATA 位 | 说明 |
|---------|------|
| bit40 | DIP15 状态:0=OFF1=ON |
> 例:
> - 1# → `32 0D 01 3E`DIP1、DIP3、DIP4=ONDIP2、DIP5=OFF
> - 2# → `32 0A 02 3A`DIP2、DIP4=ONDIP1、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=线圈断开,bit40=地址 |
| Fre_Err | 1 | `0x00`=频率正常。bit0=1→下限异常;bit4=1→上限异常 |
| Fre_13 | 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 | ⚠ DLD154Pro 未实现(V3.05 起减配,不响应) |
| 0xAA | 从→主 | 主动心跳上报 | 不回复 |
---
## 6. DLD154Pro 兼容说明
| 700BS 命令 | DLD154Pro 兼容 | 备注 |
|-----------|---------------|------|
| 0xFA 查询状态 | Modbus → DI 0x000001 | 等价覆盖 |
| 0x1B 查询频率 | Modbus → IR 0x000001 | 等价覆盖(32-bit |
| 0x2C 复位 | Modbus → HR 0x00FF | 新增命令寄存器 |
| 0x3D 查拨码 | Modbus → IR 0x000C (DIP Virtual) | ⚠ 未实现(V3.05 起减配,IR 0x000C 与 700BS 0x3D 均不响应) |
| 0xAA 心跳 | Modbus 无等价 | 主从架构限制,靠轮询 DI+IR 补偿 |