[2026-09-14] eagle: Modbus/RTU_Framing_Source_Analysis.md
This commit is contained in:
@@ -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`.
|
||||||
Reference in New Issue
Block a user