
致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!
项目介绍
IoTClient 是一个基于 .NET Standard 2.0 开发的开源免费(采用 MIT 协议)的物联网设备通讯协议实现客户端。该项目主要针对工业自动化领域,集成了多种主流工业通讯协议,包括主流 PLC 通信读取、ModBus 协议、Bacnet 协议等常用工业通讯协议。
适用场景
-
生产线监控:实时监控生产线上的设备状态和数据。 -
设备控制:对工业设备进行远程控制和参数调整。 -
数据采集:采集设备产生的各种数据,用于监控和分析。 -
实时监控:监控能源设备的运行状态和参数。 -
云端控制:通过云端平台对能源设备进行远程控制。
功能模块
ModBus 协议支持
IoTClient 提供了完整的 ModBus 协议族支持,包括以下几种变体:
|
|
|
|
|---|---|---|
| ModBusTcp |
|
|
| ModBusRtu |
|
|
| ModBusAscii |
|
|
| ModbusRtuOverTcp |
|
|
主流 PLC 品牌协议支持
除了标准 ModBus 协议,IoTClient 还集成了多个主流 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




