ModbusRTU协议报文解析

news2024/12/27 17:18:15

ModbusRTU协议报文解析

报文格式:

设备地址/从站地址: 1个字节 指定目标设备地址(从站地址)

功能码:1个字节 功能码在modbus协议用于表示信息帧的功能,例如读取线圈状态、读取寄存器等。

数据: N个字节 后面数据根据不同功能码不同。

CRC校验:循环冗余校验码,用于检测报文完整性和数据错误

modbus 常用功能代码

十进制功能数据类型
01读取 多个线圈
02读取 多个离散量输入
03读取 多个保持寄存器16进制整型
04读取 多个输入寄存器16进制整型
05写入 单个线圈
06写入 单个寄存器16进制整型
15写入 多个线圈
16写入 多个寄存器16进制整型

功能码详解:

01 读取多个线圈

示例报文:

请求01 01 00 00 00 0A BC 0D

第1位 01 设备地址

第2位 01 功能码

第3,4位00 00起始地址

第5,6位 00 0A查询线圈长度,查询10个线圈

第7,8位BC 0D是CRC校验码

响应01 01 02 82 00 D9 5C

前2位设备地址和功能码,同请求发送的报文

第3位02是后面数据位的长度

第4-5位82 00都是数据位,长度与第3位的长度对应

第6,7位是CRC校验码

01查询线圈,每一个16进制数据表示8位线圈

第3位82 --> 1000 0010 第二位是1,第八位是1,对应地址从零开始,地址1是1,地址7是1,其余都为0

在这里插入图片描述

02读取 多个离散量输入

第二位功能码不同,报文其他格式都同01

03 读取 多个保持寄存器

寄存器读取与线圈的区别,响应数据,寄存器数据每两个字节表示1位,一次请求不能超过127个地址

示例报文:

请求01 03 00 00 00 0A C5 CD

第1位 01 设备地址

第2位 03 功能码

第3,4位00 00起始地址

第5,6位 00 0A查询寄存器长度,查询10个寄存器

第7,8位C5 CD是CRC校验码

响应:01 03 14 00 00 00 05 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 A8 3C

前2位设备地址和功能码,同请求发送的报文

第3位14是后面数据位的长度,每一个寄存器长度为2个字节,所以总长20(0x14)

第4位开始,20位都是数据位,第6,7位(数据位3,4)00 05,表示地址1数据为5,第10,1位(数据位7,8)00 0A,表示地址3值为

04 读取 多个输入寄存器

同03

05 (05H)写入 单个线圈

请求:01 05 00 05 FF 00 9C 3B

前两位还是设备地址和功能码

第3,4位 00 05 写入线圈的地址

第5,6位 写入的数据值 FF 00 表示置ON/1状态 ,00 00 表示置OFF/0状态

响应:01 05 00 05 FF 00 9C 3B

正常响应与请求报文一致

15(0FH)写入 多个线圈

请求:01 0F 00 05 00 0A 02 B2 00 91 CD

前两位还是设备地址和功能码

第3,4位 00 05写入的起始地址

第5,6位 00 0A写入线圈数量

第7位 02数据字节数量

第8,9位是数据 低地址字节在前

第10,11位是CRC校验码

数据位:

B2 00 —> 1011 0010 0000 00000

0C0B0A0908070605
10110010
14131211100F0E0D
00000000

在这里插入图片描述

06(06H) 写入 单个寄存器

请求:01 06 00 04 00 37 89 DD

向地址为4的寄存器写入55。

第1位 01 设备地址

第2位 06 功能码

第3,4位 00 04写入的起始地址

第5,6位 00 37写入寄存器的值

第7,8位89 DD位CRC校验码

响应:01 06 00 04 00 37 89 DD

写入成功,响应报文与写入报文一致

16(10H)写入多个寄存器

请求:01 10 00 05 00 02 04 00 14 00 21 B3 8C

从地址5开始写入两个寄存器,5寄存器写入20,3寄存器写入33

第1位 01 设备地址

第2位 10 功能码

第3,4位 00 05写入的起始地址

第5,6位 00 02写入的寄存器的数量

第7位04 是后面写入数据位的长度

第8-11位是数据

最后两位是CRC校验码

响应:01 10 00 05 00 02 51 C9

写入成功响应1-6位同发送报文,然后加CRC校验码,没有数据位

错误响应:

当发生通讯异常时,响应前1位仍然为modbus正常协议格式(设备地址),第2位响应功能码(请求功能码+0x80),第3位异常码,第4,5位为CRC校验码。

异常数据即包含异常码的数据:

目前使用的异常码是:01,02,03和04。

  • 响应功能码 = 请求功能码 + 0x80
  • 响应报文提供异常码显示出错原因。

常见异常码含义:

异常码名称含义
01非法功能对于服务器(或从站)来说,询问中接收到的功能码是不可允许的操作,可能是因为功能码仅适用于新设备而被选单元中不可实现同时,还指出服务器(或从站)在错误状态中处理这种请求,例如:它是未配置的,且要求返回寄存器值。
02地址非法对于服务器(或从站)来说,询问中接收的数据地址是不可允许的地址,特别是参考号和传输长度的组合是无效的。对于带有100个寄存器的控制器来说,偏移量96和长度4的请求会成功,而偏移量96和长度5的请求将产生异常码02。
03数据非法对于服务器(或从站)来说,询问中包括的值是不可允许的值。该值指示了组合请求剩余结构中的故障。例如:隐含长度是不正确的。modbus协议不知道任何特殊寄存器的任何特殊值的重要意义,寄存器中被提交存储的数据项有一个应用程序期望之外的值。
04从站设备故障当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。

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

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

相关文章

SSRF漏洞原理与案例分析

一、什么是SSRF漏洞 SSRF (Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请…

论文速递 | Management Science 4月文章合集(下)

编者按 在本系列文章中,我们梳理了运筹学顶刊Management Science在2024年4月份发布有关OR/OM以及相关应用的13篇文章的基本信息,旨在帮助读者快速洞察领域新动态。本文为第二部分(2/2)。 推荐文章1 ● 题目:Social Le…

HarmonyOS应用开发——Hello World

下载 HUAWEI DevEco Studio: https://developer.harmonyos.com/cn/develop/deveco-studio/#download 同意,进入配置页面: 配置下载源以及本地存放路径,包括nodejs和ohpm: 配置鸿蒙SDK路径: 接受协议: 确认无误后&#…

面试-细聊synchronized

1.线程安全问题的主要诱因: 存在多条共享数据(临界资源) 存在多条线程共同操作这些共享数据 解决问题的根本方法: 同一时刻有且仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后在对共享数据进行操作。 2.synchroized锁 分…

边缘计算为企业解决数据问题,提升业务效率和竞争力-天拓四方

企业在当前数字化时代面临着一系列具体的问题和挑战,这些问题往往与数据处理、实时响应、安全性以及运营成本等方面密切相关。边缘计算作为一种新兴的计算模型,能够有效地帮助企业解决这些问题,提升业务效率和竞争力。 首先,企业…

清华、北大与微软推出Glyph-ByT5-v2,精准生成文字海报,支持10种语言,效果炸裂

前言 在 AI 领域,文生图技术已经取得了令人惊叹的进展,但如何将文字精准地融入图像,并支持多种语言,一直是研究人员面临的挑战。为了解决这一难题,清华大学、北京大学和微软亚洲研究院的研究人员合作推出了 Glyph-ByT…

网络安全等级保护测评

网络安全等级保护 《GB17859 计算机信息系统安全保护等级划分准则》 规定计算机信息系统安全保护等级共分五级 《中华人民共和国网络安全法》 “国家实行网络安全等级保护制度。 等级测评 测评机构依据国家网络安全等级保护制度规定,按照有关 管理规范和…

泰迪智能科技与成都文理学院人工智能与大数据学院开展校企合作交流

近日,在推动高等教育与产业深度融合的背景下,成都文理学院人工智能与大数据学院携手广东泰迪智能科技股份有限公司开展“专业建设交流会”。人工智能与大数据学院院长胡念青、院长助理陈坚、骨干教师刘超超、孙沛、赵杰、文运、胡斌、邹杰出席本次交流会…

二级web基础操作题练习

---------要求--------- 利用HTML和CSS实现如图所示页面: ---------代码示例--------- 分析:该页面包含一个标题、一个副标题、“姓名信息”的表格,并且有一段文字提示用户仔细填写,使用内联CSS来控制HTML页面的视觉外观&…

TiDB 资源管控的对撞测试以及最佳实践架构

作者: GreenGuan 原文来源: https://tidb.net/blog/bc405c21 引言 TiDB 是一个存算分离的架构,资源管控对这种分离的架构来说实现确实有非常大的难度,TiDB 从 7.1 版本开始引入资源管控的概念,在社区也有不少伙伴测…

SpringUtils.getBean 空指针异常问题

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 今天在新的jeecg-boot里加入下面的代码 /*** 部门经理处理类** author nbacheng* date 2023-08-06*/ AllArgsConstructor Component("DepManagerHandler") DependsOn({"Sp…

el-form重置后input无法输入问题

新增用户遇到的问题: 如果你没有为 formData 设置默认值,而只是将其初始化为空对象 {},则在打开dialog时,正常输入, formdata会变成如下 但是,打开后,直接使用 resetFields 或直接清空表单&…

封装vuetify3中v-time-picker组件,并解决使用时分秒类型只能在修改秒之后v-model才会同步更新的问题

目前时间组件还属于实验室组件&#xff0c;要使用需要单独引入&#xff0c;具体使用方式查看官网 创建公共时间选择器组件 common-time-pickers.vue 子组件页面 <template><div><v-dialog v-model"props.timeItem.isShow" activator"parent&q…

vxe-list做列表虚拟滚动时,底部间距的优化

已知vxe-list在数据超出一定行时会自动启用纵向虚拟滚动配置&#xff0c;默认效果如图&#xff1a; 但是在滚动中我们发现有时列表底部间距不一致&#xff0c;而且会出现在感官上底部空白过多的情况&#xff1a; 这时候我们想让列表恰好显示完全应该怎么做呢&#xff0c;查看官…

DLS平台:GPT-5预计于2025年底至2026年初发布,将实现“博士水平”智能

摘要 OpenAI首席技术官Mira Murati近日透露&#xff0c;GPT-5可能推迟到2025年底或2026年初发布。这一消息打破了市场对GPT-5在2023年底或2024年夏季发布的预期。尽管推迟&#xff0c;但GPT-5将实现显著的性能飞跃&#xff0c;在特定任务中达到“博士水平”的智能。这标志着人…

.NET开源的实时应用监控系统 - WatchDog

项目介绍 WatchDog是一个开源&#xff08;MIT License&#xff09;、免费、针对ASP.Net Core Web应用程序和API的实时应用监控系统。开发者可以实时记录和查看他们的应用程序中的消息、事件、HTTP请求和响应&#xff0c;以及运行时捕获的异常。 项目工作原理 它利用SignalR进…

jupyter中如何看plt.plot的局部细节

在Jupyter中使用matplotlib时&#xff0c;如果你想要放大图表的某一部分&#xff0c;可以使用matplotlib的交互式方式查看局部细节。 %matplotlib notebook # 在Jupyter中使用交互式后端 import matplotlib.pyplot as plt import numpy as np# 生成数据 x np.linspace(0, 10…

C# 信号量的使用

学习来源&#xff1a;《.net core 底层入门》 第六章第9节&#xff1a;信号量 案例&#xff1a;主线程负责添加数据&#xff0c;子线程负责获取数据 使用SemaphoreSlim&#xff08;轻信号量&#xff09;实现&#xff1a; using System; using System.Collections.Generic; us…

Openldap安装部署及Gitea简单配置使用

Openldap安装部署及Gitea简单配置使用 一.安装Openldap #拉取镜像 docker pull osixia/openldap:latestdocker run \ -d \ -p 389:389 \ -p 636:636 \ -v /home/data/openldap/local:/usr/local/ldap \ -v /home/data/openldap/lib:/var/lib/ldap \ -v /home/data/openldap/s…

Python 3.12 环境搭建(Windows版)

目录 1. 下载Python 3.12安装包2. 安装Python 3.123. 验证安装5. &#xff08;可选&#xff09;配置其他开发工具 在Windows系统中搭建Python 3.11环境&#xff0c;可以按照以下步骤进行&#xff0c;以确保过程清晰且详细&#xff1a; 1. 下载Python 3.12安装包 打开浏览器&a…