Modbus通讯协议
Modbus通讯协议
Modbus协议是一种用于电子控制器之间的通信协议,它允许不同类型的设备之间进行通信,以便进行数据交换和控制。Modbus协议最初为可编程逻辑控制器(PLC)通信开发,现已广泛应用于工业自动化领域,包括但不限于工业控制、楼宇自动化、能源管理等领域。该协议支持多种通信接口和物理介质,包括串行(RS-232、RS-485等)、以太网以及无线通信等,使其能够适应各种不同的应用场景。
Modbus用来干什么?
Modbus协议就是用来进行通信的一种限制,客户端给服务器发送一条命令帧,服务器接收到命令帧后给客户端返回一条响应帧。 比如:客户端给服务器发送一条123,当服务器接收到的消息也就是123,如果遵守Modbus协议的话它可能就是其他意思,具体需要根据客户端发送的请求帧来判断。 (说白了就是通过modbus协议告诉服务器你要干什么)
Modbus 主/从技术
Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。
Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。
Modbus RTU 协议使用格式化的消息在主机和从机之间进行通信。消息由系统 Master 发起并发送到 Slave 设备。然后,从站以请求的数据进行响应,或者确认它执行了请求的功能。所有进出主站的消息都包含一个两字节(16 位)CRC(循环冗余校验)校验和值,用于错误检查。如果将无效请求传输到 Modbus 从站,则会返回一个字节(8 位)错误代码值,说明请求错误的原因。
Modbus 主站消息包含几个重要的信息。每条消息都以接受消息的设备的从地址开始。接下来是要执行的功能编号(或命令)。后面是指定函数正确执行所需的任何数据。从地址是一个单字节(8 位)值,可用值范围在 0-247 之间。Modbus 功能号也是一个字节值,并且在协议中定义了许多标准化功能号。支持所请求功能所需的任何数据值的长度将是一个或多个字节。Modbus 从站响应消息将包含响应的从站地址、功能编号和主站请求的任何必要数据。
Modbus协议的主要特点:
灵活性:支持多种通信模式,如ASCII、RTU(串行通信)和TCP/IP(网络通信),这使得Modbus协议能够适应不同的通信需求和数据传输方式。
主从架构:系统中有一个主节点(Master)和多个从节点(Slave),主节点负责发起请求,从节点响应请求,这种架构使得Modbus协议非常适合于需要集中控制和分散监测的应用场景。
数据校验:为了确保数据传输的准确性,Modbus协议采用了数据校验机制,如奇偶校验、LRC校验和CRC校验等,以减少数据传输错误的可能性。
功能码:Modbus协议使用功能码(FC)来定义不同的操作类型,如读取寄存器值、写入寄存器值等,这些功能码使得主节点可以精确控制从节点的行为。
modbus通信的过程?
上位机需要选择合适的 Modbus 协议栈、配置 Modbus 通信参数、建立 Modbus 通信连接、发送 Modbus 命令帧、接收 Modbus 响应帧和关闭 Modbus 通信连接等步骤。
Modbus的三种协议
Modbus-RTU协议
Modbus RTU 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。因此,很容易将 Modbus 兼容设备集成到新的或现有的监控应用程序中,并具有即时的软件支持。
帧结构:设备地址、功能码、数据和CRC校验字段。

常用功能码:Modbus-RTU协议定义了一系列常用的功能码,用于执行不同的操作,如读取保持寄存器、写入单个寄存器、写入多个寄存器等。
(1). 功能码-0x03读保持寄存器:该功能码用于从设备中读取一个或多个保持寄存器的值。
(2). 功能码-0x06写单个寄存器:该功能码用于向设备中写入一个保持寄存器的值。
(3). 功能码-0x10写多个寄存器:该功能码用于向设备中写入多个连续的保持寄存器的值。
Modbus-ASCII协议
Modbus-ASCII是一种基于ASCII码的Modbus通信协议。数据以ASCII字符形式传输,每个字节由两个ASCII字符表示。
帧形式:起始符号、设备地址、功能码、数据和LRC校验字段。
Modbus-TCP协议
Modbus TCP是Modbus协议的一种变体,它使用TCP/IP网络进行设备之间的通信。Modbus TCP协议帧与Modbus RTU或Modbus ASCII不同,因为它包含了TCP头部、IP头部以及可能的以太网头部。
Modbus TCP协议的帧结构如下:
(1). MBAP头(Modbus应用数据单元):
事务处理标识:客户端生成的随机数,由服务器返回,可用于匹配请求和响应。
协议标识:在Modbus TCP中,该字段固定是00 00。
数据长度:请求或响应数据的长度,包括单元标识符、功能代码、数据和校验和,但不包括MBAP头。
单元标识符:在Modbus TCP中,一般设置为0或者连续的从设备地址。
(2). 功能代码:表示要执行的功能。
(3). 数据:根据功能代码不同,数据字段的长度也不同。
(4). 校验和:使用CRC(循环冗余校验)算法得到的校验和,用于检测传输过程中数据的完整性。
| 事务处理标识符 | 协议标识 | 数据长度 | 单元标识符 | 功能码 | 数据字段 | 效验 |
| 00 01 | 00 00 | 00 06 | 01 | 03 | 00 00 00 0A | 9378 |
本文部分借鉴与网络,如有侵权请联系删除!!!
相关文章:
Modbus通讯协议
Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议,它允许不同类型的设备之间进行通信,以便进行数据交换和控制。Modbus协议最初为可编程逻辑控制器(PLC)通信开发,现已广泛应用于工业自动化领…...
fal.ai发布超分辨率模型——AuraSR V2
今天,我们发布了单步 GAN 升频器的第二个版本: AuraSR。 我们在上个月发布了 AuraSR v1,社区的反响让我们深受鼓舞,因此我们立即开始了新版本的训练。 AuraSR 基于 Adobe Gigagan 论文,以 lucidrain 的实现为起点。Gi…...
SYD88xx代码复位不成功和解决办法
原来的复位代码如下: void ota_manage(void){#ifdef _OTA_if(ota_state){switch(ota_state){case 1 : #if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)dbg_printf("start FwErase\r\n");#endifCmdFwErase();#if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)db…...
加油,为Vue3提供一个可媲美Angular的ioc容器
为什么要为Vue3提供ioc容器 Vue3因其出色的响应式系统,以及便利的功能特性,完全胜任大型业务系统的开发。但是,我们不仅要能做到,而且要做得更好。大型业务系统的关键就是解耦合,从而减缓shi山代码的生长。而ioc容器是…...
RS485 CAN SPI IIC UART RS232这些通信协议传输距离、传输速度对比给出比较顺序-笔记(面试必备)
各类通信协议(RS485、CAN、SPI、I2C、UART、RS232)的传输距离和传输速度各有不同,适用于不同的应用场景。以下是这些通信协议的传输距离和传输速度的对比及排序: 传输距离比较(从长到短) RS485 最大传输距…...
高频JMeter软件测试面试题
近期,有很多粉丝在催更关于Jmeter的面试题,索性抽空整理了一波,以下是一些高频JMeter面试题,拿走不谢~ 一、JMeter的工作原理 JMeter就像一群将请求发送到目标服务器的用户一样,它收集来自目标服务器的响应以及其他统计…...
iptables netfilter
iptables -L --line...
如何使用Python自动发送邮件?
Python 提供了强大的内置库 smtplib 和 email,让我们能够轻松地发送各种类型的电子邮件。本指南将带你逐步了解如何使用 Python 发送邮件,从简单文本邮件到包含 HTML 内容、附件和内嵌图片的复杂邮件。 1. 准备工作: 1.1 安装必要的库 确保…...
C#中读写INI配置文件
在作应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等。由于Xml的兴起,现在的配置文件大都是以xml文档来存储。比如Visual Studio.Net自身的配置文件Mashine.config,Asp.Net的配置文件Web.Config࿰…...
深入解析Spring中的@RequestMapping注解
RequestMapping是Spring框架中的一个核心注解,用于映射Web请求到处理器类的方法上。本文将详细介绍RequestMapping注解的用途、支持的属性以及如何在Spring MVC和Spring WebFlux中应用它。 1. 引言 在Spring框架中,RequestMapping是一个用于简化请求映…...
Python:lambda函数
lambda函数解释 Lambda函数,也被称为匿名函数,是Python等编程语言中用于创建简单、一次性使用的函数对象的一种快捷方式。在Python中,lambda函数使用lambda关键字定义,其后紧跟一个或多个参数(用逗号分隔)…...
MySQL查询语句
1. 一般查询 select * from table; 创建表:并插入数据,为下面的查询做例 create table info ( id int primary key, name varchar(10), score decimal(5,2), address varchar(20), hobbid int(5));insert into info values(1,liuyi,80,bei…...
远程连接服务
1.SSH协议握手流程 TCP三次握手后当前主机与远程服务器之间协商用哪种协议版本,ssh有两个(ssh1/ssh2)一般用ssh2,协商完后进入到密钥交换的阶段,客户端会生成一个公钥和一个私钥,公钥用来上锁,私…...
系统架构设计师——软件开发方法分类
分类 软件开发方法是指软件开发过程所遵循的办法和步骤,从不同的角度可以对软件开发方法进行不同的分类。 按照开发风范 软件开发过程中,开发方法的选择对项目的成功至关重要。这些方法可按照特定的开发风范分为自顶向下和自底向上两种主要策略&#…...
《看漫画学Python》全彩PDF教程,495页深度解析,零基础也能轻松上手!
前言 说起编程语言,Python 也许不是使用最广的,但一定是现在被谈论最多的。随着近年大数据、人工智能的兴起,Python 越来越多的出现在人们的视野中。 在各家公司里,Python 还常被用来做快速原型开发,以便更快验证产品…...
用户画像系列——Spark任务调优实践
在画像标签的加工和写入hbase中,我们采用了spark来快速进行处理和写入。但是在实际线上运行的过程中,仍然遇到了不少问题,下面来总结下遇到的一些问题 1.数据倾斜问题 其实spark 数据倾斜思路和hive、mapreduce 数据倾斜思路处理类似&…...
前端面试宝典【HTML篇】【4】
欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…...
【UbuntuDebian安装MySQL】在线安装MySQL8
云计算:腾讯云轻量服务器 系统:Ubuntu-v22 1.更新系统软件包列表 打开终端并运行以下命令来确保你的系统软件包列表是最新的: sudo apt update2.安装 MySQL 存储库 MySQL 提供了官方的 APT 存储库,可以确保你安装的是最新版本…...
PDF翻译神器:这四款可以实现一键搞定,留学党必备!
外文的阅读还是需要一定的语言功底,现在大家也对外文越来越重视起来了,但是借助一些翻译工具进行翻译可以很大程度地提升工作的效率,就算是遇到批量的文件处理也可以一键翻译出来,所以今天借此文章整理了四款好用的pdf翻译工具&am…...
精心准备的高水平的博客【点评语】,来抄啊!
大家好,我是一名_全栈_测试开发工程师,已经开源一套【自动化测试框架】和【测试管理平台】,欢迎大家关注我,和我一起【分享测试知识,交流测试技术,趣聊行业热点】。 第 1 条 这篇博客文章如同灯塔般照亮了技…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...
高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...
