大数跨境
0
0

一个 .NET 开源免费、高效稳定的物联网通信协议客户端

一个 .NET 开源免费、高效稳定的物联网通信协议客户端 DotNet项目宝库
2025-09-11
2
导读:一个基于 .NET Standard 2.0 开发的开源免费(采用 MIT 协议)的物联网设备通讯协议实现客户端。该项目主要针对工业自动化领域,集成了多种主流工业通讯协议,包括主流 PLC 通信读取、

致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!

项目介绍

IoTClient 是一个基于 .NET Standard 2.0 开发的开源免费(采用 MIT 协议)的物联网设备通讯协议实现客户端。该项目主要针对工业自动化领域,集成了多种主流工业通讯协议,包括主流 PLC 通信读取、ModBus 协议、Bacnet 协议等常用工业通讯协议。

适用场景

  • 生产线监控:实时监控生产线上的设备状态和数据。
  • 设备控制:对工业设备进行远程控制和参数调整。
  • 数据采集:采集设备产生的各种数据,用于监控和分析。
  • 实时监控:监控能源设备的运行状态和参数。
  • 云端控制:通过云端平台对能源设备进行远程控制。

功能模块

ModBus 协议支持

IoTClient 提供了完整的 ModBus 协议族支持,包括以下几种变体:

协议类型
描述
应用场景
ModBusTcp
基于 TCP/IP 实现的 ModBus 协议,使用端口 502
工业以太网环境中的设备通信
ModBusRtu
基于串行通信实现的 ModBus 协议,通常使用 RS-485/RS-232 接口
传统工业控制系统,串行设备连接
ModBusAscii
使用 ASCII 字符格式的 ModBus 协议
特定设备的通信需求
ModbusRtuOverTcp
通过 TCP 方式传输 RTU 格式报文的协议
串口设备通过网络远程访问

主流 PLC 品牌协议支持

除了标准 ModBus 协议,IoTClient 还集成了多个主流 PLC 品牌的专用通信协议:

品牌
支持的型号
典型功能
西门子
S7-200, S7-300, S7-400, S7-1200, S7-1500, S7-200Smart
读写位、字、字符串等各种数据类型
三菱
Qna-3E 等系列
读写位、字、双字等数据
欧姆龙
支持 Fins 协议
读写位、字、双字等数据
艾伦-布拉德利
(罗克韦尔) 系列PLC
读写各种数据类型

通用功能特性

  • 数据读写操作:支持多种数据类型的读写操作,包括布尔值、整型(16/32/64位)、无符号整型(16/32/64位)、浮点型、双精度浮点型和字符串。
  • 批量读取:支持批量读取多个数据点,显著提高通信效率。
  • 连接管理:支持手动打开和关闭连接,避免频繁连接断开带来的性能开销。
  • 详细操作结果:每次读写操作都返回详细的结果对象,包括成功状态、错误信息、请求报文、响应报文和读取到的值。

功能特点

  • 🆓 开源免费:采用最宽松的MIT协议,可自由修改和商业使用
  • 🔌 多协议支持:集成ModBus、多种品牌PLC专用协议等
  • 🌐 跨平台运行:基于.NET Standard 2.0,支持Windows、Linux、树莓派等
  • ⚡ 高性能设计:支持连接池管理和批量读写操作
  • 🔧 简洁API:提供直观易用的设备读写接口

开始使用

安装 NuGet 包

ModBusTcp读写操作

//1、实例化客户端 - 输入正确的IP和端口
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502);

//2、写操作 - 参数依次是:地址 、值 、站号 、功能码
client.Write("4", (short)33, 2, 16);

//2.1、【注意】写入数据的时候需要明确数据类型
client.Write("0", (short)33, 2, 16);    //写入short类型数值
client.Write("4", (ushort)33, 2, 16);   //写入ushort类型数值
client.Write("8", (int)33, 2, 16);      //写入int类型数值
client.Write("12", (uint)33, 2, 16);    //写入uint类型数值
client.Write("16", (long)33, 2, 16);    //写入long类型数值
client.Write("20", (ulong)33, 2, 16);   //写入ulong类型数值
client.Write("24", (float)33, 2, 16);   //写入float类型数值
client.Write("28", (double)33, 2, 16);  //写入double类型数值
client.Write("32"true, 2, 5);         //写入线圈类型值
client.Write("100""orderCode", stationNumber);  //写入字符串

//3、读操作 - 参数依次是:地址 、站号 、功能码
var value = client.ReadInt16("4", 2, 3).Value;

ModBusRtu读写操作

//实例化客户端 - [COM端口名称,波特率,数据位,停止位,奇偶校验]
ModBusRtuClient client = new ModBusRtuClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读写操作和ModBusTcpClient的读写操作一致

ModBusAscii读写操作

//实例化客户端 - [COM端口名称,波特率,数据位,停止位,奇偶校验]
ModbusAsciiClient client = new ModbusAsciiClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读写操作和ModBusTcpClient的读写操作一致

效果展示

开源地址

https://gitee.com/zhaopeiym/IoTClient



图片

【声明】内容源于网络
0
0
DotNet项目宝库
致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!
内容 86
粉丝 0
DotNet项目宝库 致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!
总阅读106
粉丝0
内容86