C# Modbus

应用程序配置的保存

1 右键应用设置 → 属性 → 添加键值对和用户范围,应用程序和用户范围 

2 获取配置参数:Properties.Settings.Default.参数名

3 修改修改参数 roperties.Settings.Default["A"] = 10 最后调用 save进行保存

1.什么是modbus? 包含的内容

包含的三种协议: modbus-RTU:  modbus-ASCII:   modbus-TCP: 

大部分的硬件都支持modbus-RTU(远程终端设备)协议,对数据在传输过程和接收过程格式的规定

2.modbus作用?

用来通信;  如果没有协议:发送数据,接收方不知道这些数据的作用

 协议方就是指定数据的准则的

3 modbus-RTU: 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。因此,很容易将 Modbus 兼容设备集成到新的或现有的监控应用程序中,并具有即时的软件支持。

4 modbus 的主从技术()?

Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。

modbus中的帧结构?
帧就是系统 Master和Slave 设备之间发送的信息,master发送的叫做命令帧,Slave返回的叫做应答帧
帧的结构 = 地址位 + 功能码 + 数据 + CRC校验

地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途

功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,
所以不同功能码对应不同功能。

数据:根据功能码不同,有不同结构,在下面的实例中有说明。
校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;
如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了

Modbus-RTU协议一般我们用的最多功能码就是`03`​和`06`​,大部分都是用modbus来查询传感器上的信息用`03`​查询功能码(读寄存器),

如果需要修改传感器寄存器的值就用`06`​修改功能码(写寄存器),其他的不需要过多关注

6 上位机需要选择合适的 Modbus 协议栈、配置 Modbus 通信参数、建立 Modbus 通信连接、发送 Modbus 命令帧、接收 Modbus 响应帧和关闭 Modbus 通信连接等步骤。

应用程序配置的读取,保存

  #region ① 读取,修改 // 读取setting配置的参数// Properties.Settings.Default.参数名this.Text = Properties.Settings.Default.A; // 修改窗体标题this.BackColor = Properties.Settings.Default.B;// 修改窗体背景// 修改参数 应用程序范围参数 不能在运行的时候修改:用户范围的参数可以在运行时候修改Properties.Settings.Default["A"] = "31马赫的威慑力,奥特之王都追不上";Properties.Settings.Default["B"] = Color.PaleGreen;Properties.Settings.Default.Save(); // 保存修改#endregion

Modbus协议

            // 初始化串口参数配置serialPort1.PortName = "COM5"; // 串口名字serialPort1.BaudRate = 4800; // 波特率serialPort1.Parity = System.IO.Ports.Parity.None;// 无奇偶校检serialPort1.DataBits = 8; // 数据位置serialPort1.StopBits = System.IO.Ports.StopBits.One; // 停止位serialPort1.Open(); // 开放serialPort1.DataReceived += serialPort1_DataReceived;}// 接收到数据的方法 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e){byte[] body = new byte[20];serialPort1.Read(body, 0, body.Length);// 读取应答帧// 01 03 02 06 C3 FB B5 // 01 地址码// 03 功能码// 02 长度// 06 C3 数据位// FB B5 校检码// 将数据位解析为10进制Console.WriteLine(body[3] * 256 + body[4]);// 06C3     真正的值// 06 C3, C#是小端模式,这个数组被传递进去之后会被认为06为低位,C3为高位,按照C306进行计算// 先获取中间的两个字节, 再反转,使低位在前,高位在后byte[] value = body.Skip(3).Take(2).Reverse().ToArray();Console.WriteLine(BitConverter.ToUInt16(value, 0));BeginInvoke(new Action(() =>{label1.Text = BitConverter.ToUInt16(value, 0).ToString();}));}public static byte[] CRCCalc(byte[] data){//crc计算赋初始值int crc = 0xffff;for (int i = 0; i < data.Length; i++){crc = crc ^ data[i];for (int j = 0; j < 8; j++){int temp;temp = crc & 1;crc = crc >> 1;crc = crc & 0x7fff;if (temp == 1){crc = crc ^ 0xa001;}crc = crc & 0xffff;}}//CRC寄存器的高低位进行互换byte[] crc16 = new byte[2];//CRC寄存器的高8位变成低8位,crc16[1] = (byte)((crc >> 8) & 0xff);//CRC寄存器的低8位变成高8位crc16[0] = (byte)(crc & 0xff);return crc16;}private void button1_Click(object sender, EventArgs e){// 组织回答帧CO2byte[] bs = new byte[]{0x01,// 地址码 占1个字节0x03,// 功能码 读取 查询功能 占1个字节0x00,0x08,  // 起始地址,占2个字节0x00,0x01,// 数据长度 1个长度 占2个字节// 校检码 2个字节};// 2 通过crc进行计算校检码byte[] abc = CRCCalc(bs); //  0x05,0xc8bs = bs.Concat(abc).ToArray();// 把bs和校检码进行合并//3 发送serialPort1.Write(bs, 0, bs.Length);}}
}

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

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

相关文章

Java基础---复习01

main方法 一个程序有且只有一个main方法&#xff0c;main方法是java程序的唯一入口。 修饰符 修饰类修饰方法修饰域public都可以访问都可以访问private私有类只能本类只能本类protected子类可以继承、访问&#xff0c;同包下的类也可以访问子类可以继承、访问&#xff0c;同…

mmdetection中的Spatial-Transform-Decoupling项目部署,debug记录

1.安装环境 在这之前&#xff0c;因为是新的服务器&#xff0c;很多包没有安装 安装conda&#xff0c;在root/anaconda/bin 巴拉巴拉 vim~/bash.rc 按ESC 按&#xff1a;wq 删除是Delete sudo apt install libnccl22.7.8-1cuda11.0 libnccl-dev2.7.8-1cuda11.0bug1&#xff1…

基于单片机的空调控制器的设计

摘 要 &#xff1a; 以单片机为核心的空调控制器因其体积小 、 成本低 、 功能强 、 简便易行而得到广泛应用 。 本设计通过 &#xff21;&#xff34;&#xff18;&#xff19;&#xff33;&#xff15;&#xff12; 控制&#xff24;&#xff33;&#xff11;&#xff18;&a…

matlab:对带参数a关于x的方程求解

题目 讲解 简洁对各个式子的内部含义用浅显易懂的话语总结出来了&#xff0c;耐心体会 f(a) (x)exp(x)x^ax^(sqrt(x))-100;%因为下面的fzero的第一个数需要一个fun&#xff0c;所以这里有两个句柄&#xff0c;第一个a是输入的&#xff0c;第二个x是需要被解出的 A0:0.1:2;%创…

服务器该如何抵御CC攻击

CC攻击也是分布式拒绝服务攻击的一种类型&#xff0c;同时CC攻击也属于网络流量攻击&#xff0c;但是CC攻击主要是用来攻击网站页面的&#xff0c;向着目标网络服务器发送一些请求&#xff0c;以此来消耗目标网络服务器的资源&#xff0c;导致目标服务器无法响应正常请求&#…

星光云VR全景系统源码

星光云VR全景系统源码 体验地址请查看

智能视频监控中心 - 详细介绍

目录 一、概述 &#xff08;一&#xff09;定义 &#xff08;二&#xff09;作用 1、系统安全性 2、整体管理效率 3、数据支持决策 4、促进企业集团化和智慧城市发展 二、原理和组成 &#xff08;一&#xff09;原理 &#xff08;二&#xff09;组网图 &#xff08;…

Java与Chrome下使用Selenium进行元素定位与操作详解

摘要&#xff1a;本文将详细介绍如何利用Java语言结合Chrome浏览器使用Selenium框架进行Web自动化测试中的关键技术&#xff0c;包括元素定位、常用操作、Driver对象方法、元素等待策略以及特殊元素处理方法。 1. 简介 在当今软件开发和测试领域&#xff0c;Web自动化测试扮演…

2024年交安安全员考试题库及答案

一、单选题 111.下列关于钢筋对焊机施工安全规定&#xff0c;错误的是&#xff08;&#xff09;。 A.多台并列安装对焊机的间距不得小于lm B.钢筋对焊机应安装在室内或防雨棚内 C.现场应设可靠的接地、接零装置 D.对焊作业闪光区四周应设置挡板 答案&#xff1a;A 112.混…

【从零到一,如何搭建本地AI大模型】

摘要: 本文主要记录这一段时间对本地大模型搭建的心得。 作为一个资深程序员,在AI席卷全球的时候,深深感觉到了一丝危机感,不禁有一个想法不断在脑海闪现:我会不会真的哪一天被AI给取代了? 从哪入手 程序员出生的我,掌握了很多语言,从前端到数据库,再到运维,基本都…

Python面试题:在 Python 中,如何处理文件操作?

在Python中&#xff0c;文件操作&#xff08;如读取和写入文件&#xff09;是一个常见的任务。Python标准库提供了内置的函数和上下文管理器来简化文件操作。以下是处理文件操作的一些基本方法和示例&#xff1a; 打开和关闭文件 使用open()函数打开文件。该函数返回一个文件…

基于 Qt、FFmpeg 和 OpenGL 开发跨平台安卓实时投屏软件 QtScrcpy

文章目录 基于 Qt、FFmpeg 和 OpenGL 开发跨平台安卓实时投屏软件 QtScrcpy项目详细介绍1. 项目背景2. 功能特点3. 关键代码解读1. 引入必要的头文件和初始化函数2. VideoWidget 类的定义3. OpenGL 初始化和绘制函数4. 视频解码和渲染线程5. 主函数示例结语基于 Qt、FFmpeg 和 …

初识html——网页基础知识

Web相关术语 静态网页&#xff1a;只能浏览&#xff0c;不能实现客户端和服务器端的交流互动动态网页&#xff1a;网站页面随用户的输入而变化&#xff0c;能与客户端交流互动本地站点&#xff1a;一个在我们自己的计算机上&#xff0c;存储网站所有文件的临时文件夹远程站点&a…

一 、分布式软总线原理

分布式软总线(Distributed Soft Bus)是HarmonyOS(鸿蒙操作系统)中的关键技术之一,它负责提供设备间统一的分布式通信能力,使得不同终端设备能够像在同一台设备上一样进行高速、低延迟的数据传输和任务协同。在C++实现分布式软总线时,主要涉及以下几个核心部分: 设备发现…

【大模型】在大语言模型的璀璨星河中寻找道德的北极星

在大语言模型的璀璨星河中寻找道德的北极星 引言一、概念界定二、隐私保护的挑战2.1 数据来源的道德考量2.2 敏感信息的泄露风险 三、偏见与歧视的隐忧3.1 训练数据的偏见传递3.2 内容生成的不公倾向 四、责任归属的模糊地带4.1 生成内容的责任界定4.2 自动化决策的伦理考量 五…

【elasticsearch】IK分词器添加自定义词库,然后更新现有的索引

进入elasticsearch中的plugins位置&#xff0c;找到ik分词器插件&#xff0c;进入ik插件的config文件夹&#xff0c;当中有一个IKAnalyzer.cfg.xml配置文件。使用vim编辑器修改配置文件&#xff1a; vim IKAnalyzer.cfg.xml 配置文件如下&#xff08;添加了自定义字典的位置&…

领导有权利查看员工的电脑吗?违法吗?

在数字化办公环境中&#xff0c;企业领导是否可以查看员工的电脑成为了一个备受关注的话题。随着远程工作的普及和技术的发展&#xff0c;这个问题变得尤为复杂。 下面就由小编为大家分享关于企业领导查看员工电脑的权利范围&#xff0c;以及这种行为在何种情况下可能触犯法律…

美业SaaS系统有哪些?美业管理系统如何选?连锁美业门店收银系统源码

2024年业内较为知名、专业的美业门店管理系统软件有哪些&#xff1f;十大美业收银系统排名分享&#xff1a; 1.博弈美业 2.美务通 3.博卡 4.有赞美业 5.美管加 6.茂日软件 7.美问 8.伊智软件 9.剑琅管家 10.银豹美业 美业系统的选择取决于您的具体需求和业务规模。在选择美业系…

Windows下载安装配置并使用Redis(保姆级教程)

文章目录 1、Redis的下载与安装 2、Redis的使用 3、Redis的图形界面客户端 4、Redis开机自启动 1、Redis的下载与安装 下载Redis&#xff1a;https://pan.baidu.com/s/1zBonkO2y6AZeqCdRe0W5ow?pwd9999 提取码: 9999 下载后直接解压就可以使用了 2、Redis的使用 我们…

客户购买行为预测--Python数据分析

1、背景 客户购买行为预测是许多企业和组织所关注的一个重要问题&#xff0c;可以帮助它们更好地了解其客户的需求并制定更有效的销售和营销策略、优化产品营销等方面。 python可以通过使用各类库&#xff08;如numpy, pandas, matplotlib, scikit-learn等&#xff09;构建用于…