当前位置: 首页 > 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, 关注【工业可视化】带你一起学~

相关文章:

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

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

Django(三)-搭建第一个应用(2)

一、编写更多视图 问题详情页——展示某个投票的问题和不带结果的选项列表。问题结果页——展示某个投票的结果。投票处理器——用于响应用户为某个问题的特定选项投票的操作。 # 1.问题详情页&#xff1a;展示某个投票的问题和不带结果的选项列表 def detail(request,questi…...

求助:配置脚手架代理,跨域问题proxyTable配置无效,访问后显示404?

已经在这里卡了一天了。找了很多解决办法&#xff0c;比如重启&#xff0c;修改proxytable等等&#xff0c;但是每次但是404&#xff0c;求助各位大佬&#xff0c;怎么解决&#xff1f; 1、代码 &#xff08;1&#xff09;config的index.js &#xff08;2&#xff09; App.v…...

【4月】组队打卡《山有木Python特征工程极简入门》

活动名称 CDA Club 第2期《山有木兮Python数据分析极简入门》组队打卡 活动介绍 本次打卡活动由CDA俱乐部旗下学术部主办。目的是通过数据分析科普内容&#xff0c;为数据分析爱好者提供学习和交流的机会。方便大家利用碎片化时间在线学习&#xff0c;以组队打卡的形式提升学…...

Wireshark 抓包

启动时选择一个有信号的网卡双击打开&#xff0c;或者在 捕获选择里打开选择网卡。 然后输出下面的规则就可以抓到报文了。 最上面的三条是建立连接时的三次握手&#xff0c; 下面是发送数据hello 对应两条数据 最下面的4条是断时的4次挥手...

c语言运算符优先级

1、运算符介绍 在C语言中&#xff0c;运算符优先级是指在表达式中执行运算的先后顺序。按照C语言的标准规范&#xff0c;不同的运算符被赋予了不同的优先级等级&#xff0c;优先级高的运算符会先进行运算。如果同一优先级的运算符出现在同一个表达式中&#xff0c;则按照从左到…...

纳斯达克大屏媒体尺寸与投放费用:一次投放需要多少钱?

纳斯达克大屏媒体尺寸与投放费用&#xff1a;一次投放需要多少钱&#xff1f; 1. 纳斯达克图片要求 1.1 像素要求 高度&#xff1a;2336 像素宽度&#xff1a;1832 像素 1.2 分辨率要求 像素比率&#xff1a;1.0 px 72 dpi 1.3 文件格式要求 静态图片格式&#xff1a;.…...

将word转为PDF的几种简单方式

第一种&#xff1a;使用spire.doc.jar包&#xff0c;用时7秒左右。 引入spire.doc-11.1.1.jar包&#xff0c;该包带水印&#xff0c;建议使用免费版的spire.doc.free-5.2.0.jar&#xff0c;免费版只能转三页。 package web.tools.excel; import com.spire.doc.*; public cl…...

大型集团公司企业文化知识竞活动赛策划方案

一场高端企业文化知识竞赛活动完整策划书&#xff0c;按诗词大会舞美标准进行设计&#xff0c;竞赛规则新颖&#xff0c;值得收藏。 天纵高端知识竞赛服务商&#xff0c;20多年现场经验和软硬件开发。 专业承办全国高端知识竞赛活动。线上线下各类竞赛活动均可执行&#xff0c;…...

Spring Boot设置io临时目录

在部署springboot项目&#xff0c;使用MultipartFile上传文件会出现以下异常 Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.3016596448718765136.18001/work/Tomcat/localhost/xx] is …...

Polar 2024春季个人挑战赛 Jay17 WP

Polar 2024春季个人挑战赛 Rank&#xff1a;7 【WEB】机器人 开题 起手敏感文件robots.txt 【WEB】PHP反序列化初试 最简单的php反序列化 POC&#xff1a; <?php class Easy{public $name;public function __wakeup(){echo $this->name;} } class Evil{public $evi…...

10 mybatis 日志

文章目录 product.sqlpom.xmllogback.xmlmybatis-config.xmlProductsMapper.xmlProductsProductsMapper.java product.sql create table products (product_id int auto_increment comment 产品IDprimary key,product_name varchar(100) null comment 产品名称,bra…...

AJAX介绍使用案例

文章目录 一、AJAX概念二、AJAX快速入门1、编写AjaxServlet&#xff0c;并使用response输出字符&#xff08;后台代码&#xff09;2、创建XMLHttpRequest对象&#xff1a;用于和服务器交换数据 & 3、向服务器发送请求 & 4、获取服务器响应数据 三、案例-验证用户是否存…...

【echart】数据可视化

什么是数据可视化&#xff1f; 数据可视化主要目的:借助于图形化手段&#xff0c;清晰有效地传达与沟通信息。 数据可视化可以把数据从冰冷的数字转换成图形&#xff0c;揭示蕴含在数据中的规律和道理。 如何绘制&#xff1f; echarts 图表的绘制&#xff0c;大体分为三步:…...

排序(冒泡/快速/归并)

冒泡排序 时间复杂度为 O(n^2) 原理 比较相邻的元素. 如果第一个比第二个大,就交换他们两个.依次比较每一对相邻的元素—>结果 : 最后的元素是这组数中最大的重复上述步骤 , 除了最后一个[]因为最后一个已经是排好序的了(这组数中最大的那个)]持续对越来越少的元素进行如上…...

jq中的跨域

跨域 1.从一个地址到另外一个第一请求资源或者数据时&#xff0c;就有可能发生跨域 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>跨域</title><script src"jquery/jquery-1.11.3.j…...

CUDA学习笔记08: 原子规约/向量求和

参考资料 CUDA编程模型系列一(核心函数)_哔哩哔哩_bilibili 代码 #include <iostream> #include <cuda_runtime.h> #include <device_launch_parameters.h> #include <stdio.h> #include <math.h>#define N 10000000 #define BLOCK 256 #def…...

PointNet++论文复现(一)【PontNet网络模型代码详解 - 分类部分】

PontNet网络模型代码详解 - 分类部分 专栏持续更新中!关注博主查看后续部分! 分类模型的训练: ## e.g., pointnet2_ssg without normal features python train_classification.py --model pointnet2_cls_ssg --log_dir pointnet2_cls_ssg python test_classification.py…...

AI渣土车监测报警摄像机

随着城市建设的不断发展和交通运输的快速增长&#xff0c;渣土车作为建筑行业中不可或缺的运输工具&#xff0c;承担着大量的渣土运输任务。然而&#xff0c;由于渣土车在运输过程中存在超速、违规变道、碾压行人等交通安全问题&#xff0c;给道路交通和行人安全带来了严重的隐…...

Spring框架介绍及详细使用

前言 本篇文章将会对spring框架做出一个比较详细的讲解&#xff0c;并且每个知识点基本都会有例子演示&#xff0c;详细记录下了我在学习Spring时所了解到全部知识点。 在了解是什么spring之前&#xff0c;我们要先知道spring框架在开发时&#xff0c;服务器端采用三层架构的方…...

电脑PC下载SMART200PLC和SMART 触摸屏程序的方法

西门子S7-200smartPLC和smart触摸屏通过本笔记本下载程序时&#xff0c;笔记本和smart触摸屏需完成相应设置&#xff0c;即笔记本电脑和smart触摸屏需通过固定IP通信下载程序&#xff0c;设置方法如下&#xff0c;本文档设置之前默认已将电脑、PLC和触摸屏通过RJ45接口网线连接…...

学术探险家的秘密武器:书匠策AI,解锁课程论文新宇宙!

在学术的浩瀚星空中&#xff0c;每一位学子都是勇敢的探险家&#xff0c;怀揣着对知识的渴望&#xff0c;踏上探索未知的征途。而课程论文&#xff0c;则是这场探险中不可或缺的“星际导航图”&#xff0c;指引着我们穿越知识的迷雾&#xff0c;抵达真理的彼岸。但你是否曾遇到…...

C++ vcpkg:安装、使用、原理与选型

C vcpkg&#xff1a;安装、使用、原理与选型 vcpkg 是微软与社区维护的开源 C/C 包管理器&#xff0c;目标是统一第三方库的获取、构建与集成流程。它支持 Windows / Linux / macOS&#xff0c;并与 CMake、Visual Studio 等工具链深度协作。本文覆盖&#xff1a;是什么、如何…...

高效音频获取与资源管理:喜马拉雅下载工具全解析

高效音频获取与资源管理&#xff1a;喜马拉雅下载工具全解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 在数字内容消费时代&a…...

你还在用StreamingResponse硬扛LLM流式?FastAPI 2.0全新AsyncIteratorResponse实践已落地金融级AI客服(限前500名获取迁移checklist)

第一章&#xff1a;FastAPI 2.0异步流式响应的核心演进与金融级落地价值FastAPI 2.0 将 StreamingResponse 的底层调度机制从 ASGI 的同步迭代器封装&#xff0c;全面升级为原生协程驱动的异步生成器&#xff08;async def ... yield&#xff09;&#xff0c;彻底消除事件循环阻…...

终极Node.js无头浏览器测试指南:Zombie.js与Mocha集成实战

终极Node.js无头浏览器测试指南&#xff1a;Zombie.js与Mocha集成实战 【免费下载链接】zombie Insanely fast, full-stack, headless browser testing using node.js 项目地址: https://gitcode.com/gh_mirrors/zo/zombie 在当今快速发展的Web开发领域&#xff0c;Zomb…...

避开这些坑!算法工程师自学必备的5个高效学习法与工具推荐

避开这些坑&#xff01;算法工程师自学必备的5个高效学习法与工具推荐 1. 为什么大多数自学算法工程师会失败&#xff1f; 在咖啡馆见到老张时&#xff0c;他正对着电脑屏幕上的LeetCode题目发呆。这位转行学习算法的前机械工程师已经坚持了8个月&#xff0c;但最近一次面试还是…...

终极LrcHelper歌词下载指南:5分钟学会网易云音乐双语歌词获取与设备适配

终极LrcHelper歌词下载指南&#xff1a;5分钟学会网易云音乐双语歌词获取与设备适配 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 还在为找不到高质量双语歌词而烦恼吗&#xff1f;想…...

ComfyUI-VideoHelperSuite终极指南:掌握视频合成与AI工作流的核心技巧

ComfyUI-VideoHelperSuite终极指南&#xff1a;掌握视频合成与AI工作流的核心技巧 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 想要将AI生成的图像序列转化为流…...

别再只盯着高分框了!手把手教你用ByteTrack的‘两次匹配’搞定遮挡目标跟踪

ByteTrack实战&#xff1a;如何用两次匹配机制解决遮挡目标跟踪难题 在智慧交通路口&#xff0c;一辆公交车缓缓驶过摄像头&#xff0c;紧随其后的摩托车因完全被遮挡而"消失"在系统中&#xff1b;商场监控画面里&#xff0c;密集人群中突然蹲下系鞋带的顾客被算法判…...