Skip to content

TurboModbus vs NModbus

TurboModbus is not a drop-in replacement for NModbus. It focuses on a narrower set of Modbus operations but adds a reactive, stream-based architecture that NModbus does not offer.

Feature Comparison

Function Codes

Function CodeTurboModbusNModbus
FC01 Read Coils-yes
FC02 Read Discrete Inputs-yes
FC03 Read Holding Registersyesyes
FC04 Read Input Registersyesyes
FC05 Write Single Coil-yes
FC06 Write Single Registeryesyes
FC15 Write Multiple Coils-yes
FC16 Write Multiple Registersyesyes
FC23 Read/Write Multiple Registers-yes
FC08 Diagnostics-partial
FC43 Device Identification-partial

Transport

TransportTurboModbusNModbus
TCPyesyes
UDP-yes
RTU (serial)-yes
ASCII (serial)-yes

Roles

RoleTurboModbusNModbus
Client / Masteryesyes
Server / Slave-yes

Data Types

FeatureTurboModbusNModbus
Raw ushort registersyesyes
Float / Double / UInt32 helpers-yes

Architecture

FeatureTurboModbusNModbus
Reactive streaming (Akka.Streams)yes-
Backpressure-aware pipelineyes-
Built-in polling with change detectionyes-
Actor-based concurrencyyes-
Custom function code extensibility-yes

When to Use Which

Choose TurboModbus when you need a high-throughput TCP client with reactive streaming, automatic polling, and change detection -- for example, continuously reading sensor data from industrial devices with backpressure handling.

Choose NModbus when you need broad protocol coverage (coils, serial transports, server role) or are working with devices that require function codes beyond register read/write.

Released under the Apache 2.0 License.