Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Zeus

Zeus

NuGet Downloads .NET 8.0 License: MIT

From Olympus, orchestrating every device.

A .NET framework for industrial host applications.
Communications, protocols, acquisition, and lifecycle management are handled by the framework, while WinForms, WPF, or console apps can provide the UI.

Leave the complexity to Zeus, and keep the user experience simple.

English | 简体中文


✨ Features

  • 🔌 Channels — Serial, TCP, UDP client/server, and virtual channels through one consistent API
  • 📡 Protocols — Custom frames, Modbus RTU/TCP/ASCII, Mitsubishi MC 1E/3E/4E Binary/ASCII, Siemens S7 TCP, Omron FINS UDP/TCP, Omron Host Link ASCII, Panasonic MEWTOCOL-COM, Allen-Bradley EtherNet/IP CIP, DL/T 645-2007, IEC 60870-5-104, MQTT 3.1.1, OPC UA, and SNMP v2c, with virtual slave/PLC/meter/Broker/Server/Agent support
  • 📊 Acquisition — Define a point table once, poll on intervals, keep current snapshots, calculate alarm limits, and write writable points back by name
  • 🧭 Tracing — Channel-level TX/RX packet events, rolling in-memory records, builder.Logging, and AddCommunicationLogging structured logs
  • 🖥️ Desktop UI — WinForms binds controls directly; WPF uses MVVM binding sources with Dispatcher marshaling
  • 🧾 JSON configuration — Change ports and unit ids in the field without recompiling; protocol settings live under options
  • 🧪 Hardware optional at first — Virtual channels use the same programming model as real devices

🚀 Quick Start

await using var app = ZeusHost.Create(builder =>
{
    builder.AddVirtualChannel("meter");
    // With hardware: builder.AddSerialPort("meter", "COM3", 115200);
});

await app.StartAsync();
var meter = app.Channels.Get("meter");
meter.DataReceived += (_, e) => { /* hand data to the UI */ };
await meter.WriteAsync("PING"u8.ToArray());

Desktop apps keep the same channel declaration, but the UI layer follows each framework's native pattern:

// WinForms: bind controls directly.
var winFormsAttachment = this.AttachZeus(builder => builder.AddVirtualChannel("meter"));
var meter = winFormsAttachment.Host.Channels.Get("meter");
meter.BindText(echoLabel);
winFormsAttachment.Host.Points.BindText("temperature", temperatureLabel);

// WPF: bind XAML to a ViewModel.
var wpfAttachment = this.AttachZeus(builder => builder.AddVirtualChannel("meter"));
DataContext = new MainViewModel(wpfAttachment.Host, WpfUiDispatcher.Current());

📦 Assemblies

PackagePurpose
Zeus.AbstractionsContracts for channels, devices, points, and hosting
Zeus.RuntimeRuntime core
Zeus.HostingHost and acquisition loop
Zeus.CommunicationsSerial / TCP / UDP / virtual channels
Zeus.Protocols.FramingCustom frames
Zeus.Protocols.ModbusModbus RTU / TCP / ASCII
Zeus.Protocols.McMitsubishi MC
Zeus.Protocols.S7Siemens S7
Zeus.Protocols.FinsOmron FINS
Zeus.Protocols.HostLinkOmron Host Link
Zeus.Protocols.MewtocolPanasonic MEWTOCOL
Zeus.Protocols.EtherNetIpAllen-Bradley EtherNet/IP
Zeus.Protocols.Dlt645DL/T 645-2007
Zeus.Protocols.Iec104IEC 60870-5-104
Zeus.Protocols.MqttMQTT 3.1.1
Zeus.Protocols.OpcUaOPC UA
Zeus.Protocols.SnmpSNMP v2c
Zeus.ConfigurationJSON project configuration
Zeus.Presentation.AbstractionsUI-independent binding
Zeus.Presentation.WinFormsWinForms control binding
Zeus.Presentation.WpfWPF MVVM binding sources and Dispatcher marshaling

Join QQ group 771421105 to talk with other users. The QR code is available on the documentation Community page.

Support Zeus

If Zeus helps your project, you can sponsor it through the documentation Support Zeus page or Afdian. Enterprise support is also available by direct discussion. Regular sponsorship supports open-source maintenance; protocol adapters, on-site commissioning, and project integration should be discussed separately.

📄 License

MIT

关于 About

No description, website, or topics provided.

语言 Languages

C#100.0%
PowerShell0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
71
Total Commits
峰值: 46次/周
Less
More

核心贡献者 Contributors