ModbusRTU协议报文解析

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从站设备故障当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。

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

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

相关文章

C语言数据结构-分析期末选择题考点(一)

昔我往矣,杨柳依依 今我来思,雨雪霏霏 契子✨ 有道是:得选择题者得天下。临近考试,便总结一下数据结构选择题的常考题型吧,以及预测一下考点,一来是为了备考,二来可以水文。祝各位老铁 “挂柯南…

韩顺平0基础学java——第30天

p600-611 坦克大战! 艰难推进中 坦克大战-子弹 发射子弹 1.当发射一颗子弹后,就相当于启动一个线程 2.玩家拥有子弹对象,当按下J时,就启动发射行为(线程),让子弹不停移动,形成…

(上位机APP开发)调用华为云命令API接口给设备下发命令

一、功能说明 通过调用华为云IOT提供的命令下发API接口,实现下面界面上相同的功能。调用API接口给设备下发命令。 二、JavaScript代码 function sendUnlockCommand() {var requestUrl = "https://9bcf4cfd30.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/60…

全国首场以AI数字内容风控为主题的大会正式官宣,首批演讲嘉宾和议题揭晓!

曾经我们感叹的“AI迎来了iPhone时刻”,如今已变成“iPhone迎来了AI时刻”。前段时间,苹果全球开发者大会的召开,以及闻声而起的资本市场,无一不再次佐证了AI的无穷想象。 从OpenAI直播演示GPT-4o和谷歌的I/O开发者大会2024&…

空调制冷剂泄漏引发健康隐患,冷媒传感器实时监测至关重要

随着夏季的脚步逐渐临近,气温逐渐攀升,空调成为了许多家庭和企业必不可少的降温设备。然而,近年来多起因空调制冷剂泄漏导致的健康问题和安全事故,让人们开始重新审视空调使用安全的重要性。其中,冷媒传感器的实时监测…

智能AI在线人工智能对话源码系统 完整的代安装码+搭建部署教程

系统概述 智能 AI 在线人工智能对话源码系统是一款前沿的技术解决方案,它融合了人工智能的强大能力,为用户提供了一个高效、智能的对话平台。该系统基于先进的算法和模型,能够理解用户的输入,并以高度准确和自然的方式进行回应。…

深度测试中的隐藏面消除技术

by STANCH 标签:#计算机图形学 #深度测试 #深度测试 #隐藏面消除 1.概述 根据我们的日常经验,近处的物体会挡住后面的物体,在三维场景中通常通过深度缓冲来实现这样的效果。深度缓冲记录着屏幕对应的每个像素的深度值。模型一开始所在的局部…

计算机工具软件安装攻略:Chrome浏览器下载安装及使用

1 Chrome简介 Chrome是谷歌公司开发的一款免费网页浏览器它快速、稳定、安全拥有简洁流畅的界面和丰富的应用程序内置了强大的谷歌搜索引擎。Chrome使用Blink浏览器引擎和V8 JavaScript引擎支持多种插件和扩展程序让浏览网页更便捷。它可以与Android手机良好同步支持跨设备浏览…

AI降重技术:论文查重率的智能解决方案

现在大部分学校已经进入到论文查重降重的阶段了。如果查重率居高不下,延毕的威胁可能就在眼前。对于即将告别校园的学子们,这无疑是个噩梦。四年磨一剑,谁也不想在最后关头功亏一篑。 查重率过高,无非以下两种原因。要么是作为“…

中霖教育怎么样?中霖教育好吗?

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的,我们拥有专业且经验丰富的师资队伍,在教学过程中更注重个性化教学方式,针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

养殖自动化管理系统:开启智慧养殖新篇章

在现代农业的快速演进中,养殖业正经历一场前所未有的技术革命。养殖自动化管理系统,作为这场变革的前沿科技,正逐步成为推动行业高效、环保、可持续发展的关键力量。本文将深入探讨自动化养殖系统如何通过精准管理、智能监控、数据驱动决策&a…

无线领夹麦克风哪个牌子好,一篇教你无线领夹麦克风怎么挑选!

对于领夹麦克风这一术语,可能在非专业人士听来颇为生僻,然而在互联网行业工作者和短视频博主中,它却是一个常见的必备工具。如果你正计划成为一名短视频创作者,或者即将涉足视频拍摄与直播等互动媒体活动,那么熟悉并掌…

【数学建模】—【Python库】—【Numpy】—【学习】

目录 ​编辑 1. NumPy安装 2. ndarray对象 1. 创建ndarray 1.从列表或元组创建: 2.使用内置函数创建: 2. ndarray属性 3. 数组运算 1. 基本运算 2. 数学函数 3.统计函数 4. 数组索引与切片 1. 一维数组索引与切片 2.多维数组索引与切片 5.…

基于单片机的转速测量系统设计

【 摘 要 】 伴 随 着 我 国 科 学 技 术 水 平 的 快 速 发 展 , 当 前 我 国 对 单 片 机 的 转 速 测 量 系 统 控 制 这 一 领 域 也 越 来 越 趋 于 智 能 化 。 本 文 主 要 以 单 片 机 平 台 为 主 要 的 出 发 点 , 对 电 机 进 行 转 …

迁移学习——CycleGAN——循环一致性对抗网络

CycleGAN 1.导入需要的包2.数据加载(1)to_img 函数(2)数据加载(3)图像转换 3.随机读取图像进行预处理(1)函数参数(2)数据路径(3)读取文…

Springboot 前端传参后台接收当不存在参数bean对象时报错解决

后端接收代码 PostMapping(value "/updateUser") public String updateUser(RequestBody SysUser sysUser) {} 当前端传送多于的参数时报错如下: Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: U…

怎么改png图片的颜色?

要改变PNG图片的颜色,可以采取以下几种方法: 使用Photoshop等图像编辑软件:或者,也可以使用Photoshop中的选区工具(如矩形选框、椭圆选框、套索工具等)选中图片中需要改变颜色的部分,然后创建一…

小白上手AIGC-基于FC部署stable-diffusion

AIGC AIGC(人工智能创造内容)作为一种基于人工智能技术生成内容的新型创作模式。打破了过去大家对于AI的理解都是说只能涉足部分领域而无法涉足艺术或者是其他的创作领域的定律,现在的AIGC也能够创作内容了,而不再只是单纯的返回…

基于SpringBoot+Vue新闻管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

3_电机的发展及学习方法

一、电机组成及发展 1、什么是励磁? 在电磁学中,励磁是通过电流产生磁场的过程。 发电机或电动机由在磁场中旋转的转子组成。磁场可以由 永磁体或励磁线圈产生。对于带有励磁线圈的机器,电流必须在线圈中流动才能产生(激发&#x…