Skip to main content

2 posts tagged with "rs-485"

View All Tags

Modbus RTU Serial Link Tuning: Baud Rate, Parity, and Timeout Optimization for Reliable PLC Communication [2026]

· 11 min read

Modbus RTU Serial Communication

Modbus TCP gets all the attention in modern IIoT deployments, but Modbus RTU over RS-485 remains the workhorse of industrial communication. Millions of devices — temperature controllers, VFDs, power meters, PLCs, and process instruments — speak Modbus RTU natively. When you're building an edge gateway that bridges these devices to the cloud, getting the serial link parameters right is the difference between rock-solid telemetry and a frustrating stream of timeouts and CRC errors.

This guide covers the six critical parameters that govern Modbus RTU serial communication, the real-world trade-offs behind each one, and the tuning strategies that separate production-grade deployments from lab prototypes.

The Six Parameters That Control Everything

Every Modbus RTU serial connection is defined by six parameters that must match between the master (your gateway) and every slave device on the bus:

1. Baud Rate

The baud rate determines how many bits per second travel across the RS-485 bus. Common values:

Baud RateBits/secTypical Use Case
96009,600Legacy devices, long cable runs (>500m)
1920019,200Standard industrial default
3840038,400Mid-range, common in newer PLCs
5760057,600Higher-speed applications
115200115,200Short runs, high-frequency polling

The real-world constraint: Every device on the RS-485 bus must use the same baud rate. If you have a mix of legacy power meters at 9600 baud and newer VFDs at 38400, you need separate RS-485 segments — each with its own serial port on the gateway.

Practical recommendation: Start at 19200 baud. It's universally supported, tolerant of cable lengths up to 1000m, and fast enough for most 1-second polling cycles. Only go higher if your polling budget demands it and your cable runs are short.

2. Parity Bit

Parity provides basic error detection at the frame level:

  • Even parity (E): Most common in industrial settings. The parity bit is set so the total number of 1-bits (data + parity) is even.
  • Odd parity (O): Less common, but some older devices default to it.
  • No parity (N): Removes the parity bit entirely. When using no parity, you typically add a second stop bit to maintain frame timing.

The Modbus RTU specification recommends even parity with one stop bit as the default (8E1). However, many devices ship configured for 8N1 (no parity, one stop bit) or 8N2 (no parity, two stop bits).

Why it matters: A parity mismatch doesn't generate an error message — the slave device simply ignores the malformed frame. You'll see ETIMEDOUT errors on the master side, and the failure mode looks identical to a wiring problem or wrong slave address. This is the single most common misconfiguration in Modbus RTU deployments.

3. Data Bits

Almost universally 8 bits in modern Modbus RTU. Some ancient devices use 7-bit ASCII mode, but if you encounter one in 2026, it's time for a hardware upgrade. Don't waste time debugging 7-bit configurations — the Modbus RTU specification mandates 8 data bits.

4. Stop Bits

Stop bits mark the end of each byte frame:

  • 1 stop bit: Standard when using parity (8E1 or 8O1)
  • 2 stop bits: Standard when NOT using parity (8N2)

The total frame length should be 11 bits: 1 start + 8 data + 1 parity + 1 stop, OR 1 start + 8 data + 0 parity + 2 stop. This 11-bit frame length matters because the Modbus RTU inter-frame gap (the "silent interval" between messages) is defined as 3.5 character times — and a "character time" is 11 bits at the configured baud rate.

5. Byte Timeout

This is where things get interesting — and where most tuning guides fall short.

The byte timeout (also called "inter-character timeout" or "character timeout") defines how long the master waits between individual bytes within a single response frame. If the gap between any two consecutive bytes exceeds this timeout, the master treats it as a frame boundary.

The Modbus RTU specification says: The inter-character gap must not exceed 1.5 character times. At 9600 baud with 11-bit frames, one character time is 11/9600 = 1.146ms, so the maximum inter-character gap is 1.5 × 1.146ms ≈ 1.72ms.

What actually happens in practice:

At 9600 baud:  1 char = 1.146ms → byte timeout ≈ 2ms (safe margin)
At 19200 baud: 1 char = 0.573ms → byte timeout ≈ 1ms
At 38400 baud: 1 char = 0.286ms → byte timeout ≈ 500μs
At 115200 baud: 1 char = 0.095ms → byte timeout ≈ 200μs

The catch: At baud rates above 19200, the byte timeout drops below 1ms. Most operating systems can't guarantee sub-millisecond timer resolution, especially on embedded Linux or OpenWrt. This is why many Modbus RTU implementations clamp the byte timeout to a minimum of 500μs regardless of baud rate.

Practical recommendation: Set byte timeout to max(500μs, 2 × character_time). On embedded gateways running Linux, use 1000μs (1ms) as a safe floor.

6. Response Timeout

The response timeout defines how long the master waits after sending a request before declaring the slave unresponsive. This is the most impactful tuning parameter for overall system performance.

Factors that affect response time:

  1. Request transmission time: At 19200 baud, an 8-byte request takes ~4.6ms
  2. Slave processing time: Varies from 1ms (simple register read) to 50ms+ (complex calculations or EEPROM access)
  3. Response transmission time: At 19200 baud, a 40-register response (~85 bytes) takes ~48.7ms
  4. RS-485 transceiver turnaround: 10-50μs

The math for worst case:

Total = request_tx + slave_processing + turnaround + response_tx
= 4.6ms + 50ms + 0.05ms + 48.7ms
≈ 103ms

Practical recommendation: Set response timeout to 200-500ms for most applications. Some slow devices (energy meters doing power quality calculations) may need 1000ms. If you're polling temperature sensors that update once per second, there's no penalty to a generous 500ms timeout.

The retry question: When a timeout occurs, should you retry immediately? In production edge gateways, the answer is nuanced:

  • Retry 2-3 times before marking the device as offline
  • Insert a 50ms pause between retries to let the bus settle
  • Flush the serial buffer between retries to clear any partial frames
  • Track consecutive timeouts — if a device fails 3 reads in a row, something has changed (wiring, device failure, address conflict)

RS-485 Bus Topology: The Physical Foundation

No amount of parameter tuning can compensate for bad RS-485 wiring. The critical rules:

Daisy-chain only. RS-485 is a multi-drop bus, NOT a star topology. Every device must be wired in series — A to A, B to B — from the first device to the last.

Gateway ---[A/B]--- Device1 ---[A/B]--- Device2 ---[A/B]--- Device3
|
120Ω terminator

Termination resistors: Place a 120Ω resistor across A and B at both ends of the bus — at the gateway and at the last device. Without termination, reflections on long cable runs cause bit errors that look like random CRC failures.

Cable length limits:

Baud RateMax Cable Length
96001200m (3900 ft)
192001000m (3200 ft)
38400700m (2300 ft)
115200300m (1000 ft)

Maximum devices per segment: The RS-485 spec allows 32 unit loads per segment. Modern 1/4 unit-load transceivers can push this to 128, but in practice, keep it under 32 devices to maintain signal integrity.

Slave Address Configuration

Every device on a Modbus RTU bus needs a unique slave address (1-247). Address 0 is broadcast-only (no response expected), and addresses 248-255 are reserved.

The slave address is configured at the device level — typically through DIP switches, front-panel menus, or configuration software. The gateway needs to match.

Common mistake: Address 1 is the factory default for almost every Modbus device. If you connect two new devices without changing addresses, neither will respond reliably — they'll both try to drive the bus simultaneously, corrupting each other's responses.

Contiguous Register Grouping: The Bandwidth Multiplier

The most impactful optimization for Modbus RTU polling performance isn't a link parameter — it's how you structure your read requests.

Modbus function codes 03 (Read Holding Registers) and 04 (Read Input Registers) can read up to 125 contiguous registers in a single request. Instead of issuing separate requests for each tag, a well-designed gateway groups tags by:

  1. Function code — holding registers and input registers require different commands
  2. Address contiguity — registers must be adjacent (no gaps)
  3. Polling interval — tags polled at the same rate should be read together
  4. Maximum PDU size — cap at 50-100 registers per request to avoid overwhelming slow devices

Example: If you need registers 40001, 40002, 40003, 40010, 40011:

  • Naive approach: 5 separate read requests (5 × 12ms round-trip = 60ms)
  • Grouped approach: Read 40001-40003 in one request, 40010-40011 in another (2 × 12ms = 24ms)

The gap between 40003 and 40010 breaks contiguity, so two requests are optimal. But reading 40001-40011 as one block (11 registers) might be acceptable — the extra 7 "wasted" registers add only ~7ms of transmission time, which is less than the overhead of an additional request-response cycle.

Production-grade gateways build contiguous read groups at startup and maintain them throughout the polling cycle, only splitting groups when address gaps exceed a configurable threshold.

Error Handling: Beyond the CRC

Modbus RTU includes a 16-bit CRC at the end of every frame. If the CRC doesn't match, the frame is discarded. But there are several failure modes beyond CRC errors:

ETIMEDOUT — No response from slave:

  • Wrong slave address
  • Baud rate or parity mismatch
  • Wiring fault (A/B swapped, broken connection)
  • Device powered off or in bootloader mode
  • Bus contention (two devices with same address)

ECONNRESET — Connection reset:

  • On RS-485, this usually means the serial port driver detected a framing error
  • Often caused by electrical noise or ground loops
  • Add ferrite cores to cables near VFDs and motor drives

EBADF — Bad file descriptor:

  • The serial port was disconnected (USB-to-RS485 adapter unplugged)
  • Requires closing and reopening the serial connection

EPIPE — Broken pipe:

  • Rare on physical serial ports, more common on virtual serial ports or serial-over-TCP bridges
  • Indicates the underlying transport has failed

For each of these errors, a robust gateway should:

  1. Close the Modbus connection and flush all buffers
  2. Wait a brief cooldown (100-500ms) before attempting reconnection
  3. Update link state to notify the cloud that the device is offline
  4. Log the error type for remote diagnostics

Tuning for Specific Device Types

Different industrial devices have different Modbus RTU characteristics:

Temperature Controllers (TCUs)

  • Typically use function code 03 (holding registers)
  • Response times: 5-15ms
  • Recommended timeout: 200ms
  • Polling interval: 5-60 seconds (temperatures change slowly)

Variable Frequency Drives (VFDs)

  • Often have non-contiguous register maps
  • Response times: 10-30ms
  • Recommended timeout: 300ms
  • Polling interval: 1-5 seconds for speed/current, 60s for configuration

Power/Energy Meters

  • Large register blocks (power quality data)
  • Response times: 20-100ms (some meters buffer internally)
  • Recommended timeout: 500-1000ms
  • Polling interval: 1-15 seconds depending on resolution needed

Central Chillers (Multi-Circuit)

  • Dozens of input registers per compressor circuit
  • Deep register maps spanning 700+ addresses
  • Naturally contiguous register layouts within each circuit
  • Alarm bit registers should be polled at 1-second intervals with change detection
  • Process values (temperatures, pressures) can use 60-second intervals

Putting It All Together

A production Modbus RTU configuration for a typical industrial gateway looks like this:

# Example configuration (generic format)
serial_port: /dev/ttyUSB0
baud_rate: 19200
parity: even # 'E' — matches Modbus spec default
data_bits: 8
stop_bits: 1
slave_address: 1
byte_timeout_ms: 1
response_timeout_ms: 300

# Polling strategy
max_registers_per_read: 50
retry_count: 3
retry_delay_ms: 50
flush_between_retries: true

How machineCDN Handles Modbus RTU

machineCDN's edge gateway handles both Modbus TCP and Modbus RTU through a unified data acquisition layer. The gateway auto-configures serial link parameters from the device profile, groups contiguous registers for optimal bus utilization, implements intelligent retry logic with bus-level error recovery, and bridges Modbus RTU data to cloud-bound MQTT with store-and-forward buffering. Whether your devices speak Modbus RTU at 9600 baud or EtherNet/IP over Gigabit Ethernet, the data arrives in the same normalized format — ready for analytics, alerting, and operational dashboards.


Need to connect legacy Modbus RTU devices to a modern IIoT platform? machineCDN bridges serial protocols to the cloud without replacing your existing equipment. Talk to us about your multi-protocol deployment.

Modbus RTU vs Modbus TCP: A Practical Comparison for Plant Engineers [2026]

· 12 min read

Modbus RTU vs TCP comparison

If you've spent time on the factory floor, you've touched Modbus. It's the lingua franca of industrial automation — older than most engineers who use it, yet still embedded in nearly every PLC, VFD, sensor, and temperature controller shipping today.

But "Modbus" isn't one protocol. It's two very different beasts that happen to share a register model. Understanding when to use Modbus RTU over RS-485 serial versus Modbus TCP over Ethernet isn't academic — it directly impacts your polling throughput, your wiring costs, your alarm response times, and whether your edge gateway can actually keep up with your machines.

This guide breaks down both protocols at the wire level, compares real-world performance, and gives you a decision framework for your next deployment.

The Frame: What Actually Goes On The Wire

Modbus RTU Frame Structure

Modbus RTU (Remote Terminal Unit) sends binary data over a serial connection — typically RS-485, sometimes RS-232 for point-to-point. The frame is compact:

[Slave Address: 1 byte] [Function Code: 1 byte] [Data: N bytes] [CRC-16: 2 bytes]

A typical "read holding registers" request looks like this on the wire:

01 03 00 00 00 0A C5 CD
│ │ │ │ └── CRC-16 (little-endian)
│ │ │ └──────── Quantity: 10 registers
│ │ └────────────── Starting address: 0x0000
│ └───────────────── Function code: 0x03 (Read Holding Registers)
└──────────────────── Slave address: 1

That's 8 bytes for the request. The response carries 20 bytes of register data plus 5 bytes of overhead — 25 bytes total. Clean. Efficient. Zero wasted bandwidth.

The silent interval problem: RTU uses timing to delimit frames. A gap of 3.5 character times (approximately 3.6ms at 9600 baud) signals the end of one frame. This means:

  • You cannot have pauses inside a frame
  • Multitasking operating systems (Linux, Windows) can introduce jitter that corrupts framing
  • At 9600 baud, one character takes ~1.04ms, so the inter-frame gap is ~3.6ms
  • At 19200 baud, the gap shrinks to ~1.8ms — tighter timing requirements

Modbus TCP Frame Structure

Modbus TCP wraps the same function codes in a TCP/IP packet with an MBAP (Modbus Application Protocol) header:

[Transaction ID: 2 bytes] [Protocol ID: 2 bytes] [Length: 2 bytes] [Unit ID: 1 byte] [Function Code: 1 byte] [Data: N bytes]

The same read request becomes:

00 01 00 00 00 06 01 03 00 00 00 0A
│ │ │ │ │ │ └── Quantity: 10 registers
│ │ │ │ │ └──────── Starting address: 0x0000
│ │ │ │ └─────────── Function code: 0x03
│ │ │ └────────────── Unit ID: 1
│ │ └──────────────────── Remaining bytes: 6
│ └────────────────────────── Protocol ID: 0x0000 (Modbus)
└──────────────────────────────── Transaction ID: 0x0001

Key difference: No CRC. TCP handles error detection at the transport layer. The Transaction ID is huge — it lets you pipeline multiple requests without waiting for responses, something RTU physically cannot do.

Serial Configuration: Getting the Basics Right

When you configure a Modbus RTU connection, you're setting up a serial port. The classic configuration that works with most PLCs:

ParameterTypical ValueNotes
Baud Rate9600Some devices support 19200, 38400, even 115200
Data Bits8Almost universally 8
ParityNoneSome devices default to Even — check documentation
Stop Bits1Use 2 when parity is None (per Modbus spec, though 1 works for most devices)
Byte Timeout4msTime between individual bytes within a frame
Response Timeout100msMaximum wait for slave response

The byte timeout and response timeout are where most deployment issues hide. Set the byte timeout too low on a noisy RS-485 bus and you'll get fragmented frames. Set the response timeout too high and your polling cycle slows to a crawl when a device goes offline.

Real-world rule: On a clean RS-485 bus with less than 100 meters of cable, 4ms byte timeout and 100ms response timeout works reliably. Add 20ms to the response timeout for every 100 meters of additional cable, and double both values if you're running near VFDs or welding equipment.

Modbus TCP: Port 502 and What Lives Behind It

Modbus TCP devices listen on port 502 by default. When you configure a gateway to talk to a PLC over TCP, you're specifying:

  • IP address of the PLC or protocol converter
  • TCP port (502 is standard)
  • Unit ID (equivalent to the slave address — matters when a single IP serves multiple logical devices)

The connection lifecycle matters more than most engineers realize:

  1. TCP handshake: ~1ms on a local network, but can spike to 50ms+ through managed switches with port security
  2. Keep-alive: Modbus TCP doesn't define keep-alive. Some PLCs will drop idle connections after 30-60 seconds
  3. Connection pooling: A well-designed gateway maintains persistent connections rather than reconnecting per poll cycle

The Unit ID trap: When you have a Modbus TCP-to-RTU bridge (common when retrofitting serial devices onto Ethernet), the Unit ID maps to the RTU slave address on the serial side. If you set Unit ID to 0 or 255, many bridges interpret this as "send to all devices" — which can cause chaos on a shared RS-485 bus.

Performance: Real Numbers, Not Spec Sheet Fantasy

Here's what actually matters — how fast can you poll data?

Modbus RTU at 9600 Baud

Reading 10 holding registers from a single device:

  • Request frame: 8 bytes → 8.3ms
  • Slave processing time: 2-10ms (PLC-dependent)
  • Response frame: 25 bytes → 26ms
  • Inter-frame gap: 3.6ms × 2 = 7.2ms
  • Total per device: ~45-55ms

With 10 devices on an RS-485 bus, one complete poll cycle takes 450-550ms. That's roughly 2 polls per second — acceptable for temperature monitoring, too slow for motion control.

Bumping to 19200 baud cuts transmission time in half, getting you to ~30ms per device or about 3.3 polls per second across 10 devices.

Modbus TCP on 100Mbps Ethernet

The same 10-register read over TCP:

  • Request frame: 12 bytes (+ TCP overhead) → under 1ms
  • Slave processing time: 2-10ms
  • Response frame: 29 bytes → under 1ms
  • TCP ACK overhead: ~0.5ms
  • Total per device: ~5-15ms

But here's where TCP shines: pipelining. With the Transaction ID, you can fire 10 requests without waiting for responses. A well-optimized gateway can poll 10 devices in 15-25ms total — nearly 40-60 polls per second.

The Contiguous Register Advantage

Whether RTU or TCP, reading contiguous registers in a single request is dramatically faster than individual reads. Reading 50 contiguous registers costs roughly the same as reading 1 register — the overhead is in the framing, not the data payload.

If your PLC stores related data in registers 40001-40050, read them all in one Function Code 03 request. If the data is scattered across registers 40001, 40200, 40500, and 41000, you need four separate requests — four times the overhead.

Smart IIoT platforms like machineCDN optimize this automatically, grouping contiguous register reads into batch requests that minimize round-trips to the PLC.

Function Codes: The Ones That Actually Matter

The Modbus spec defines 20+ function codes, but in practice you'll use five:

CodeNameUse Case
0x01Read CoilsDigital outputs (on/off states)
0x02Read Discrete InputsDigital inputs (sensor contacts)
0x03Read Holding RegistersThe workhorse — analog values, setpoints, configuration
0x04Read Input RegistersRead-only process values (some PLCs put sensor data here)
0x06Write Single RegisterSending commands or setpoints to the PLC

The register type confusion: Modbus defines four data spaces — coils (1-bit R/W), discrete inputs (1-bit RO), holding registers (16-bit R/W), and input registers (16-bit RO). Different PLC manufacturers map data differently. A temperature reading might be in holding register 40001 on one brand and input register 30001 on another. Always check the PLC's register map.

Error Handling: Where Deployments Break

RTU Error Detection

RTU uses CRC-16 (polynomial 0xA001). If a single bit flips during transmission — common on electrically noisy factory floors — the CRC fails and the master discards the frame. The master then retries, burning another 45ms+.

Common RTU error scenarios:

  • No response (timeout): Device is offline, wrong slave address, or cable broken. The master waits for the full response timeout before moving on.
  • CRC mismatch: Electrical noise. Check cable shielding, termination resistors (120Ω at each end of the RS-485 bus), and distance from high-power equipment.
  • Exception response: The slave responds with function code + 0x80, indicating an error (illegal address, illegal data value, slave device failure). This is actually good — it means the device is alive and communicating.

TCP Error Handling

TCP's built-in retry and checksum mechanisms handle bit errors transparently. Your Modbus TCP errors are typically:

  • Connection refused: Device is down or port 502 is blocked
  • Connection timeout: Network issue, VLAN misconfiguration, or firewall
  • No response on established connection: PLC is overloaded or has crashed — the TCP connection stays open but the application layer is dead

The zombie connection problem: A PLC might crash while the TCP connection remains technically open (no FIN packet sent). Your gateway keeps sending requests into the void, timing out on each one. Implement application-level heartbeats — if you don't get a valid Modbus response within 3 consecutive poll cycles, tear down the connection and reconnect.

Wiring and Physical Layer Considerations

RS-485 for RTU

  • Max cable length: 1,200 meters (4,000 feet) at 9600 baud
  • Max devices per bus: 32 (standard drivers) or 256 (with high-impedance receivers)
  • Topology: Multi-drop bus (daisy-chain, NOT star)
  • Termination: 120Ω resistors at both ends of the bus
  • Cable: Shielded twisted pair (STP), 24 AWG minimum

The star topology trap: RS-485 is designed for daisy-chain (bus) topology. Running cables from a central hub to each device in a star pattern creates reflections that corrupt signals. If your plant layout forces star wiring, use an RS-485 hub/repeater at the center.

Ethernet for TCP

  • Max cable length: 100 meters per segment (Cat5e/Cat6)
  • Devices: Limited only by switch capacity and IP addressing
  • Topology: Star (standard Ethernet)
  • Switches: Use industrial-rated managed switches. Consumer switches will die in a factory environment within months.

When to Use Each Protocol

Choose Modbus RTU when:

  • Connecting to legacy devices that only have serial ports
  • Cable runs are long (200m+) and Ethernet infrastructure doesn't exist
  • You need simplicity — two wires, no switches, no IP configuration
  • Budget is tight and the device count is low (under 10 per bus)
  • Temperature controllers, VFDs, and simple sensors with RS-485 ports

Choose Modbus TCP when:

  • You need high poll rates (>5 Hz per device)
  • Connecting 10+ devices at one location
  • Ethernet infrastructure already exists
  • You want to pipeline requests for maximum throughput
  • Remote access or cloud connectivity is needed (TCP routes through firewalls more easily)
  • The PLC supports it (most modern PLCs do)

The hybrid reality: Most IIoT deployments end up with both. A Modbus TCP-capable PLC talks to the edge gateway over Ethernet while older serial devices connect through an RS-485 port on the same gateway. Platforms like machineCDN handle this natively — the edge gateway manages both protocol stacks and normalizes the data into a unified model before it leaves the plant floor.

Configuration Pitfalls That Will Waste Your Time

  1. Baud rate mismatch: Every device on an RTU bus must use the same baud rate. One device at 19200 on a 9600 bus will generate garbage that confuses everything.

  2. Duplicate slave addresses: Two devices with the same address on the same RS-485 bus will both try to respond simultaneously, corrupting each other's frames.

  3. Polling too fast: If your poll interval is shorter than the total round-trip time for all devices, requests will pile up and timeouts cascade. Calculate your minimum cycle time before setting the poll interval.

  4. Byte ordering (endianness): A 32-bit float spanning two 16-bit Modbus registers can be arranged as Big-Endian (AB CD), Little-Endian (CD AB), Big-Endian byte-swapped (BA DC), or Little-Endian byte-swapped (DC BA). The spec doesn't mandate an order. Each manufacturer chooses their own. Test with known values before assuming.

  5. Register addressing: Some documentation uses 0-based addressing (register 0 = first register), others use 1-based (register 1 = first register), and some use Modbus convention addressing (40001 = first holding register). Off-by-one errors here will give you data from the wrong register — and the values might look plausible enough to be dangerous.

Scaling Factors and Unit Conversion

PLCs store numbers as integers — typically 16-bit signed or unsigned values. A temperature of 72.5°F might be stored as:

  • 7250 with an implicit scale factor of ÷100
  • 725 with a scale factor of ÷10
  • 73 rounded to the nearest integer

The register map documentation should specify the scale factor, but many don't. When you see register values like 7250, 1472, or 2840, you need to figure out the engineering units.

Temperature conversions are common in multi-vendor environments:

  • Fahrenheit to Celsius: (F - 32) × 5/9
  • Weight (lbs to kg): lbs ÷ 2.205
  • Pressure (PSI to kPa): PSI ÷ 0.145
  • Length (feet to meters): ft ÷ 3.281

A robust IIoT platform handles these conversions at the edge, storing normalized SI values in the cloud regardless of what the PLC natively reports.

Conclusion: The Protocol Doesn't Matter as Much as the Architecture

Modbus RTU and Modbus TCP are both viable for modern IIoT deployments. The protocol choice is a physical-layer decision — what ports does the equipment have, how far away is it, and how fast do you need data?

The real challenge is what happens after the data leaves the register: normalizing values from heterogeneous equipment, handling connectivity loss gracefully, batching telemetry for efficient cloud delivery, and turning raw register data into actionable insights.

Whether your machines speak RTU over serial or TCP over Ethernet, the goal is the same — get reliable, normalized data off the plant floor and into the hands of engineers who can act on it.


machineCDN connects to both Modbus RTU and Modbus TCP devices through its edge gateway, handling protocol translation, data normalization, and store-and-forward buffering automatically. Learn how it works →