Expand description
Frame buffer sizing constants and helpers for Modbus RTU and TCP frames.
Use the named constants or the const fn helpers when you need to know the
exact byte size of a Modbus frame for a given register count — for example,
when allocating application-level buffers or computing memory budgets.
The Bridge itself uses full-spec internal buffers
(255 bytes for RTU, 261 bytes for TCP) and does not require any sizing from
this module.
§Sizing rules
For bridge mode (TCP → RTU), use the TCP_* constants — TCP frames
carry a 6-byte MBAP header that RTU frames do not, so TCP is always the
larger side.
For RTU-only use cases, the RTU_* constants are sufficient.
§Examples
Compute a frame size at compile time using the const fn helpers:
use modbus_bridge::capacity::{rtu_capacity, tcp_capacity, REG_BYTES_16, REG_BYTES_32};
// RTU frame size for 8 × 16-bit holding registers
const MY_RTU_BUF: usize = rtu_capacity(8, REG_BYTES_16);
assert_eq!(MY_RTU_BUF, 25); // 8×2 + 9 bytes overhead
// TCP frame size for the same register count
const MY_TCP_BUF: usize = tcp_capacity(8, REG_BYTES_16);
assert_eq!(MY_TCP_BUF, 31); // 8×2 + 15 bytes overhead
// RTU frame size for 4 × 32-bit register pairs
const MY_32BIT_BUF: usize = rtu_capacity(4, REG_BYTES_32);
assert_eq!(MY_32BIT_BUF, 25); // 4×4 + 9 bytes overheadOr use a named constant directly:
use modbus_bridge::capacity::TCP_8R16;
assert_eq!(TCP_8R16, 31);Constants§
- REG_
BYTES_ 16 - Bytes per standard 16-bit Modbus register.
- REG_
BYTES_ 32 - Bytes per 32-bit value stored as two consecutive Modbus registers.
- RTU_
1R16 - RTU buffer: 1 × 16-bit register (11 B).
- RTU_
1R32 - RTU buffer: 1 × 32-bit register pair (13 B).
- RTU_
4R16 - RTU buffer: 4 × 16-bit registers (17 B).
- RTU_
4R32 - RTU buffer: 4 × 32-bit register pairs (25 B).
- RTU_
8R16 - RTU buffer: 8 × 16-bit registers (25 B).
- RTU_
8R32 - RTU buffer: 8 × 32-bit register pairs (41 B).
- RTU_
10R16 - RTU buffer: 10 × 16-bit registers (29 B).
- RTU_
10R32 - RTU buffer: 10 × 32-bit register pairs (49 B).
- RTU_
16R16 - RTU buffer: 16 × 16-bit registers (41 B).
- RTU_
32R16 - RTU buffer: 32 × 16-bit registers (73 B).
- RTU_
32R32 - RTU buffer: 32 × 32-bit register pairs (137 B).
- RTU_
64R16 - RTU buffer: 64 × 16-bit registers (137 B).
- RTU_MAX
- RTU buffer: Modbus spec maximum — 123 × 16-bit registers (255 B).
- RTU_
MAX32 - RTU buffer: spec maximum for 32-bit pairs — 61 pairs (253 B).
- TCP_
1R16 - TCP buffer: 1 × 16-bit register (17 B).
- TCP_
4R16 - TCP buffer: 4 × 16-bit registers (23 B).
- TCP_
8R16 - TCP buffer: 8 × 16-bit registers (31 B).
- TCP_
10R16 - TCP buffer: 10 × 16-bit registers (35 B).
- TCP_
10R32 - TCP buffer: 10 × 32-bit register pairs (55 B).
- TCP_
16R16 - TCP buffer: 16 × 16-bit registers (47 B).
- TCP_
32R16 - TCP buffer: 32 × 16-bit registers (79 B).
- TCP_
64R16 - TCP buffer: 64 × 16-bit registers (143 B).
- TCP_MAX
- TCP buffer: Modbus spec maximum — 123 × 16-bit registers (261 B).
- TCP_
MAX32 - TCP buffer: spec maximum for 32-bit pairs — 61 pairs (259 B).
Functions§
- rtu_
capacity - Computes the RTU frame buffer size in bytes for
nregisters ofreg_bytesbytes each. - tcp_
capacity - Computes the TCP frame buffer size in bytes for
nregisters ofreg_bytesbytes each.