[2026-09-14] eagle: Modbus/RTU_Framing_Source_Analysis.md

This commit is contained in:
Alexey Martemyanov
2026-09-14 16:14:35 +06:00
parent e192824160
commit 247aab43ed
+28
View File
@@ -0,0 +1,28 @@
# Modbus RTU Frame Delimiting: pymodbus vs libmodbus (source analysis)
Версия/источники зафиксированы на момент анализа. Локальные копии скачанных файлов: `/Users/admin/modbus_src/`.
## Границы (URL)
- pymodbus dev (новый фреймер): `https://raw.githubusercontent.com/pymodbus-dev/pymodbus/dev/pymodbus/framer/rtu.py`
- pymodbus v3.4.1 (классический ModbusRtuFramer): `.../v3.4.1/pymodbus/framer/rtu_framer.py`
- pymodbus v3.0.2: `.../v3.0.2/pymodbus/framer/rtu_framer.py`
- pymodbus serial client (t35): `.../v3.4.1/pymodbus/client/serial.py`, `.../v3.6.9/pymodbus/client/serial.py`
- libmodbus: `https://raw.githubusercontent.com/stephane/libmodbus/master/src/modbus-rtu.c`, `.../src/modbus.c`, `.../src/modbus-rtu-private.h`
## Константы
pymodbus v3.0.2/3.4.1 `ModbusRtuFramer`: `_min_frame_size = 4`, `_hsize = 0x01`.
Таблица baud (докстринг, 1.5c = 18 бит, 3.5c = 38 бит):
```
Baud 1.5c (18 bits) 3.5c (38 bits)
1200 13333.3 us 31666.7 us
4800 3333.3 us 7916.7 us
9600 1666.7 us 3958.3 us
19200 833.3 us 1979.2 us
38400 416.7 us 989.6 us
1 Byte = start + 8 bits + parity + stop = 11 bits
```
libmodbus: `MODBUS_RTU_MAX_ADU_LENGTH 256`, `_MODBUS_RTU_HEADER_LENGTH 1`, `_MODBUS_RTU_CHECKSUM_LENGTH 2`.