Skip to main content

Module capacity

Module capacity 

Source
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 overhead

Or 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 n registers of reg_bytes bytes each.
tcp_capacity
Computes the TCP frame buffer size in bytes for n registers of reg_bytes bytes each.