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

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, 关注【工业可视化】带你一起学~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LinkedIn账号为什么被封?被封后如何解决?

近期会有一些小伙伴说自己遇到了帐号无法登录的情况&#xff0c;其实出现领英帐号被封号(被限制登录)主要会有两类情况&#xff0c;今天就给大家分享一下如果被封该如何解决&#xff0c;强烈建议收藏。 在电脑领英官网或者手机领英APP上&#xff0c;输入领英帐号密码点击登录后…

数据结构(五)单链表专题

在开始之前&#xff0c;我先来给大家讲一下顺序表与链表的区别&#xff1a; 它们在堆上存储的差异&#xff1a; 我们可以很容易的知道&#xff0c;循序表是连续的有序的&#xff0c;但链表是杂乱的&#xff0c;它们通过地址彼此联系起来。 1. 链表的概念及结构 概念&#xff1…

【光伏科普】光伏投融资计算的意义

光伏产业&#xff0c;作为清洁能源的重要组成部分&#xff0c;近年来在全球范围内得到了广泛的关注与发展。而在光伏项目的实施过程中&#xff0c;投融资计算显得尤为重要。本文旨在探讨光伏投融资计算的意义&#xff0c;以及它如何影响光伏产业的可持续发展。 首先&#xff0c…

无法找到filesystem头文件

无法找到filesystem头文件 一、前言 这段时间接老板命令&#xff0c;做目标识别模型的嵌入式部署。需要将模型运行环境编译后打包到瑞芯微开发板上运行&#xff0c;在此之前我对原C文件做过修改&#xff0c;为了能实现与厂商提供的数据接口对接。 我在用CMake打包过程中&…

jmeter接口测试及详细步骤以及项目实战教程

在接口测试项目实战中&#xff0c;JMeter是一款非常强大和流行的自动化测试工具&#xff0c;它可以测试各种类型的应用程序&#xff0c;并通过采样和报告来识别性能瓶颈和API的问题。本文将为你提供一个基于实际项目的JMeter接口测试项目实战教程&#xff0c;指导你如何使用JMe…

腾讯VS网易:一场不见终局的游戏未来之战

国内游戏霸主腾讯最近赚足了眼球。 总体上看&#xff0c;腾讯手握“游戏社交”两大王牌&#xff0c;最近发布的财报十分亮眼&#xff0c;其2023年总营收和净利润分别同比增长10%和36%&#xff0c;展现了互联网巨头的强劲活力。 然而巨头亦有焦虑&#xff0c;增值服务营收同比…

数学算法(算法竞赛、蓝桥杯)--分解质因数、唯一分解定理

1、B站视频链接&#xff1a;G07 分解质因数 唯一分解定理 试除法_哔哩哔哩_bilibili 题目链接&#xff1a;质因子分解 - 洛谷 #include <bits/stdc.h> using namespace std;int n; int a[100010];//质因子的个数void decompose(int x){for(int i2;i*i<x;i){//i增加&a…

Fastgpt 无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题这里)

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01; FastGPT是非常实用并且相当厉害的个人知识库AI项目&#xff0c;项目是非常…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口&#xff0c;遇到一个接口总是报405错误&#xff0c;有对接经验的开发应该都知道是请求方式不对&#xff0c;假如接口定义为POST请求的&#xff0c;但是客户端却用GET请求&#xff0c;这时候就会报这个错误。Android客户端那边使用xUtils框架…

扫雷大师:用C语言揭秘自动展开盘面与智能扫雷策略

目录 扫雷自动展开盘面智能扫雷更优策略完整代码 扫雷 扫雷游戏是一款经典的单人电脑游戏&#xff0c;其主要规则如下&#xff1a; 游戏目标&#xff1a;游戏的目标是在不触发任何地雷的情况下&#xff0c;找出所有非雷区域。玩家需要根据格子周围的数字来推断哪些格子含有地雷…

MFC(二)集成基础控件

目录 OnCreateCStatic【标签&#xff0c;图片】CEdit【文本框&#xff0c;密码框&#xff0c;数值框&#xff0c;文本区】CButton【按钮&#xff0c;单选按钮&#xff0c;多选按钮】CComboBox【下拉列表&#xff0c;列表】CSliderCtrl【滑动条】CListCtrl【表格】CAnimateCtrl【…

第十二届蓝桥杯JavaB组省赛真题 - ASC

解题思路&#xff1a; 这是目前为止做到过最简单的了 public class Main {public static void main(String[] args) {int res L-A 65;System.out.print(res);} }

东联直播音效助手

东方联盟创始人郭盛华为广大主播免费开发的一款专用的音效场控工具&#xff0c;通过这款软件&#xff0c;主播使用各种精彩的音效&#xff0c;避免直播间过于低沉和尴尬&#xff0c;从而更好的拉近观众的距离。音效有掌声、爆笑声、尖叫声、关注点赞、任务等各种音效. 【东方联…

【win10 win11添加右键】git bash

打开注册表编辑器。 按下Win键 R&#xff0c;然后输入”regedit”并按下回车键来打开注册表编辑器。计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\git_bash\command2. 导航到注册表路径&#xff1a;依次展开”HKEY_CLASSES_ROOT\Directory\Background\shell”。右键…

电商系列之仓储发货

疫情3年&#xff0c;大多数人都将购买需求转移到了线上。同时由于暴涨的订单数量、还在恢复中的物流运输等因素&#xff0c;导致用户的收货时间缓慢甚至是发货时间、收货时间延后。那么笔者就从订单的仓库作业流程入手&#xff0c;分析了用户订单发货延后的原因。 受到最近疫情…

2024年软件测试,“我“从初级到高级进阶,不再走弯路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 现在2024年&#…

【git分支管理策略】如何高效的管理好代码版本

目录 1.分支管理策略 2.我用的分支管理策略 3.一些常见问题 1.分支管理策略 分支管理策略就是一些经过实践后总结出来的可靠的分支管理的办法&#xff0c;让分支之间能科学合理、高效的进行协作&#xff0c;帮助我们在整个开发流程中合理的管理好代码版本。 目前有两套Git…

mysql索引失效

什么是索引失效 在MySQL中&#xff0c;索引失效指的是查询语句无法有效地使用索引&#xff0c;而必须进行全表扫描。索引失效可能会导致查询性能下降&#xff0c;特别是在处理大量数据时。 索引失效的原因 1.索引列进行了运算或函数操作 如果对索引列进行了运算或使用了函数…

第十四届蓝桥杯C++A组(A/B/C/D/E/H)

文章目录 A.幸运数B.有奖问答C.平方差D.更小的数E.颜色平衡树H.异或和之和 A.幸运数 /*纯暴力*/ #include <bits/stdc.h>using namespace std;void solve() {int sum 0;for(int i 1; i < 100000000; i ){int n i;int a[11];int j 1;for(; n ! 0; j ){a[j] n % …

基于Python的Climate Indices库计算SPI01:不同站点不同时间尺度的SPI的计算

热闹的尽头是孤寂&#xff0c;在虚浮的欢闹中保持自己&#xff0c;纷繁世间&#xff0c;可报期望者不过二三。 文章目录 前言1. 概述2.1 目的2.2 说明 2. 版本2.1 天津&#xff0c;2024年1月18日&#xff0c;Version1 3. 微信公众号GISRSGeography 一、数据1. 输入数据2. 输出…