乐于分享
好东西不私藏

又一个开源 SCADA,插件化更香了.

又一个开源 SCADA,插件化更香了.

我的工控下载站,终于上线了。

做多品牌PLC数据采集的朋友一定都遇到过这样的问题。

修改一个配置,重启一下,采集数据就断了,之前的数据没有保存下来,还要向现场人员解释。

西门子有S7,AB有EtherNet/IP,三菱有MC协议。

想在一个平台里统一读写,就得给每个品牌单独开发通信模块。

再加上数据存储、报警、趋势图等功能也要自己搭建。

从零开始开发一套,时间与成本都比较高。

前几天在 GitHub 上看到一个叫作 Daq 的项目,正好可以解决这样的需求。

它用.NET 10+WPF进行开发,并且包含OPC UA Server和MQTT Broker。

要接入新协议的话,只需要安装插件就可以了,并不需要重新启动应用程序。

01 开源项目简介

Daq 是一款插件化的工业物联网数据采集工具,基于 Shunnet.top 工业通信库开发。

它采用模块化设计,通信、界面、插件等功能相互独立,方便后续扩展。

支持插件动态加载,新协议不需要修改主程序。

界面采用 MVVM + Material Design,数据支持本地存储,还集成了设备资源监控。

整体结构比较清楚,可以用来做工业数据采集平台的开发以及二次扩展。

02 几个设计点,踩在痛点上

插件可以热插拔,修改配置不需要重新启动

使用了.NET AssemblyLoadContext来实现插件管理,并且支持可回收上下文。

插件加载是流式的,不会锁定文件,卸载之后由 GC 自动回收。

过去修改协议配置要重新启动软件并等待几分钟,现在插件只需要几秒钟就可以完成更新。

设备不停机、采集任务不中断,防止由于重启导致的数据丢失。

并且可以使用PDB符号文件来帮助我们调试插件代码。

包含OPC UA Server和MQTT Broker,即插即用

在做边缘网关的时候,一般要单独部署 OPC UA 和 MQTT 服务。

使用WinCC、组态王等商业软件的话,不仅费用高昂,而且协议扩展也会受到限制。

Daq 把这两个功能直接集成到一起,下载之后就可以运行了。

OPC UA Server 支持认证、证书、地址空间管理、持久订阅。

MQTT Broker 支持客户端管理、认证、连接数限制,设备接入更易管理。

不过 OPC UA 证书配置需要注意安全问题,测试环境可以根据需求调整认证设置。

字节级协议解析,不用再手写代码

在调试自定义协议设备的时候,经常会遇到一串串十六进制数据。

以前要自己写解析程序,一字节一字节地去分析。

Daq 把字节、位、编码、数据格式都做成可视化的配置。

拖动配置规则就可以实现协议解析。

对于经常要调整设备的工程师来说,可以节省很多重复劳动。

NuGet 插件市场,协议按需安装

Daq 已经接入了 Shunnet 生态插件市场。

可以在线浏览、下载、安装插件,不需要自己编译。

插件覆盖了数据采集、消息队列两个方面。

Modbus、S7、OPC UA 等协议都可以通过插件来实现。

以后有特殊需求的话也可以自己开发插件。

自动组包优化,提高PLC采集效率

PLC 采集时,经常会遇到地址分散的问题。

如果一个地址一个地址读取,通信次数会增加,效率也会下降。

Daq可以自动合并分散的地址,并且可以批量读取。

减少通信次数,减轻设备负担。

对于高频采集场景,优化效果会更明显。

03 从下载到采集,五分钟上手

从 GitHub Releases 中下载预编译版,解压之后就可以运行了。

也可以克隆仓库自己编译:

git clone https://github.com/shunnet/Daq.git
cd Daq

你用 Visual Studio 2022 打开解决方案文件,选择 Debug 或 Release 构建。

构建完成之后,在输出目录中找到可执行文件,双击运行就可以了。

05 写在最后

开源数采工具 vs 商用 SCADA 软件,怎么选?

如果车间已经购买了WinCC、组态王,就不需要更换了,协议支持就可以了。

如果要做边缘网关、二次开发、自定义协议接入的话,开源方案更加灵活,插件化的架构可以自己去扩展。

各有各的使用场合。

有兴趣的朋友可以赶紧试一试。

我的工控下载站,终于上线了。

开源地址:https://github.com/shunnet/Daq