IoTClient - C# 开源的物联网设备通信协议客户端

科技   2024-06-13 07:07   上海  

 

欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!




IoTClient

推荐一款物联网设备通信协议实现客户端,包括了主流PLC通信读取、ModBus协议、Bacnet协议等常见的工业通信协议。

组件基于 .NET Standard 2.0,可以用于 .NET 跨平台开发,包括 Windows、Linux,它甚至可以在 Raspberry Pi 上运行。

该组件是开源的,终身免费,并采用最宽松的 MIT 协议。

如何使用

通过 Nuget 安装 Install-Package IoTClient 。

ModBusTcp 读写操作

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

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

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

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

//3.1、其他类型数据读取
client.ReadInt16("0", stationNumber, 3);    //short类型数据读取
client.ReadUInt16("4", stationNumber, 3);   //ushort类型数据读取
client.ReadInt32("8", stationNumber, 3);    //int类型数据读取
client.ReadUInt32("12", stationNumber, 3);  //uint类型数据读取
client.ReadInt64("16", stationNumber, 3);   //long类型数据读取
client.ReadUInt64("20", stationNumber, 3);  //ulong类型数据读取
client.ReadFloat("24", stationNumber, 3);   //float类型数据读取
client.ReadDouble("28", stationNumber, 3);  //double类型数据读取
client.ReadCoil("32", stationNumber, 1);    //线圈类型数据读取
client.ReadDiscrete("32", stationNumber, 2);//离散类型数据读取
client.ReadString("100", stationNumber,10); //读取字符串

//4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写操作都会返回操作结果对象Result
var result = client.ReadInt16("4"23);
//5.1 读取是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 读取失败的异常信息
var errMsg = result.Err;
//5.3 读取操作实际发送的请求报文
var requst  = result.Requst;
//5.4 读取操作服务端响应的报文
var response = result.Response;
//5.5 读取到的值
var value3 = result.Value;

//6、批量读取
var list = new List<ModBusInput>();
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 4,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "199",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
var result = client.BatchRead(list);

//7、构造函数其他参数
//IP、端口、超时时间、大小端设置
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1"5021500, EndianFormat.ABCD);

ModBusRtu读写操作

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

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

SiemensClient(西门子)读写操作


//1、实例化客户端 - 输入型号、IP和端口
//其他型号:SiemensVersion.S7_200、SiemensVersion.S7_300、SiemensVersion.S7_400、SiemensVersion.S7_1200、SiemensVersion.S7_1500
SiemensClient client = new SiemensClient(SiemensVersion.S7_200Smart, "127.0.0.1",102);

//2、写操作
client.Write("Q1.3"true);
client.Write("V2205", (short)11);
client.Write("V2209"33);
client.Write("V2305""orderCode");             //写入字符串

//3、读操作
var value1 = client.ReadBoolean("Q1.3").Value;
var value2 = client.ReadInt16("V2205").Value;
var value3 = client.ReadInt32("V2209").Value;
var value4 = client.ReadString("V2305").Value; //读取字符串

//4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写操作都会返回操作结果对象Result
var result = client.ReadInt16("V2205");
//5.1 读取是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 读取失败的异常信息
var errMsg = result.Err;
//5.3 读取操作实际发送的请求报文
var requst  = result.Requst;
//5.4 读取操作服务端响应的报文
var response = result.Response;
//5.5 读取到的值
var value4 = result.Value;


项目截图


往期推荐:





基于 C# 开源的功能强大 .NET 人脸识别 API


使用 .NET 技术构建, AI 超元域桌面应用


8k Star, .NET 最好用的规则验证组件


全能 WinForm 开发框架 - ReaLTaiizor


太强了,基于 .NET 开发的 AI 无损放大工具



项目地址



https://github.com/zhaopeiym/IoTClient





分享
点收藏 
点点赞
点在看

Dotnet 工具箱
定期分享 Dotnet 有趣,实用的工具和组件。
 最新文章