rs485-lpc/docs/modbus-illuminance-packet-formats.md

83 lines
2.6 KiB
Markdown
Raw 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.

# 光照度读取数据包格式(仁科 / 耘农,2026-07-14 实测核对)
两个传感器均在 ESP32-P4(UART2 = GPIO54/19,9600 8N1)上实测,请求/应答帧
CRC 全部独立复算通过。排查细节见 `docs/modbus-rs485-sensors-2026-07-13.md`。
## 通用说明
- 协议:Modbus RTU,功能码 FC03(读保持寄存器),单寄存器。
- CRC16-Modbus:多项式 0xA001、初值 0xFFFF,线上字节序**低字节在前**
(参考实现:`src/modbus/rtu.rs` 的 `crc16` / `build_read_holding_registers`)。
- 应答合法性判据:地址匹配 + 功能码 0x03 + 数据长度 0x02 + CRC 通过
(`ram-app/src/bin/modbus_bench.rs` 的 `transact`)。
## 仁科铝壳光照度变送器(地址 1)
**光照度寄存器:0x0006(FC03)**
请求(8 字节):
```
01 03 00 06 00 01 64 0B
└┬┘ └┬┘ └──┬──┘ └──┬──┘ └─┬─┘
地址 功能码 起始寄存器 寄存器数 CRC16(lo,hi)
```
应答(7 字节):
```
01 03 02 <Hi> <Lo> <CRClo> <CRChi>
└──┬──┘
光照度(大端 u16)
```
实测真实帧(2026-07-14 晚,室内弱光):
```
01 03 02 00 11 78 48 → 0x0011 = 17 Lux
01 03 02 00 21 78 5C → 0x0021 = 33 Lux
```
换算:0~65535 量程型 1 count = 1 Lux;0~200000 量程型 1 count = 100 Lux
(手册示例 0x0530=1328 → 1328 Lux 或 132800 Lux)。
**性能**:100% 应答,首字节 ~4.3~4.6ms(含 3.5 字符 turnaround 4ms),
完整事务 ~10.6ms,最快轮询 ~50Hz(背靠背)。
## 邯郸耘农 RY-G/W/485(站号 0xFF)
**光照度寄存器:0x0000(FC03,站号作地址)**
请求(8 字节,与手册示例逐字一致):
```
FF 03 00 00 00 01 91 D4
└┬┘ └┬┘ └──┬──┘ └──┬──┘ └─┬─┘
站号 功能码 起始寄存器 寄存器数 CRC16(lo,hi)=0xD491
```
应答(7 字节):
```
FF 03 02 <Hi> <Lo> <CRClo> <CRChi>
```
实测 + 手册帧:
```
FF 03 02 00 AA 11 EF → 0x00AA = 170(实测唯一成功应答,2026-07-14)
FF 03 02 05 DC 93 59 → 0x05DC = 1500(手册示例,CRC 复算一致)
```
换算:0~2000/0~20K 量程 1 count = 1 Lux;0~200K 量程 ÷100(15 KLux)。
**注意**:该传感器光照度寄存器应答率仅 ~1%(慢事务单发 120 笔仅 1 成功;
FC03/FC04 × reg 0x0000~0x0008 探针 36 笔全超时),应答时延迟很短(~11ms)。
帧格式无误,属传感器固件行为(手册标称响应时间 1 秒)。对照组读站号
(FC03 reg 0x0001 @ 地址 0x00)100% 可靠:
```
请求: 00 03 00 01 00 01 D4 1B
应答: 00 03 02 00 FF C5 C4 → 站号 = 0xFF
```