当前位置: 首页 > news >正文

数据采集用,集成了主流工业通讯协议

IoTClient 是一个物联网设备通讯协议实现客户端,集成了主流工业通讯协议,包括主流PLC通信读取、ModBus协议、Bacnet协议等。该组件基于.NET Standard 2.0,适用于.NET的跨平台开发,可在Windows、Linux等系统上运行,甚至支持在树莓派等设备上使用。

案例展示

功能特点

1.ModBus 协议支持:

  • ModBusTcp读写操作
  • ModBusRtu读写操作
  • ModBusAscii读写操作
  • ModbusRtuOverTcp读写

2.特定厂家协议支持:

  • SiemensClient (西门子) 读写操作
  • MitsubishiClient (三菱) 读写操作
  • OmronFinsClient (欧姆龙) 读写操作
  • AllenBradleyClient (罗克韦尔) 读写操作

工业可视化项目中使用步骤

案例演示

在工业可视化项目中,可以使用 IoTClient 软件进行快速集成不同物联网设备的通讯协议,以实现数据的采集和监控。以下是使用 IoTClient 的简单流程:

  • 1.安装并引入 IoTClient:
Install-Package IoTClient 
  • 2.初始化和配置连接:
    • 使用 IoTClient 提供的类库初始化要连接的设备,设置通讯协议和连接参数。
  • 3.读取/写入数据:
    • 利用 IoTClient 提供的示例代码,通过相应的读写操作获取设备数据或向设备发送指令。
  • 4.数据处理与显示:
    • 将获取的数据进一步处理并在工业可视化界面上显示,以便用户监控和分析设备状态。
  • 5.实现实时监测和控制:
    • 通过 IoTClient 实现对设备数据的实时监测和控制,提高工业生产效率和监控能力。

通过上述步骤,可以轻松地将 IoTClient 集成到工业可视化项目中,实现与不同物联网设备的快速通讯和数据交互,为工业自动化系统的开发和优化提供了更广阔的可能性。

示例代码

//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;//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", 2, 3);
//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", 502, 1500, EndianFormat.ABCD);

作者介绍:

90后资深架构师,深耕工业可视化,数字化转型,深度学习技术在工业中的应用。深入研究Web3D,SCADA ,深度学习开发应用。开发语言技能JAVA/C#/Python/Golang/Vue3/TypeScript, 关注【工业可视化】带你一起学~

http://www.lryc.cn/news/326192.html

相关文章:

  • Django(三)-搭建第一个应用(2)
  • 求助:配置脚手架代理,跨域问题proxyTable配置无效,访问后显示404?
  • 【4月】组队打卡《山有木Python特征工程极简入门》
  • Wireshark 抓包
  • c语言运算符优先级
  • 纳斯达克大屏媒体尺寸与投放费用:一次投放需要多少钱?
  • 将word转为PDF的几种简单方式
  • 大型集团公司企业文化知识竞活动赛策划方案
  • Spring Boot设置io临时目录
  • Polar 2024春季个人挑战赛 Jay17 WP
  • 10 mybatis 日志
  • AJAX介绍使用案例
  • 【echart】数据可视化
  • 排序(冒泡/快速/归并)
  • jq中的跨域
  • CUDA学习笔记08: 原子规约/向量求和
  • PointNet++论文复现(一)【PontNet网络模型代码详解 - 分类部分】
  • AI渣土车监测报警摄像机
  • Spring框架介绍及详细使用
  • 【论文速读】| 对大语言模型解决攻击性安全挑战的实证评估
  • 小迪安全48WEB 攻防-通用漏洞Py 反序列化链构造自动审计 bandit魔术方法
  • 微服务:解放软件开发的神器,引领企业级应用的未来(二)
  • easyexcel与vue配合下载excel
  • Vue.js 模板语法
  • 信号处理--基于DEAP数据集的情绪分类的典型深度学习模型构建
  • Spring设计模式-实战篇之模板方法模式
  • PTA天梯赛习题 L2-006 树的遍历
  • js相关的dom方法
  • Django——Ajax请求
  • 基于java多角色学生管理系统论文