当前位置:网站首页 > R语言数据分析 > 正文

modbus rtu 报文(modbus rtu 报文解析)



报文格式:

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

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

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

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

modbus 常用功能代码

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

01 读取多个线圈

示例报文:

请求

第1位 01 设备地址

第2位 01 功能码

第3,4位起始地址

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

第7,8位是CRC校验码

响应

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

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

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

第6,7位是CRC校验码

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

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

在这里插入图片描述

02读取 多个离散量输入

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

03 读取 多个保持寄存器

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

示例报文:

请求

第1位 01 设备地址

第2位 03 功能码

第3,4位起始地址

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

第7,8位是CRC校验码

响应:

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

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

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

04 读取 多个输入寄存器

同03

05 (05H)写入 单个线圈

请求:

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

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

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

响应:

正常响应与请求报文一致

15(0FH)写入 多个线圈

请求:

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

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

第5,6位写入线圈数量

第7位 数据字节数量

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

第10,11位是CRC校验码

数据位:

—> 1011 0010 0000 00000

位 0C 0B 0A 09 08 07 06 05 值 1 0 1 1 0 0 1 0 位 14 13 12 11 10 0F 0E 0D 值 0 0 0 0 0 0 0 0

在这里插入图片描述

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

请求:

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

第1位 01 设备地址

第2位 06 功能码

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

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

第7,8位位CRC校验码

响应:

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

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

请求:

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

第1位 01 设备地址

第2位 功能码

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

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

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

第8-11位是数据

最后两位是CRC校验码

响应:

写入成功响应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 从站设备故障 当服务器(或从站)正在设法执行请求的操作时,产生不可重新获得的差错。
到此这篇modbus rtu 报文(modbus rtu 报文解析)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • hprof文件怎么打开(hprof文件怎么打开linux)2025-07-15 16:54:09
  • hprof文件分析内存问题(hprof文件怎么产生的)2025-07-15 16:54:09
  • 网页传送文字(怎么把网页的文字导入word文档)2025-07-15 16:54:09
  • swagger2关闭配置(swagger2config)2025-07-15 16:54:09
  • yarn 常用命令(yarn logs -applicationid命令)2025-07-15 16:54:09
  • 破解加密的word文档(破解加密word文档代码)2025-07-15 16:54:09
  • dockerdesktop运行错误(dockerdesktop出现错误)2025-07-15 16:54:09
  • spring 快速入门(spring入门经典)2025-07-15 16:54:09
  • 为什么很少人用grid布局(grid布局现在能用吗)2025-07-15 16:54:09
  • nfs server用到的文件和目录(nfs server 配置)2025-07-15 16:54:09
  • 全屏图片