统一接口
IDaq、IMq 与 ICommunication 分别组织采集、消息与通信操作。连接、读写、订阅与返回结果具有一致的使用方式。
从一个设备,到一条数据链路。用统一的 .NET 接口连接 PLC、采集数据、转发消息,再构建自己的工业应用。
dotnet add package Snet.Modbus --version 26.283.1
Snet.统一接口 · 自由扩展
框架官网的分类口径:36 个接入包包含设备协议、数据库、模拟与自定义接入;130+ 为协议变体,6 为消息与传输通道,46 为框架包范围,不代表全部作者包或经过本页实测的设备数量。
查看框架目录连接、读取、检查结果。先看真实调用,再为你的设备选择对应驱动。
同一套读写流程,驱动配置、数据类型与地址规则仍需按协议调整。
选择一个示例,复制后开始。
dotnet add package Snet.Modbus --version 26.283.1dotnet add package Snet.Modbus --version 26.283.1using 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);dotnet add package Snet.Siemens --version 26.283.1using 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);dotnet add package Snet.Modbus --version 26.283.1
dotnet add package Snet.Mqtt --version 26.283.1using 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;连接真实设备前请修改参数。
围绕采集、消息与通信组织代码。业务层专注数据,设备层按需扩展。
IDaq、IMq 与 ICommunication 分别组织采集、消息与通信操作。连接、读写、订阅与返回结果具有一致的使用方式。
基于 AssemblyLoadContext 加载插件,为非标设备和自定义消息系统提供扩展路径;兼容宿主支持运行时加载与卸载。
设备数据通过地址模型进行解析与类型转换,可结合消息配置转发到 MQTT、Kafka 等系统,连接现场与上层应用。
统一地址描述、订阅和结果模型。支持的协议可通过自动组包合并读取请求,减少分散点位的通信往返。
提供通信传输、事件、缓存、日志及 WebAPI 能力;结合 RPC、Redis 与 WPF 配套库,构建数据服务和桌面应用。
异步操作配合统一 OperateResult 返回状态、消息和数据;内置模拟与虚拟地址便于前期开发,框架支持中英文切换。
36 个接入入口
没有匹配的协议,请更换关键词或清除筛选。
按主要用途分组;同一厂商可能覆盖多类设备。具体型号、TCP/串口等传输方式及读写能力,请阅读对应文档。“模拟”表示模拟数据源,不是协议成熟度评级。
先选择工作方式,再深入源码。数采、通信调试与工业视觉,是生态的三条核心路径。
配置多设备采集,连接 PLC、OPC、Modbus、数据库和非标设备,并通过消息插件转发数据。提供 Windows WPF 桌面端与 Windows / Linux Blazor Web 端,共享核心业务。
.NET 10 工业视觉平台:YOLO 识别目标与已知缺陷,Anomalib 定位异常,SAM 辅助点选标注。提供标注、训练、ONNX 与联合验证,支持 Windows / Linux Web、API 及 Windows WPF 工具;核心组件通过源码项目引用集成。
面向单设备与单协议的交互式调试。覆盖数据读写、订阅、消息通信、实时图表及 OPC UA 节点浏览,与 Daq 数采工具互补。
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 开发辅助 · 文档查看源码以下工具独立于工业采集主线。
11 个应用、工具与生态项目;框架包分发与应用源码分别提供入口。
GitHub 统计快照: · 查看当前仓库数据 ↗
先建立框架概念,再沿着协议文档、项目源码与实践文章,走到自己的应用场景。
覆盖安装、配置、核心引擎、协议、中间件、WPF 与 API 参考,支持中文和英文阅读。
Snet AI Skills 为编程助手提供领域知识、接口契约与开发步骤。
连接一台 Modbus 设备,读取寄存器并转发到 MQTT。
// DAQ → MQTT
var value = await device.ReadAsync(address);
if (value.Status)
await mqtt.ProduceAsync(topic,
Serialize(value.ResultData), Encoding.UTF8);流程演示;生成结果仍需检查与测试。
平台支持来自对应项目说明;包分发、源码与第三方组件分别说明授权范围。
| 组件 | Windows | Linux | macOS |
|---|---|---|---|
| Daq / VisualIdentity Web、API | 支持 | 支持 | 未声明 |
| WPF / Debug / KMSim | 支持 | 不支持 | 不支持 |
| .NET 通信库 | 依具体驱动与依赖;OPC DA 需 Windows COM。 | ||
应用项目主要使用 .NET 10,框架包以 .NET 8 / 10 为主要目标;Linux ARM64 与硬件加速请查看具体项目。未声明不等于已经测试。
| 组件 | 分发与许可 |
|---|---|
| Snet.Modbus | NuGet 包 · MIT ↗包许可不代表本站提供框架核心源码。 |
| Daq / Debug / VisualIdentity | GitHub 源码 · MIT以各仓库 LICENSE 为准。 |
| 插件、模型与第三方依赖 | 分别查阅对应仓库与上游许可。 |
SKILLS、Plugins 的说明与贡献约定见各自 README;不能将其推定为所有贡献或模型的统一许可。
项目在代码中成长,经验在交流中积累。找到作者,关注更新,一起把想法落到现场。
核心是面向 .NET 的工业通信与数据采集框架;围绕它有 Daq 数采、Debug 调试、WpfMUI 界面库、VisualIdentity 工业视觉及其他配套项目。可在现有项目中按需安装框架包,也可使用公开的应用源码。
已有 .NET 项目需要连接设备,先选择对应 NuGet 协议包;希望配置多设备采集与转发,查看 Daq;需要交互式读写和诊断设备通信,查看 Debug。视觉检测对应 VisualIdentity,桌面界面开发对应 WpfMUI。
框架通过 NuGet 分发,Snet.Modbus 的包元数据标注 MIT;这不等于本站提供框架核心源码。Daq、Debug 与 VisualIdentity 的公开源码仓库采用 MIT。插件、模型权重及第三方依赖需分别阅读其许可。详见上方授权范围表。
Daq 的 Blazor Web 与 VisualIdentity 的 Web/API 支持 Windows 和 Linux;WPF 桌面端、Debug、WpfMUI 与 KMSim 仅适用于 Windows。macOS 暂无这些应用的官方支持说明。框架库需按驱动检查平台依赖,例如 OPC DA 依赖 Windows COM。
页面与文章的更新时间、统计范围可能不同。开发时以所安装包版本的文档、API 和项目引用为准,避免混用不同版本的 Snet 包。