SNET / 工业连接生态

连接工业现场,让数据流动。

用统一的 .NET 接口连接 PLC、采集数据、转发消息,构建你的工业应用。

dotnet add package Snet.Modbus --version 26.301.1
  • 30511 个项目合计 Star
  • 44,993NuGet 累计下载
  • 36设备接入包
  • 11个公开项目
PLCPLC 控制器
OPC设备接入
DB数据库采集
MQTT消息通道
API数据服务
APP业务应用
Snet.统一接口 · 自由扩展
设备 → 统一接口 → 业务应用

这里是 Snet 生态导航。框架官网 ↗开发文档 ↗

  • Siemens
  • Modbus
  • Mitsubishi
  • Omron
  • Allen-Bradley
  • Beckhoff
  • Delta
  • Keyence
  • Panasonic
  • Yaskawa
  • Fanuc
  • Inovance
  • Yokogawa
  • Fuji
  • Xinje
  • OPC UA
  • OPC DA
  • Database
  • MQTT
  • Kafka
  • RabbitMQ
  • RocketMQ
  • NetMQ
  • Netty
  • TCP
  • UDP
  • WebSocket
  • HTTP
  • Redis
  • RPC

选择你的开始方式

快速开始

一种接口,
建立第一条连接。

连接、读取、检查结果。先看真实调用,再为你的设备选择对应驱动。

  1. 01
    准备环境示例需要 .NET 10 SDK;框架库支持 .NET 8 / 10。
  2. 02
    安装与配置使用已验证的统一包版本,按设备修改连接与地址。
  3. 03
    读取并验证先在本机回环环境运行,再连接自己的设备。

先选择设备协议,再核对地址规则与数据类型。

示例验证版本26.301.1
Program.cs

滑动切换,或使用方向键

dotnet add package Snet.Modbus --version 26.301.1

选择一个示例,复制后开始。

Modbus TCP

dotnet add package Snet.Modbus --version 26.301.1
using Snet.Modbus;
using Snet.Model.data;
using Snet.Model.@enum;
using Snet.Utility;

await using var device = await ModbusOperate.InstanceAsync(new ModbusData.Basics
{
    IpAddress = "127.0.0.1", Port = 1502, Station = 1,
    ProtocolType = ModbusData.ProtocolType.ModbusTcpNet,
    AddressStartWithZero = false
});
var connected = await device.OnAsync();
if (!connected.Status) { Console.WriteLine(connected.Message); return; }
var value = await device.ReadAsync(new Address(new AddressDetails
{
    AddressName = "1", AddressDataType = DataType.Short
}));
Console.WriteLine(value.Status ? value.ResultData.ToJson() : value.Message);
await device.OffAsync(true);

Siemens S7

dotnet add package Snet.Siemens --version 26.301.1
using Snet.Siemens;
using Snet.Model.data;
using Snet.Model.@enum;
using Snet.Utility;

await using var device = await SiemensOperate.InstanceAsync(new SiemensData.Basics
{
    IpAddress = "127.0.0.1", Port = 102,
    ProtocolType = SiemensData.ProtocolType.SiemensS7Net_S1200,
    Rack = 0, Slot = 1, PDULength = -1
});
var connected = await device.OnAsync();
if (!connected.Status) { Console.WriteLine(connected.Message); return; }
var value = await device.ReadAsync(new Address(new AddressDetails
{
    AddressName = "DB1.DBD0", AddressDataType = DataType.Float
}));
Console.WriteLine(value.Status ? value.ResultData.ToJson() : value.Message);
await device.OffAsync(true);

MQTT 转发

dotnet add package Snet.Modbus --version 26.301.1
dotnet add package Snet.Mqtt --version 26.301.1
using Snet.Modbus;
using Snet.Mqtt.client;
using Snet.Model.data;
using Snet.Model.@enum;
using Snet.Utility;
using System.Text;

await using var device = await ModbusOperate.InstanceAsync(new ModbusData.Basics
{
    IpAddress = "127.0.0.1", Port = 1502, Station = 1,
    ProtocolType = ModbusData.ProtocolType.ModbusTcpNet,
    AddressStartWithZero = false
});
await using var mqtt = await MqttClientOperate.InstanceAsync(new MqttClientData.Basics
{
    IpAddress = "127.0.0.1", Port = 1883,
    UserName = "", Password = ""
});
var connected = await device.OnAsync();
if (!connected.Status) { Console.WriteLine(connected.Message); return; }
var broker = await mqtt.OnAsync();
if (!broker.Status) { Console.WriteLine(broker.Message); return; }
var value = await device.ReadAsync(new Address(new AddressDetails
{
    AddressName = "1", AddressDataType = DataType.Short
}));
if (!value.Status) { Console.WriteLine(value.Message); return; }
var sent = await mqtt.ProduceAsync("snet/demo", value.ResultData.ToJson(), Encoding.UTF8);
Console.WriteLine(sent.Status ? "Published" : sent.Message);
await mqtt.OffAsync(true);
await device.OffAsync(true);
本机回环验证Modbus TCP · 1234查看验证范围

本地演示端口:Modbus 1502 / MQTT 1883;连接真实设备前请修改参数。

框架能力

把协议差异,
留在接口之下。

围绕采集、消息与通信组织代码。业务层专注数据,设备层按需扩展。

36设备接入包
130+协议变体
6消息与传输通道
46框架 NuGet 包
这些数字代表什么?

框架官网的分类口径:36 个接入包包含设备协议、数据库、模拟与自定义接入;130+ 为协议变体,6 为消息与传输通道,46 为框架包范围,不代表全部作者包或经过本页实测的设备数量。

查看框架目录

统一接口

IDaq、IMq 与 ICommunication 分别组织采集、消息与通信操作。连接、读写、订阅与返回结果具有一致的使用方式。

PLCOPCDB
IDaq
OnAsync()ReadAsync()SubscribeAsync()

插件化扩展

基于 AssemblyLoadContext 加载插件,为非标设备和自定义消息系统提供扩展路径;兼容宿主支持运行时加载与卸载。

IDaqIMqPlugin

采集与消息联动

设备数据通过地址模型进行解析与类型转换,可结合消息配置转发到 MQTT、Kafka 等系统,连接现场与上层应用。

DeviceSnetMQTT

地址与批量读取

统一地址描述、订阅和结果模型。支持的协议可通过自动组包合并读取请求,减少分散点位的通信往返。

DB1.0DB1.4DB1.8ReadAsync
更多能力与连接示意

应用集成

提供通信传输、事件、缓存、日志及 WebAPI 能力;结合 RPC、Redis 与 WPF 配套库,构建数据服务和桌面应用。

WebAPIRPCSnetRedisWPF

开发与验证

异步操作配合统一 OperateResult 返回状态、消息和数据;内置模拟与虚拟地址便于前期开发,框架支持中英文切换。

OperateResult Status: true Message: OK ResultData: { ... }

适合这些工作

  • 设备数据采集
  • 边缘网关
  • 产线监控
  • 工业系统集成
  • 通信调试
  • 视觉检测
  1. 01连接现场设备PLC / 仪表 / 数据库
  2. 02采集与解析IDaq / 地址模型
  3. 03转发与服务IMq / WebAPI / RPC
  4. 04构建业务应用监控 / 存储 / 展示
典型使用路线

从你的任务,找到一条清晰路径。

以下是功能组合示意,配置步骤与项目入口可直接查阅。

ACQUIRE

把现场数据送到业务系统

PLCDaqMQTT / API

配置设备与地址,完成采集,再将数据转发到上层服务。

查看消息接入
DIAGNOSE

先验证一台设备的通信

DeviceDebugRead / Subscribe

交互式读写、订阅与 OPC UA 浏览,定位连接和地址问题。

查看调试工具
INSPECT

建立自己的视觉工作流程

DatasetTrainValidate

从数据集、辅助标注到训练、ONNX 与联合验证。

查看视觉平台
协议与接入

找到你的设备,
接入你的系统。

36 个设备接入包

按主要用途分组;同一厂商可能覆盖多类设备。具体型号、TCP/串口等传输方式及读写能力,请阅读对应文档。“模拟”表示模拟数据源,不是协议成熟度评级。

从物理连接到数据服务

TCP · UDP · 串口 · WebSocket · HTTP

按设备选择通信层,按系统选择消息通道;通过统一结果模型衔接数据处理。

开源项目

从框架能力,
到可用的应用。

先选择工作方式,再深入源码。数采、通信调试与工业视觉,是生态的三条核心路径。

开发工具与生态库

按需组合,延伸你的应用

为 WPF 应用提供现代控件、MVVM、主题与本地化。

项目说明与标签

WPF 现代界面与基础架构。包含 Snet.Windows.Core / Controls、MVVM、主题、中英文本地化、窗口基类、属性编辑器和多种常用控件。

界面库 · Windows
查看源码

为 .NET 服务提供注册、客户端代理与异步调用。

项目说明与标签

基于 DotNetty 的 .NET 远程过程调用库,提供服务注册、客户端代理和异步调用。仓库附有服务端与客户端样例,适用于进程间和内网服务通信。

服务通信 · .NET
查看源码

管理 Redis 连接、常见数据结构与发布订阅。

项目说明与标签

Snet.Redis 连接与操作封装,面向缓存、会话、状态及发布订阅场景。通过统一操作入口管理 Redis 连接和常见数据结构。

缓存集成 · .NET
查看源码

按通信、采集、转发与 WebAPI 场景查看示例。

项目说明与标签

可参考的 Snet 用法集合,按 core、daq、relay、tep、web 分组,展示通信、采集、消息转发、非标设备接入和 WebAPI 集成。

使用示例 · .NET 10
查看源码

分享设备接入、自定义采集和消息插件。

项目说明与标签

社区插件源码目录,按作者与 daq / mq 类型组织,用于分享设备接入、自定义采集和消息插件。接口、依赖与宿主兼容性由插件说明确定。

社区扩展 · IDaq / IMq
查看源码

为 AI 编程助手提供 Snet 工作流程与接口约定。

项目说明与标签

供 AI 编程助手使用的四项 Snet 技能,覆盖数据采集、消息收发、IDaq / IMq 插件开发与 WPF 应用,提供工作流程及接口约定。

AI 开发辅助 · 文档
查看源码
更多工具

以下工具独立于工业采集主线。

Windows 可编程键鼠模拟器,用脚本组织键盘、鼠标、延时、循环及剪贴板操作,适用于重复操作与桌面自动化。

自动化工具 · Windows查看源码

为 GitHub Copilot 提供 Ollama 兼容接口,将请求转发至 DeepSeek / MiMo。附 Windows WPF 管理工具,支持配置、服务启停与日志查看;模型及 IDE 接入要求见 README。

模型由第三方服务提供;使用前请阅读相关服务条款。

AI 工具 · 代理服务查看源码

11 个应用、工具与生态项目;框架包分发与应用源码分别提供入口。

数据更新于 · 查看最新发布与仓库 ↗

文档与实践

文档讲方法,
博客讲实践。

先建立框架概念,再沿着协议文档、项目源码与实践文章,走到自己的应用场景。

SNET BLOG / 技术博客

让经验回到具体的问题。

作者大顺的技术博客,分享 Snet 项目、C# / .NET、WPF、工业通信、视觉应用与开发工具,也记录个人生活。

  • 工业通信与数据采集

    Daq 项目、采集转发、数据解析与自定义插件。

  • 界面与工程实践

    WPF 界面库应用、主题语言与 .NET 编码问题。

  • 视觉与 AI 工具

    VisualIdentity 平台、YOLO 应用与模型代理工具。

阅读文章时,结合所安装版本的文档。

AI SKILLS

也可以从一句自然语言开始。

Snet AI Skills 为编程助手提供领域知识、接口契约与开发步骤。

浏览四项技能
查看 AI 工作流程示意
你的需求

连接一台 Modbus 设备,读取寄存器并转发到 MQTT。

AI 助手的工作路径
  1. 读取 DAQ-Skill 与 MQ-Skill 的接口约定
  2. 组织设备、地址与消息配置
  3. 生成代码,再结合设备验证
// DAQ → MQTT
var value = await device.ReadAsync(address);
if (value.Status)
    await mqtt.ProduceAsync(topic,
        value.ResultData.ToJson(), Encoding.UTF8);

流程演示;生成结果仍需检查与测试。

环境与授权

在选型前,
把边界看清楚。

平台支持来自对应项目说明;包分发、源码与第三方组件分别说明授权范围。

平台支持

左右滑动查看完整表格

应用与组件的运行环境
组件WindowsLinuxmacOS
Daq / VisualIdentity Web、API支持支持未声明
WPF / Debug / KMSim支持不支持不支持
.NET 通信库依具体驱动与依赖;OPC DA 需 Windows COM。

应用主要使用 .NET 10,框架库支持 .NET 8 / 10;具体驱动与硬件加速要求见项目文档。

授权范围

Daq、Debug、VisualIdentity 的公开源码采用 MIT,可按 MIT 条款使用和商用;框架通过 NuGet 分发。插件、模型与依赖按各自许可使用。

查看许可细节与依赖入口

左右滑动查看完整表格

分发形式与许可入口
组件分发与许可
Snet.ModbusNuGet 包 · MIT ↗
包许可不代表本站提供框架核心源码。
Daq / Debug / VisualIdentityGitHub 源码 · MIT
以各仓库 LICENSE 为准。
插件、模型与第三方依赖分别查阅对应仓库与上游许可。

插件、模型与依赖的许可入口,见第三方声明。

第三方资源与许可声明
Snet.Modbus26.301.1
NuGet 累计下载44,993
11 个项目合计 Star305
验证与边界

把依据放在需要的地方。

示例的验证程度与平台、许可范围集中说明。

查看示例验证记录与说明

左右滑动查看完整表格

示例验证方式结果与范围
Modbus TCP本机回环模拟器读取值 1234;不连接真实 PLC。
Modbus → MQTT本机回环与 MQTT 接收断言Published,接收端确认同一地址值为 1234。
Siemens S7编译验证尚未连接真实 PLC 或 S7 模拟器。

Compose 提供 Modbus 模拟器和 Mosquitto,端口仅绑定本机。当前验证环境没有 Docker,容器栈尚未实际启动。

产品截图来自公开项目 README;架构、场景与 AI 代码为流程示意。性能、硬件兼容性与生成代码需在你的环境中验证。

框架包以 NuGet 分发,应用源码分别提供;第三方依赖、插件和模型以各自许可为准。

运行同一套本地示例
作者与社区

让连接,
延伸到社区。

项目在代码中成长,经验在交流中积累。找到作者,关注更新,一起把想法落到现场。

Shun / 大顺Snet 作者 · 工业物联网 · .NET

Snet 作者,关注工业物联网、.NET 与开源。你可以从项目 Issues 反馈问题,阅读博客分享,或通过作者公开的社区入口参与交流。

更多公开交流入口

反馈问题请优先使用对应仓库的 Issues;交流可加入 QQ 群,更新动态见公众号。

常见问题

开始前,
了解这些。

Snet 是框架,还是一款软件?

核心是面向 .NET 的工业通信与数据采集框架;围绕它有 Daq 数采、Debug 调试、WpfMUI 界面库、VisualIdentity 工业视觉及其他配套项目。可在现有项目中按需安装框架包,也可使用公开的应用源码。

如何选择库、数采工具与调试工具?

已有 .NET 项目需要连接设备,先选择对应 NuGet 协议包;希望配置多设备采集与转发,查看 Daq;需要交互式读写和诊断设备通信,查看 Debug。视觉检测对应 VisualIdentity,桌面界面开发对应 WpfMUI。

是否开源,能否用于自己的项目?

框架通过 NuGet 分发,Snet.Modbus 的包元数据标注 MIT;这不等于本站提供框架核心源码。Daq、Debug 与 VisualIdentity 的公开源码仓库采用 MIT。插件、模型权重及第三方依赖需分别阅读其许可。详见上方授权范围表。

在 Windows、Linux 与 macOS 上都能使用吗?

Daq 的 Blazor Web 与 VisualIdentity 的 Web/API 支持 Windows 和 Linux;WPF 桌面端、Debug、WpfMUI 与 KMSim 仅适用于 Windows。macOS 暂无这些应用的官方支持说明。框架库需按驱动检查平台依赖,例如 OPC DA 依赖 Windows COM。

官网、文档与旧博客的版本为什么可能不同?

页面与文章的更新时间、统计范围可能不同。开发时以所安装包版本的文档、API 和项目引用为准,避免混用不同版本的 Snet 包。

和其他通信库或采集软件相比,如何选择?

需要把设备通信嵌入自己的 .NET 系统,优先评估协议包、API 与平台依赖;需要配置式采集转发,评估 Daq;单设备排障先用 Debug。按设备协议、部署环境和可维护性选择,并用自己的设备验证,不用页面数字代替选型测试。

遇到问题去哪里反馈?多久能收到回复?

优先在对应项目的 GitHub Issues 提供版本、协议、复现步骤和必要日志;使用交流可加入 QQ 群。社区项目未承诺固定响应时间,避免在公开反馈中提交密码、密钥或生产连接信息。

SNET / ACCESS CATALOG

设备与协议目录

在新窗口打开