C# easymodbus

库介绍

EasyModbus是用于 .NET 和 Java 平台上的Modbus TCP/UDP/RTU通讯协议库,支持多种编程语言,如C#、VB.NET、Java、C ++与更多C#的变体,如Unity、Mono、.NET Core等等。

EasyModbus的Java版本至少需要Java 7,而C#版本兼容 .NET Framework 4.0和更高版本。

 库的优势

1、EasyModbus 通过简单易用的 API 提供 Modbus 套接字功能并可轻松地扩展自己的库。

2、EasyModbus 有多种语言版本,并可与多种平台配合使用,最适合需要跨平台功能的项目。

3、EasyModbus 的速度和效率也值得称赞。 库支持 Modbus 操作代码 1,2,3,4,5,6,15,16,22和23,包括读写线圈(位)/输入状态、读写保持/输入寄存器、读写多个位/多个保持寄存器等。

应用场景

EasyModbus 库适用于许多 Modbus 协议 TCP/UDP/RTU 的控制任务。 它可以在监控和控制网络设备诸如传感器、测量仪表和定时器方面大有作为。 这使得它成为许多工业和自动化项目中不可或缺的一部分。

EasyModbus库使用方法

EasyModbus库提供了一些常用的方法,以实现Modbus TCP和RTU通信。下面介绍一些常用的方法及其用法。

1. ModbusClient类

ModbusClient类用于创建Modbus客户端对象,以实现Modbus通信。使用该类需要先引用EasyModbus.dll程序集。

// 创建Modbus TCP客户端对象 网口

ModbusClient modbusClient = new ModbusClient("192.168.1.1", 502);

// 创建Modbus RTU客户端对象 串口

ModbusClient modbusClient = new ModbusClient("COM1");

// 网口 串口区别 读取或设置值

使用串口时 读取或设置值 第一次获取不到返回值 会连续发送4次,如果还是获取不到就报错失败

使用网口时,读取或设置值只会发送一次,获取不到就报错

2. Connect方法

Connect方法用于连接Modbus设备。该方法需要在创建Modbus客户端对象后调用。

// 连接Modbus设备

modbusClient.Connect();

3. Disconnect方法

Disconnect方法用于断开Modbus设备连接。

// 断开Modbus设备连接

modbusClient.Disconnect();

4. ReadCoils方法  01功能码

ReadCoils方法用于读取线圈状态,即输出线圈的状态。该方法需要传入起始地址和长度参数。

// 读取线圈状态

bool[] coils = modbusClient.ReadCoils(0, 8);

5. ReadDiscreteInputs方法  02功能码

ReadDiscreteInputs方法用于读取离散输入状态,即输入线圈的状态。该方法需要传入起始地址和长度参数。

// 读取离散输入状态

bool[] inputs = modbusClient.ReadDiscreteInputs(0, 8);

6. ReadHoldingRegisters方法  03功能码

ReadHoldingRegisters方法用于读取保持寄存器的内容。该方法需要传入起始地址和长度参数。

// 读取保持寄存器的内容

int[] registers = modbusClient.ReadHoldingRegisters(0, 8);

7. ReadInputRegisters方法  04功能码

ReadInputRegisters方法用于读取输入寄存器的内容。该方法需要传入起始地址和长度参数。

// 读取输入寄存器的内容

int[] inputs = modbusClient.ReadInputRegisters(0, 8);

8. WriteSingleCoil方法  05功能码

WriteSingleCoil方法用于写入单个线圈的状态。该方法需要传入线圈地址和状态参数。

// 写入单个线圈的状态

modbusClient.WriteSingleCoil(0, true);

9. WriteSingleRegister方法  06功能码

WriteSingleRegister方法用于写入单个寄存器的值。该方法需要传入寄存器地址和值参数。

// 写入单个寄存器的值

modbusClient.WriteSingleRegister(0, 123);

10. WriteMultipleRegisters方法  16功能码

WriteSingleRegister方法用于写入多个寄存器的值。该方法需要传入寄存器地址和值参数。

modbusClient.WriteMultipleRegisters(0, new int[2] { 3,8 });

总结

EasyModbus提供了丰富的方法,以简化Modbus TCP和RTU通信的开发。开发人员可以根据需要选择相应的方法,并按照上述使用方法进行调用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欧科云链研究院探析Facebook稳定币发行经历会不会在PayPal重演

引言 作者最近的报告-探析PayPal发行稳定币是否会重蹈Facebook覆辙-近期被英国的金融时报(中文版)刊登。由于该报告在欧科云链研究院内部反响较好,下面就带大家简单的剖析这篇报告的主要内容。 *这篇文章主要由对比分析(已删减&a…

网络编程 day 7

1、将.txt表数据导入数据库中 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__:",__LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//以只读的方式打开dict.txt文件FILE* fd;if((fdfopen("./dict.txt&q…

20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转

登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…

Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 xlwings模块详解 1、快速入门1、打开Excel2、创建工作簿2.1、使用工作簿2.2、操作…

【css】z-index与层叠上下文

z-index属性用来设置元素的堆叠顺序&#xff0c;使用z-index有一个大的前提&#xff1a;z-index所作用元素的样式列表中必须有position属性并且属性值为absolute、relative或fixed中的一个&#xff0c;否则z-index无效。 层叠上下文 MDN讲解 我们给元素设置的z-index都是有一…

面试中的时间管理:如何在有限时间内展示最大价值

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C# Windows系统一键关机源代码共享

C# Windows系统一键关机源代码&#xff0c;可移植(复制粘贴)到的自己的项目中 exe可执行文件下载 C# 源码下载 using System; using System.Windows; using System.Windows.Threading;namespace 关机 {/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary&g…

SVN 集中式版本管理平台

1. SVN 命令行工具下载地址 https://www.visualsvn.com/downloads/ 2. 下载SVN 命令行工具后&#xff0c;解压后就可以了&#xff0c;不需要安装的 3. 将bin 文件添加到系统环境变量中&#xff0c;不知道怎么打开系统环境变量的自己问度娘 4. 添加到系统环境变量中&#xff0c;…

21.CSS的动态圆形进度条

效果 源码 <!doctype html> <html><head><meta charset="utf-8"><title>Animated Circular Progress | CSS Only</title><link rel="stylesheet" href="style.css"></head><body><di…

详解python的

详解& 在Python中&#xff0c;使用&符号可以求取两种数据类型的交集&#xff1a; 集合&#xff08;Set&#xff09;&#xff1a;你可以使用&来计算两个集合的交集。例如&#xff1a; set1 {1, 2, 3, 4} set2 {3, 4, 5, 6} common_elements set1 & set2 pri…

C/C++清空控制台输入缓冲区

今天我再写一个群聊小demo的时候发现了一个问题&#xff0c;我在客户端首先使用了scanf输入了昵称 然后开启了发消息线程和收消息线程&#xff0c;在发消息线程函数如下&#xff1a; unsigned WINAPI sendMsg(void* arg) {//发送消息给服务端SOCKET ClientSocket *((SOCKET*)…

K8S自动化运维容器Docker集群

K8S&#xff1a;K8S自动化运维容器化(Docker)集群 一.k8s概述 1.k8s是什么 &#xff08;1&#xff09;K8S全程为Kubernetes&#xff0c;由于K到S直接有8个字母简称为K8S。 &#xff08;2&#xff09;版本&#xff1a;目前一般是1.18~1.2.0&#xff0c;后续可能会到1.24-1.2…

vue-cli配置proxy代理,操作代理请求和代理响应onProxyReq,onProxyRes

vue.config.js 有时候需要在代理请求中添加一些请求头或者在修改响应,那么可以通过onProxyReq和onProxyRes来修改代理请求,函数签名均为 (proxyReq|proxyRes,req,res)>{}如果要修改响应,那么还应配置proxy.xxx.selfHandleResponse:true 具体配置如下: module.exports {…

「解析」YOLOv5 classify分类模板

学习深度学习有些时间了&#xff0c;相信很多小伙伴都已经接触 图像分类、目标检测甚至图像分割(语义分割)等算法了&#xff0c;相信大部分小伙伴都是从分类入门&#xff0c;接触各式各样的 Backbone算法开启自己的炼丹之路。 但是炼丹并非全是 Backbone&#xff0c;更多的是各…

从零学算法110

110.给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1…

为C# Console应用化个妆

说到Windows的cmd&#xff0c;刻板印象就是黑底白字的命令行界面。跟Linux花花绿绿的界面比&#xff0c;似乎单调了许多。但其实C#开发的Console应用也可以摆脱单调非黑即白的UI。 最近遇到个需求&#xff0c;要在一堆纯文本文件里找指定的关键字&#xff08;后续还要人肉判断…

LMD-恶意软件检测工具

LMD是Linux恶意软件扫描器&#xff0c;以GNU GLPv2许可发布。 官方地址&#xff1a;https://www.rfxn.com 下载软件包命令&#xff1a; wget https://www.rfxn.com/downloads/maldetect-current.tar.gz tar命令解包后进入其目录。 安装命令如下&#xff1a; ./install.sh …

〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇

✨ 目录 &#x1f388; 反推提示词 / Tagger&#x1f388; 反推提示词 Tagger 使用&#x1f388; 英文提示词自动补全 / Booru tag&#x1f388; 英文提示词自动补全 Booru tag 使用&#x1f388; 中文提示词自动补全 / tagcomplete&#x1f388; 中文提示词自动补全 tagcomple…

说说IO多路复用

分析&回答 IO多路复用 I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态(对应空管塔里面的Fight progress strip槽)来同时管理多个I/O流。直白点说&#xff1a;多路指的是多个socket连接&#xff0c;复用指的是复用一个…

如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送

最近在写注册功能的自动发送邮箱告知验证码的功能&#xff0c;无奈根本没有学过前端&#xff0c;只有写Qt的qss基础&#xff0c;只好借助网页设计自己想要的邮箱格式&#xff0c;最终效果如下: 也推销一下自己的项目ShaderLab&#xff0c;可运行ShaderToy上的大部分着色器代码&…