工业物联网有个尴尬的现状——数据采集这一层,要么花几万块买组态软件,要么用 Kepware 这种按点位收费的商业中间件,要么自己从零写通信协议栈。
开源方案有没有?有,但大多停留在 demo 阶段,跑通一个 Modbus 就敢发出来。
今天这个不一样。
这是什么?
Snet.Iot.Daq——一款基于 .NET 10 WPF 架构的工业物联网插件化数据采集转发工具。
一句话说清楚:你有一堆 PLC、仪表、传感器需要采集数据,这个工具帮你把数据读出来,存下来,转发到 OPC UA / MQTT / Kafka / RabbitMQ,全程零代码,拖拽配置。

而且它内置了 OPC UA Server 和 MQTT Broker——不用再单独装一个 MQTT 服务,不用再配一个 OPC UA 网关,一个软件全搞定。
三层架构:清晰的边界
┌─────────────────────────────────┐│ Snet.Iot.Daq (WPF 桌面应用) │ ← UI 层:MVVM + Material Design├─────────────────────────────────┤│ Snet.Iot.Daq.Core (类库) │ ← 核心层:业务逻辑 / 数据模型 / 服务├─────────────────────────────────┤│ Shunnet.top 工业通信库 │ ← 底层:插件框架 / 通信协议 / 工具└─────────────────────────────────┘关键设计决策:Core 层不依赖 WPF。
这意味着什么?Core 层可以被 Avalonia、MAUI、甚至 Linux 控制台程序复用。作者已经在架构层面预留了跨平台适配器。现在只发布 Windows 版本,但底层不锁死。
这在工业软件里是少见的远见——大部分 WPF 工具连 UI 和业务逻辑都混在一起,改都改不动。

功能矩阵:不只是"采集"
我把功能分成3类来看:
1. 采集层:插件化,协议无限扩展

"自动组包"这个功能,懂的人会心动。
PLC 采集有个经典问题:你要读的地址是 D100、D102、D105,分散的。如果逐个读,三次请求三次响应,慢得要命。自动组包把它们合并成一次请求读 D100-D105,取完再拆开分配,通信效率直接翻倍。

2. 传输层:OPC UA + MQTT 内置
这是这个项目最大的卖点。
注意:不是 OPC UA Client,是 Server。
区别巨大。Client 是去连别人的 OPC UA 服务,Server 是自己就是一个 OPC UA 服务端——别的系统来连它。
这意味着什么?你的 MES、ERP、SCADA 想读 PLC 数据,直接通过 OPC UA 协议连到 Daq 就行。Daq 在中间做了一层数据汇聚和协议转换。
架构变成这样:
PLC/设备 ──Modbus/S7/自定义──→ Daq ──OPC UA──→ MES/ERP/SCADA └─MQTT──→ 云平台/数据中台 └─Kafka──→ 大数据流处理一个软件,解决"设备协议五花八门,上层系统想统一接口"这个工业物联网的核心痛点。
3. 数据层:SQLite + 实时图表
SQLite 在工业现场的优势:单文件、无服务、零维护、断电不丢数据。对于边缘采集网关来说,这是最优解。
适用场景
最典型的部署方式: 一台工业平板电脑装 Daq,接几台 PLC,通过 OPC UA 给车间 MES 供数据,通过 MQTT 给云端推数据。一台机器搞定一个车间的数据采集。

GitHub:/shunnet/Daq
声明:如以上内容有误或侵犯到你公司、机构、单位或个人权益,请联系我们说明理由,我们会配合,无条件删除处理。
End
往期推荐
关注「赛博吴同学」
每日分享物联网、AI干货 | 开源项目 | 实战教程 | 实用工具
夜雨聆风