跳到主要内容

Zeus

Zeus 是面向 .NET 的上位机开发框架。它帮你处理通信通道、协议收发、周期采集、宿主生命周期和 UI 线程切换;你只需要关心设备业务和界面怎么展示。

把复杂留给 Zeus,把简单留给用户。

先看懂一句话​

普通上位机程序经常会写成这样:窗口代码里打开串口、订阅事件、解析字节、刷新控件、关闭时释放端口。功能一多,串口、协议、界面线程和重连逻辑会混在一起。

Zeus 的做法是把这些拆开:

你的界面 / 业务代码
↓
Zeus Host:启动、停止、释放资源
↓
Channel:串口 / TCP / UDP / 虚拟通道
↓
Protocol:自定义帧 / Modbus / Mitsubishi MC / Siemens S7 / Omron FINS / Omron Host Link / Panasonic MEWTOCOL / EtherNet/IP / DL/T 645 / IEC104 / MQTT / SNMP
↓
Device / Point:设备与业务数据点

三分钟跑起来​

先不要接真实硬件,先跑虚拟通道。虚拟通道会把写入的数据原样回显,适合确认程序结构没问题。

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();

你应该看到控制台输出 PING。这说明宿主启动了,通道打开了,写入和接收事件都走通了。

换成真实硬件​

当虚拟通道跑通后,把这一行:

builder.AddVirtualChannel("meter");

换成真实串口:

builder.AddSerialPort("meter", "COM3", 9600);

后面的 Channels.Get、DataReceived、WriteAsync 不用改。这就是 Zeus 的核心价值:业务代码不关心底层到底是虚拟通道、串口、TCP 还是 UDP。

你应该怎么读手册​

如果你是推荐入口
第一次看 Zeus我该从哪开始
只想先运行一下控制台示例
正在做 WinForms第一个 WinForms 应用
正在做 WPF第一个 WPF 应用
要接真实串口串口
要读 Modbus 仪表Modbus
要读三菱 PLC三菱 MC
要读西门子 PLCSiemens S7
要读欧姆龙 PLCOmron FINS / Omron Host Link
要读松下 PLCPanasonic MEWTOCOL
要读 Allen-Bradley PLCEtherNet/IP
要读电能表DL/T 645
要接电力远动/能源网关IEC104
要接 MQTT BrokerMQTT
要接 OPC UA ServerOPC UA
要读交换机、UPS 或服务器监控量SNMP

Zeus 做什么​

  • 管理通道启动、停止和释放,避免端口泄漏。
  • 统一串口、TCP、UDP 和虚拟通道的 API。
  • 提供通道级 TX/RX 报文追踪,便于现场排查通信问题。
  • 提供自定义帧、Modbus、Mitsubishi MC、Siemens S7、Omron FINS、Omron Host Link、Panasonic MEWTOCOL、Allen-Bradley EtherNet/IP、DL/T 645、IEC 60870-5-104、MQTT 3.1.1、OPC UA 和 SNMP v2c 的协议能力。
  • 支持点表采集,把温度、压力这类业务点按间隔读出来,并保留当前快照与报警限状态;可写点可按名称写回设备。
  • 提供 WinForms / WPF 适配器,把通道事件安全切到 UI 线程。
  • 允许无硬件开发:先用虚拟通道和虚拟从站,硬件到位后替换配置。

Zeus 不做什么​

  • 不自带组态画面、图表控件、权限系统、配方管理和报表系统。
  • 不替你猜设备协议;你仍然需要知道设备手册里的地址、波特率、功能码和帧格式。
  • 不强迫你使用某种 UI;控制台、WinForms、WPF 都可以接同一套宿主。

加入 QQ 群 771421105 可以找到其它使用者。

下一步:我该从哪开始。