Zeus
Zeus is a .NET framework for industrial host applications. It handles communication channels, protocol sessions, periodic acquisition, host lifecycle, point write-back, and desktop UI thread marshaling so your application code can focus on device behavior and presentation.
Keep the complex infrastructure in Zeus and the simple application logic in your code.
The Core Idea
Traditional host applications often open serial ports, parse bytes, update controls, and release ports inside one window class. That works for a demo, but it becomes fragile once reconnects, protocols, point maps, and UI bindings are added.
Zeus separates those responsibilities:
Your UI / application code
↓
Zeus Host: start, stop, dispose resources
↓
Channel: serial / TCP / UDP / virtual channel
↓
Protocol: custom framing / Modbus / Mitsubishi MC / Siemens S7 / Omron FINS / Omron Host Link / EtherNet/IP
↓
Device / Point: industrial device and business data points
Run It in Three Minutes
Start without hardware. A virtual channel echoes whatever you write to it, which is enough to verify the application structure.
using System.Text;
using Zeus;
await using var app = ZeusHost.Create(builder =>
{
builder.AddVirtualChannel("meter");
});
var meter = app.Channels.Get("meter");
meter.DataReceived += (_, e) =>
{
Console.WriteLine(Encoding.ASCII.GetString(e.Data.Span));
};
await app.StartAsync();
await meter.WriteAsync(Encoding.ASCII.GetBytes("PING"));
await app.StopAsync();
You should see PING. That means the host started, the channel opened, and write/receive events are working.
Replace the Channel Later
After the virtual channel works, replace this line:
builder.AddVirtualChannel("meter");
with a real serial port:
builder.AddSerialPort("meter", "COM3", 9600);
The rest of the code can stay the same. That is the main value of Zeus: application logic does not need to care whether the underlying transport is virtual, serial, TCP, or UDP.
Where to Go Next
| If you are | Start here |
|---|---|
| New to Zeus | Where to Start |
| Trying the smallest runnable app | Console Sample |
| Building WinForms | First WinForms App |
| Building WPF | First WPF App |
| Connecting a serial device | Serial Port |
| Reading a Modbus meter | Modbus |
| Reading Mitsubishi PLCs | Mitsubishi MC |
| Reading Siemens PLCs | Siemens S7 |
| Reading Omron PLCs | Omron FINS / Omron Host Link |
| Reading Allen-Bradley PLCs | EtherNet/IP |
What Zeus Provides
- Channel lifecycle management: start, stop, dispose, and reconnect.
- A unified API for serial, TCP, UDP, and virtual channels.
- TX/RX packet tracing for field diagnostics.
- Protocol modules for custom frames, Modbus, Mitsubishi MC, Siemens S7, Omron FINS, Omron Host Link, and EtherNet/IP.
- Point acquisition, alarm state, successful-sample history, and write-back by point name.
- WinForms and WPF adapters that safely marshal updates to the UI thread.
- Hardware-free development with virtual channels and virtual responders.
What Zeus Does Not Do
- It does not provide SCADA screens, chart controls, permissions, recipe management, or reports.
- It does not guess a device protocol for you; you still need the device manual.
- It does not force a UI framework; console, WinForms, and WPF can use the same host model.
Join the community if you want to discuss usage with other users.
Next: Where to Start.