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

83 lines
2.6 KiB
Markdown
Raw Permalink Normal View History

# 光照度读取数据包格式(仁科 / 耘农,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
```