NewLife.ModbusRTU
2.1.2026.901
See the version list below for details.
dotnet add package NewLife.ModbusRTU --version 2.1.2026.901
NuGet\Install-Package NewLife.ModbusRTU -Version 2.1.2026.901
<PackageReference Include="NewLife.ModbusRTU" Version="2.1.2026.901" />
<PackageVersion Include="NewLife.ModbusRTU" Version="2.1.2026.901" />
<PackageReference Include="NewLife.ModbusRTU" />
paket add NewLife.ModbusRTU --version 2.1.2026.901
#r "nuget: NewLife.ModbusRTU, 2.1.2026.901"
#:package NewLife.ModbusRTU@2.1.2026.901
#addin nuget:?package=NewLife.ModbusRTU&version=2.1.2026.901
#tool nuget:?package=NewLife.ModbusRTU&version=2.1.2026.901
NewLife.Modbus - ModbusTcp/ModbusRTU
🌐 Languages: English | 简体中文 | Español | Português | Français | العربية | Русский | Deutsch | 日本語 | 한국어
Complete Modbus protocol implementation including ModbusTCP / ModbusRTU / ModbusASCII and multiple network variants, built on NewLife.IoT standard interfaces with IoTEdge gateway support.
Source: https://github.com/NewLifeX/NewLife.Modbus
Nuget: NewLife.Modbus / NewLife.ModbusRTU
Docs: 需求文档 / 架构设计 / 功能清单 / 竞品分析
Highlights
- Most Complete Protocol: Implements Modbus Application Protocol Specification V1.1b3 with all 19 function codes (12 public + 7 advanced), covering over 99% of common industrial operations; supports the Enron/Daniel floating-point extension for oil & gas registers
- Multiple Transport Variants: ModbusTCP, ModbusTCP/TLS (encrypted), ModbusUDP, ModbusRTU (serial), ModbusASCII (serial), ModbusRtuOverTCP, ModbusRtuOverUDP, ModbusRtuSimple — 8 variants in total
- Full Master & Slave: Complete implementations of both Master (client) and Slave (server), with Slave supporting concurrent multi-client connections
- Zero-Allocation Encoding: Hot paths use
SpanReader/SpanWriterfor zero-allocation encoding/decoding, reducing GC pressure - Batch Optimization:
BuildSegmentsautomatically merges consecutive addresses, reading multiple points in a single request to reduce polling overhead - IoT Driver Integration: Implements the
IDriverstandard interface for zero-code integration with IoTEdge platform, with 6 drivers to choose from - Advanced Features: Auto-reconnect, async/await API, multi-slave network model, custom function code registration, broadcast mode
- Lightweight Serial:
ModbusRtuSimpletargets resource-constrained edge devices with fewer dependencies and smaller memory footprint - APM Observability: Built-in
ITracertracing andILoglogging support, integrated with Stardust distributed platform - Multi-Framework:
net45 / net462 / netstandard2.0 / netstandard2.1 / net6.0 / net7.0 / net8.0 / net9.0 / net10.0
Supported Transport Variants
| Variant | NuGet Package | Description |
|---|---|---|
| ModbusTCP | NewLife.Modbus |
Standard Modbus TCP/IP with MBAP header + PDU, port 502 |
| ModbusUDP | NewLife.Modbus |
Modbus over UDP, connectionless transport |
| ModbusRtuOverTCP | NewLife.Modbus |
RTU frames (with CRC) over TCP transport |
| ModbusRtuOverUDP | NewLife.Modbus |
RTU frames (with CRC) over UDP transport |
| ModbusRTU | NewLife.ModbusRTU |
Serial binary compact format, CRC-16 validation |
| ModbusASCII | NewLife.ModbusRTU |
Serial ASCII hexadecimal format, LRC validation |
| ModbusRtuSimple | NewLife.ModbusRTU |
Lightweight simplified serial implementation, direct SerialPort access, suitable for resource-constrained edge scenarios |
Quick Start
Install NuGet Package
# TCP/UDP scenario (no serial port needed)
dotnet add package NewLife.Modbus
# Serial RTU/ASCII scenario
dotnet add package NewLife.ModbusRTU
Master - ModbusTCP Read/Write Registers
using NewLife.IoT.Protocols;
// Create ModbusTCP connection
var modbus = new ModbusTcp
{
Server = "192.168.1.100:502",
Timeout = 3000,
Log = XTrace.Log, // Optional: enable communication log
};
modbus.Open();
// Read holding registers (FC03), station 1, starting address 0, read 10 registers
var registers = modbus.ReadRegister(host: 1, address: 0, count: 10);
Console.WriteLine($"Register values: {registers?.Join(", ")}");
// Read coils (FC01)
var coils = modbus.ReadCoil(host: 1, address: 0, count: 8);
Console.WriteLine($"Coil states: {coils?.Join(", ")}");
// Write single register (FC06)
modbus.WriteRegister(host: 1, address: 0, value: 1234);
// Write multiple registers (FC16)
modbus.WriteRegisters(host: 1, address: 0, values: [100, 200, 300]);
// Write single coil (FC05)
modbus.WriteCoil(host: 1, address: 0, value: true);
Master - ModbusRTU Serial Communication
using NewLife.IoT.Protocols;
// Create ModbusRTU serial connection
var modbus = new ModbusRtu
{
PortName = "COM3", // Windows: "COM3", Linux: "/dev/ttyS0"
Baudrate = 9600,
Log = XTrace.Log,
};
modbus.Open();
// Read holding registers (FC03)
var registers = modbus.ReadRegister(host: 1, address: 0, count: 5);
// Write multiple registers (FC16)
modbus.WriteRegisters(host: 1, address: 0, values: [0xABCD, 0xEF01]);
Slave - TCP Simulation Server
using NewLife.IoT;
using NewLife.IoT.Models;
// Create and configure the slave
var slave = new ModbusSlave
{
Port = 502,
Log = XTrace.Log,
};
// Preset register data (holding registers, FC03/FC06 operations)
for (var i = 0; i < 100; i++)
slave.Registers.Add(new RegisterUnit { Address = (UInt16)i, Value = (UInt16)(i * 10) });
// Preset coil data (FC01/FC05 operations)
for (var i = 0; i < 16; i++)
slave.Coils.Add(new CoilUnit { Address = (UInt16)i, Value = i % 2 == 0 });
// Start the slave and begin listening
slave.Start();
Console.WriteLine("Modbus Slave started, port 502");
IoT Driver Layer Integration
using NewLife.IoT.Drivers;
// Create TCP driver (supports IoTEdge driver standard interface)
var driver = new ModbusTcpDriver();
var parameter = new ModbusTcpParameter
{
Server = "192.168.1.100:502",
Host = 1,
Timeout = 3000,
BatchStep = 1, // Points with address gap ≤1 are auto-merged into batch requests
BatchSize = 100, // Maximum 100 points per batch
};
// Open driver (single connection reused)
var node = driver.Open(device: null, parameter);
// Batch read (automatically merges consecutive addresses to reduce request count)
var points = new[] { /* ThingModel point definitions */ };
var result = driver.Read(node, points);
NewLife Development Team
Founded in 2002, the NewLife team (新生命团队) is an IoT industry solution provider dedicated to software/hardware consulting, system architecture planning, and development services.
The team leads over 80 open-source projects widely adopted across various industries, with over 4 million cumulative NuGet downloads.
Our big-data middleware NewLife.XCode, scheduling platform AntJob, distributed platform Stardust, caching/queue component NewLife.Redis, and IoT platform FIoT have been successfully deployed in power, education, internet, telecom, transportation, logistics, industrial control, healthcare, and cultural heritage sectors.
We continuously improve our services to become a trusted long-term partner for our clients, and strive through innovation to become a leading IoT service provider in China.
Founded in 2002, some open-source projects have over 20 years of history; the source repository retains all change records since 2010
Website: https://newlifex.com
Open Source: https://github.com/newlifex
QQ Group: 1600800/1600838
WeChat Official Account:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.5
- NewLife.Modbus (>= 2.1.2026.901)
-
.NETFramework 4.6.1
- NewLife.Modbus (>= 2.1.2026.901)
-
.NETStandard 2.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
.NETStandard 2.1
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
net10.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
net6.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
net7.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
net8.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
-
net9.0
- NewLife.Modbus (>= 2.1.2026.901)
- System.IO.Ports (>= 10.0.11)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on NewLife.ModbusRTU:
| Package | Downloads |
|---|---|
|
SmartA2
IoT驱动,符合IoT标准库的PC驱动,采集CPU、内存、网络等数据,提供语音播报和重启等服务。 |
|
|
SmartA4
IoT驱动,符合IoT标准库的PC驱动,采集CPU、内存、网络等数据,提供语音播报和重启等服务。 |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on NewLife.ModbusRTU:
| Repository | Stars |
|---|---|
|
NewLifeX/XCoder
新生命码神工具,代码生成、网络工具、API工具、串口工具、正则工具、图标工具、加解密工具、地图接口。
|
| Version | Downloads | Last Updated |
|---|---|---|
| 2.1.2026.902-beta1359 | 32 | 9/2/2026 |
| 2.1.2026.901 | 48 | 9/1/2026 |
| 2.1.2026.901-beta1641 | 37 | 9/1/2026 |
| 2.0.2026.722-beta1103 | 115 | 7/22/2026 |
| 2.0.2026.610 | 145 | 6/10/2026 |
| 2.0.2026.609-beta1551 | 119 | 6/9/2026 |
| 2.0.2026.501 | 136 | 5/1/2026 |
| 2.0.2026.501-beta1644 | 119 | 5/1/2026 |
| 2.0.2026.423-beta1215 | 116 | 4/23/2026 |
| 2.0.2026.303-beta1601 | 156 | 3/3/2026 |
| 2.0.2026.102-beta1656 | 189 | 1/2/2026 |
| 2.0.2025.818-beta1641 | 262 | 8/18/2025 |
| 2.0.2025.803-beta1524 | 246 | 8/3/2025 |
| 2.0.2025.803-beta1427 | 192 | 8/3/2025 |
| 2.0.2025.723-beta1756 | 625 | 7/23/2025 |
| 2.0.2025.701 | 998 | 7/1/2025 |
| 2.0.2025.701-beta1714 | 241 | 7/1/2025 |
| 2.0.2025.627-beta0843 | 195 | 6/27/2025 |
| 2.0.2025.626-beta0034 | 232 | 6/26/2025 |
| 2.0.2025.623-beta0832 | 232 | 6/23/2025 |
新增 Modbus TCP/TLS 加密传输支持;新增 Enron Modbus 浮点数扩展协议;新增 FC07/11/12/17/20/22/24 等主从功能码;支持自定义功能码注册;增强连接自动重连稳定性;新增与 NModbus 3.x 竞品交叉兼容测试;测试用例全面异步化