我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!
项目介绍
IoTClient是一个.NET开源、免费(采用最宽松MIT协议)、稳定的物联网设备通讯协议实现客户端,将包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。
跨平台支持
本组件基于.NET Standard 2.0,可用于.Net的跨平台开发,如Windows、Linux甚至可运行于树莓派上。
主要功能
支持ModBus(TCP、RTU、ASCII、RTU Over TCP)、Bacnet等多种工业通信协议。
提供对Siemens、Mitsubishi、Omron、Allen Bradley等主流PLC品牌的读写操作支持。
ModBus协议
ModBus协议是一种广泛应用于工业环境中的串行通信协议,它定义了一种主从通信模式,允许主设备(如PLC、计算机等)与一个或多个从设备(如传感器、执行器等)进行通信。
Bacnet协议
Bacnet协议(Building Automation and Control Networks)是一种专为楼宇自动化和控制系统设计的通信协议。它旨在实现不同制造商生产的智能建筑设备之间的互操作性,从而允许这些设备能够在一个共同的通信网络中无缝协作。
MitsubishiClient(三菱)读写操作
//1、实例化客户端 - 输入正确的IP和端口
MitsubishiClient client = new MitsubishiClient(MitsubishiVersion.Qna_3E, "127.0.0.1",6000);
//2、写操作
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);
//3、读操作
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;
//4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();
//5、读写操作都会返回操作结果对象Result
var result = client.ReadInt16("D210");
//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;
OmronFinsClient(欧姆龙)读写操作
//1、实例化客户端 - 输入正确的IP和端口
OmronFinsClient client = new OmronFinsClient("127.0.0.1",6000);
//2、写操作
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);
//3、读操作
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;
//4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();
//5、读写操作都会返回操作结果对象Result
var result = client.ReadInt16("D210");
//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;
部分演示效果截图
![0fb51f26769260cdb1c523fdc540b987.png](https://img-blog.csdnimg.cn/img_convert/0fb51f26769260cdb1c523fdc540b987.png)
![72e878a5d2b2a9032b526cee7e758bf5.png](https://img-blog.csdnimg.cn/img_convert/72e878a5d2b2a9032b526cee7e758bf5.png)
![ba48aadd6a83baec29342e401b0d6917.png](https://img-blog.csdnimg.cn/img_convert/ba48aadd6a83baec29342e401b0d6917.png)
![8866c9b088b3c1a22abcaeb0c5e280ae.png](https://img-blog.csdnimg.cn/img_convert/8866c9b088b3c1a22abcaeb0c5e280ae.png)
![01973c6d770b0b896a6db7855cc4362e.png](https://img-blog.csdnimg.cn/img_convert/01973c6d770b0b896a6db7855cc4362e.png)
![1ab954c2c3bbb63dc707e6d332ef79b6.png](https://img-blog.csdnimg.cn/img_convert/1ab954c2c3bbb63dc707e6d332ef79b6.png)
![87f437926e9fbaa749f8b688e54206e7.png](https://img-blog.csdnimg.cn/img_convert/87f437926e9fbaa749f8b688e54206e7.png)
![4c4cb6703c2135972d86580fec1fb7df.png](https://img-blog.csdnimg.cn/img_convert/4c4cb6703c2135972d86580fec1fb7df.png)
![1357f59bb31810feca9a933bb78516c3.png](https://img-blog.csdnimg.cn/img_convert/1357f59bb31810feca9a933bb78516c3.png)
![4525c8bdf8f603030044bc55aa5235f2.png](https://img-blog.csdnimg.cn/img_convert/4525c8bdf8f603030044bc55aa5235f2.png)
![d6a53daedf4909d1362c392fef5b3e15.png](https://img-blog.csdnimg.cn/img_convert/d6a53daedf4909d1362c392fef5b3e15.png)
![710bb6a17e52ce8b7685700848b305d1.png](https://img-blog.csdnimg.cn/img_convert/710bb6a17e52ce8b7685700848b305d1.png)
![86fa25c5b6e3da139431297623f8ebd6.png](https://img-blog.csdnimg.cn/img_convert/86fa25c5b6e3da139431297623f8ebd6.png)
开源地址
https://github.com/zhaopeiym/IoTClient