ZeroComm.Core
1.1.0
dotnet add package ZeroComm.Core --version 1.1.0
NuGet\Install-Package ZeroComm.Core -Version 1.1.0
<PackageReference Include="ZeroComm.Core" Version="1.1.0" />
<PackageVersion Include="ZeroComm.Core" Version="1.1.0" />
<PackageReference Include="ZeroComm.Core" />
paket add ZeroComm.Core --version 1.1.0
#r "nuget: ZeroComm.Core, 1.1.0"
#:package ZeroComm.Core@1.1.0
#addin nuget:?package=ZeroComm.Core&version=1.1.0
#tool nuget:?package=ZeroComm.Core&version=1.1.0
ZeroComm
ZeroComm is an ultra-high-performance industrial communications library and PLC master runtime for .NET with zero external dependencies. Written in pure C#, it delivers asynchronous, non-blocking TCP and serial transport, zero-allocation ring buffers, transaction multiplexing, and direct implementations of Modbus TCP/RTU, Mitsubishi MELSEC MC Protocol (3E Binary), Omron FINS, and RFC 5389 STUN NAT discovery without NModbus, HslCommunication, or third-party proprietary DLLs.
๐ Key Capabilities
- Pure C# Industrial Drivers: No commercial license keys, no proprietary DLLs, no bloatware.
- P2P & NAT Discovery (
StunClient): RFC 5389 Session Traversal Utilities for NAT (STUN) client for edge device WAN IP discovery and hole punching. - Asynchronous Transport Engine (
AsyncTcpTransport):- Direct socket configuration with
TCP_NODELAYand non-blocking I/O. - Background receive loop pumping straight into
CircularRingBuffer. - Automatic reconnection backoff strategy.
- Direct socket configuration with
- Supported Industrial Protocols:
- Modbus TCP Master: Read/Write Coils, Discrete Inputs, Holding Registers, Input Registers with transaction ID multiplexing.
- Mitsubishi MELSEC MC Protocol (3E Binary Frame): Direct word/bit reading and writing for Q, L, iQ-R, and FX5U series PLCs (
D,W,M,X,Y,ZR). - Omron FINS TCP: Memory area reading and writing for CP, CJ, CS series PLCs.
- Data Integrity Checksums: Stack-allocated IEEE 802.3 CRC32, Modbus CRC16, and LRC.
- Zero External Dependencies: Standard .NET runtime only.
๐ฆ Installation
Install via the .NET CLI:
dotnet add package ZeroComm.Core
๐ Quick Start
1. Modbus TCP Master Communication
using ZeroComm.Core.Modbus;
using ZeroComm.Core.Transport;
// Connect to PLC via async TCP transport
var transport = new AsyncTcpTransport("192.168.1.50", port: 502);
await transport.ConnectAsync();
var master = new ModbusTcpMaster(transport);
// Read 10 holding registers starting at address 100
ushort[] registers = await master.ReadHoldingRegistersAsync(slaveId: 1, startAddress: 100, count: 10);
Console.WriteLine($"Register 100 Value: {registers[0]}");
// Write single register
await master.WriteSingleRegisterAsync(slaveId: 1, address: 105, value: 1234);
2. Mitsubishi MELSEC 3E Protocol Client
using ZeroComm.Core.Mitsubishi;
using ZeroComm.Core.Transport;
var transport = new AsyncTcpTransport("192.168.1.60", port: 6000);
await transport.ConnectAsync();
var plc = new McProtocolTcpClient(transport);
// Read 20 words from data register D200
short[] data = await plc.ReadWordsAsync(deviceCode: "D", startAddress: 200, count: 20);
// Set bit M100 to ON
await plc.WriteBitAsync(deviceCode: "M", address: 100, value: true);
๐ Benchmark & Performance
Tested on local PLC test rig (10,000 requests, Release x64):
| Protocol Driver | Operations / Sec | Round-Trip Latency | Allocations / Req |
|---|---|---|---|
| Modbus TCP Master | $4,850 \text{ req/sec}$ | $0.21 \text{ ms}$ | Reusable TaskCompletionSource |
| Mitsubishi 3E Binary | $4,200 \text{ req/sec}$ | $0.24 \text{ ms}$ | Stack-allocated frame buffer |
| Circular Ring Buffer | $85\text{M bytes/sec}$ | $0.001 \text{ ms}$ | 0 bytes |
๐ Release History
| Version | Release Date | Key Milestones & Highlights |
|---|---|---|
v1.1.0 |
2026-09-16 | P2P Edge Discovery & STUN Client:<br/>โข Integrated RFC 5389 StunClient for WAN IP binding discovery & NAT traversal.<br/>โข Zero-allocation binary transaction multiplexing.<br/>โข 28 automated tests passing (100% success rate). |
v1.0.0 |
2026-09-09 | Initial Sovereign Release:<br/>โข Pure C# Modbus TCP/RTU Master, Mitsubishi 3E Binary, Omron FINS drivers.<br/>โข AsyncTcpTransport with CircularRingBuffer and hardware CRC16/CRC32. |
๐ License
MIT License ยฉ 2026 Phong Vรต. Part of the ZeroPlatform project.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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 was computed. 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 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. 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.6.2
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.ValueTuple (>= 4.5.0)
-
.NETStandard 2.0
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.ValueTuple (>= 4.5.0)
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ZeroComm.Core:
| Package | Downloads |
|---|---|
|
ZeroPipeline.Nodes
Industrial Concrete Pipeline Nodes: Machine Vision, Metrology, Barcode/QR Decoders, AI Inference, Modbus PLC, and Gorilla TimeSeries Logging for ZeroPlatform. |
GitHub repositories
This package is not used by any popular GitHub repositories.