SNET / 工业连接生态26.283.1

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

从一个设备,到一条数据链路。用统一的 .NET 接口连接 PLC、采集数据、转发消息,再构建自己的工业应用。

dotnet add package Snet.Modbus --version 26.283.1
.NET 8 / 10Windows / Linux查看组件支持范围 ↓
PLCPLC 控制器
OPC设备接入
DB数据库采集
Snet.统一接口 · 自由扩展
MQTT消息通道
API数据服务
APP业务应用
架构示意 · 非实时状态
36设备接入包
130+协议变体
6消息与传输通道
46框架 NuGet 包
这些数字代表什么?

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

查看框架目录
01 / 快速开始

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

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

  1. 准备环境.NET 10 SDK;本地设备模拟器或可访问的目标设备。
  2. 安装与配置三个示例固定使用 26.283.1。替换 IP、端口、站号与地址后运行。
  3. 读取并验证示例包含连接失败处理与实例释放;MQTT 需要可访问的 Broker。
完整快速入门 浏览 Examples 示例

同一套读写流程,驱动配置、数据类型与地址规则仍需按协议调整。

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

dotnet add package Snet.Modbus --version 26.283.1

Modbus TCP

dotnet add package Snet.Modbus --version 26.283.1
Program.cs
using Snet.Modbus;
using Snet.Model.data;
using Snet.Model.@enum;
using System.Text.Json;

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 ? JsonSerializer.Serialize(value.ResultData) : value.Message);
await device.OffAsync(true);

Siemens S7

dotnet add package Snet.Siemens --version 26.283.1
Program.cs
using Snet.Siemens;
using Snet.Model.data;
using Snet.Model.@enum;
using System.Text.Json;

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 ? JsonSerializer.Serialize(value.ResultData) : value.Message);
await device.OffAsync(true);

MQTT 转发

dotnet add package Snet.Modbus --version 26.283.1
dotnet add package Snet.Mqtt --version 26.283.1
Program.cs
using Snet.Modbus;
using Snet.Mqtt.client;
using Snet.Model.data;
using Snet.Model.@enum;
using System.Text.Json;
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", JsonSerializer.Serialize(value.ResultData), Encoding.UTF8);
Console.WriteLine(sent.Status ? "Published" : sent.Message);
await mqtt.OffAsync(true);
await device.OffAsync(true);
本地回环结果Modbus: 1234 · MQTT: PublishedS7 仅编译验证

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

02 / 框架能力

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

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

统一接口

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

插件化扩展

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

采集与消息联动

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

地址与批量读取

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

应用集成

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

开发与验证

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

适合这些工作

设备数据采集边缘网关产线监控工业系统集成通信调试视觉检测
连接现场设备PLC / 仪表 / 数据库
采集与解析IDaq / 地址模型
转发与服务IMq / WebAPI / RPC
构建业务应用监控 / 存储 / 展示
协议与接入

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

查看全部与搜索 ↗
36 个设备接入包

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

消息与传输通道

消息中间件:MQTT、Kafka、RabbitMQ、RocketMQ。

点对点与网络传输:NetMQ、Netty。

通道文档

从物理连接到数据服务

TCP · UDP · 串口 · WebSocket · HTTP

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

通信层参考 协议文档
03 / 开源项目

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

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

开发工具与生态库 按需组合,延伸你的应用

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

界面库 · Windows查看源码

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

服务通信 · .NET查看源码

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

缓存集成 · .NET查看源码

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

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

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

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

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

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

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

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

自动化工具 · Windows查看源码

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

AI 工具 · 代理服务

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

查看源码

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

GitHub 统计快照: · 查看当前仓库数据 ↗

04 / 文档与实践

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

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

SNET BLOG / 技术博客

让经验回到具体的问题。

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

工业通信与数据采集

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

界面与工程实践

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

视觉与 AI 工具

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

博客文章反映发表时的版本;当前接口与配置请结合对应文档阅读。

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

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

浏览四项技能
你的需求

连接一台 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,
        Serialize(value.ResultData), Encoding.UTF8);

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

环境与授权

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

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

平台支持

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

应用项目主要使用 .NET 10,框架包以 .NET 8 / 10 为主要目标;Linux ARM64 与硬件加速请查看具体项目。未声明不等于已经测试。

授权范围

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

SKILLS、Plugins 的说明与贡献约定见各自 README;不能将其推定为所有贡献或模型的统一许可。

Snet.Modbus 26.283.1
NuGet 累计下载38,541
11 个项目合计 Star273
版本与发布记录 发布与下载指标为更新时的快照。
05 / 作者与社区

让连接,延伸到社区。

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

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

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

认识作者与更多项目

SnetGit 是独立 Git 服务,公开项目与使用方式请查看对应仓库。

常见问题

开始前,了解这些。

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 包。

SNET / ACCESS CATALOG

设备与协议目录