连接工业现场,让数据流动。
用统一的 .NET 接口连接 PLC、采集数据、转发消息,构建你的工业应用。
dotnet add package Snet.Modbus --version 26.301.1
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
一种接口,
建立第一条连接。
连接、读取、检查结果。先看真实调用,再为你的设备选择对应驱动。
- 01准备环境示例需要 .NET 10 SDK;框架库支持 .NET 8 / 10。
- 02安装与配置使用已验证的统一包版本,按设备修改连接与地址。
- 03读取并验证先在本机回环环境运行,再连接自己的设备。
先选择设备协议,再核对地址规则与数据类型。
滑动切换,或使用方向键
dotnet add package Snet.Modbus --version 26.301.1选择一个示例,复制后开始。
Modbus TCP
dotnet add package Snet.Modbus --version 26.301.1using 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.1using 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.1using 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 为框架包范围,不代表全部作者包或经过本页实测的设备数量。
查看框架目录统一接口
IDaq、IMq 与 ICommunication 分别组织采集、消息与通信操作。连接、读写、订阅与返回结果具有一致的使用方式。
OnAsync()ReadAsync()SubscribeAsync()插件化扩展
基于 AssemblyLoadContext 加载插件,为非标设备和自定义消息系统提供扩展路径;兼容宿主支持运行时加载与卸载。
采集与消息联动
设备数据通过地址模型进行解析与类型转换,可结合消息配置转发到 MQTT、Kafka 等系统,连接现场与上层应用。
地址与批量读取
统一地址描述、订阅和结果模型。支持的协议可通过自动组包合并读取请求,减少分散点位的通信往返。
更多能力与连接示意
应用集成
提供通信传输、事件、缓存、日志及 WebAPI 能力;结合 RPC、Redis 与 WPF 配套库,构建数据服务和桌面应用。
开发与验证
异步操作配合统一 OperateResult 返回状态、消息和数据;内置模拟与虚拟地址便于前期开发,框架支持中英文切换。
OperateResult Status: true Message: OK ResultData: { ... }适合这些工作
- 设备数据采集
- 边缘网关
- 产线监控
- 工业系统集成
- 通信调试
- 视觉检测
- 01连接现场设备PLC / 仪表 / 数据库
- 02采集与解析IDaq / 地址模型
- 03转发与服务IMq / WebAPI / RPC
- 04构建业务应用监控 / 存储 / 展示
从你的任务,找到一条清晰路径。
以下是功能组合示意,配置步骤与项目入口可直接查阅。
找到你的设备,
接入你的系统。
36 个设备接入包
36 个设备接入包
PLC 与通用协议
驱动与仪表
OPC 与数据库
没有匹配的协议,请更换关键词或清除筛选。
按主要用途分组;同一厂商可能覆盖多类设备。具体型号、TCP/串口等传输方式及读写能力,请阅读对应文档。“模拟”表示模拟数据源,不是协议成熟度评级。
从框架能力,
到可用的应用。
先选择工作方式,再深入源码。数采、通信调试与工业视觉,是生态的三条核心路径。
核心产品
采集 · 调试 · 视觉滑动切换,或使用方向键
Snet.Iot.Daq
配置多设备采集,连接 PLC、OPC、Modbus、数据库和非标设备,并通过消息插件转发数据。提供 Windows WPF 桌面端与 Windows / Linux Blazor Web 端,共享核心业务。
- 插件加载与卸载
- OPC UA Server
- MQTT Broker
- 实时图表(桌面端)
VisualIdentity
.NET 10 工业视觉平台:YOLO 识别目标与已知缺陷,Anomalib 定位异常,SAM 辅助点选标注。提供标注、训练、ONNX 与联合验证,支持 Windows / Linux Web、API 及 Windows WPF 工具;核心组件通过源码项目引用集成。
- YOLO 五类任务
- 异常检测
- 辅助标注
- CPU / CUDA
Snet.Iot.Debug
面向单设备与单协议的交互式调试。覆盖数据读写、订阅、消息通信、实时图表及 OPC UA 节点浏览,与 Daq 数采工具互补。
- 交互式读写
- 订阅与实时图表
- OPC UA 浏览
开发工具与生态库
按需组合,延伸你的应用更多工具
以下工具独立于工业采集主线。
11 个应用、工具与生态项目;框架包分发与应用源码分别提供入口。
数据更新于 · 查看最新发布与仓库 ↗
文档讲方法,
博客讲实践。
先建立框架概念,再沿着协议文档、项目源码与实践文章,走到自己的应用场景。
Snet 开发文档
文档首页覆盖安装、配置、核心引擎、协议、中间件、WPF 与 API 参考,支持中文和英文阅读。
也可以从一句自然语言开始。
Snet AI Skills 为编程助手提供领域知识、接口契约与开发步骤。
查看 AI 工作流程示意
连接一台 Modbus 设备,读取寄存器并转发到 MQTT。
- 读取 DAQ-Skill 与 MQ-Skill 的接口约定
- 组织设备、地址与消息配置
- 生成代码,再结合设备验证
// DAQ → MQTT
var value = await device.ReadAsync(address);
if (value.Status)
await mqtt.ProduceAsync(topic,
value.ResultData.ToJson(), Encoding.UTF8);流程演示;生成结果仍需检查与测试。
在选型前,
把边界看清楚。
平台支持来自对应项目说明;包分发、源码与第三方组件分别说明授权范围。
平台支持
左右滑动查看完整表格
| 组件 | Windows | Linux | macOS |
|---|---|---|---|
| Daq / VisualIdentity Web、API | 支持 | 支持 | —未声明 |
| WPF / Debug / KMSim | 支持 | 不支持 | 不支持 |
| .NET 通信库 | 依具体驱动与依赖;OPC DA 需 Windows COM。 | ||
应用主要使用 .NET 10,框架库支持 .NET 8 / 10;具体驱动与硬件加速要求见项目文档。
授权范围
Daq、Debug、VisualIdentity 的公开源码采用 MIT,可按 MIT 条款使用和商用;框架通过 NuGet 分发。插件、模型与依赖按各自许可使用。
查看许可细节与依赖入口
左右滑动查看完整表格
| 组件 | 分发与许可 |
|---|---|
| Snet.Modbus | NuGet 包 · MIT ↗ 包许可不代表本站提供框架核心源码。 |
| Daq / Debug / VisualIdentity | GitHub 源码 · MIT 以各仓库 LICENSE 为准。 |
| 插件、模型与第三方依赖 | 分别查阅对应仓库与上游许可。 |
插件、模型与依赖的许可入口,见第三方声明。
把依据放在需要的地方。
示例的验证程度与平台、许可范围集中说明。
查看示例验证记录与说明
左右滑动查看完整表格
| 示例 | 验证方式 | 结果与范围 |
|---|---|---|
| Modbus TCP | 本机回环模拟器 | 读取值 1234;不连接真实 PLC。 |
| Modbus → MQTT | 本机回环与 MQTT 接收断言 | Published,接收端确认同一地址值为 1234。 |
| Siemens S7 | 编译验证 | 尚未连接真实 PLC 或 S7 模拟器。 |
Compose 提供 Modbus 模拟器和 Mosquitto,端口仅绑定本机。当前验证环境没有 Docker,容器栈尚未实际启动。
产品截图来自公开项目 README;架构、场景与 AI 代码为流程示意。性能、硬件兼容性与生成代码需在你的环境中验证。
框架包以 NuGet 分发,应用源码分别提供;第三方依赖、插件和模型以各自许可为准。
运行同一套本地示例让连接,
延伸到社区。
项目在代码中成长,经验在交流中积累。找到作者,关注更新,一起把想法落到现场。
开始前,
了解这些。
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 群。社区项目未承诺固定响应时间,避免在公开反馈中提交密码、密钥或生产连接信息。








