MODBUS-RTU报文模型

设备地址 功能代码 数据格式 CRC校验L CRC校验H
8bit 8bit N*8bit 8bit 8bit

一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。

主机对从机写数据操作

如果单片机接收到一个报文那么就对报文进行解析执行相应的处理

0x01 06 00 01 00 17 98 04
从机地址 功能号 数据地址 数据 CRC校验

主机对从机读数据操作

0x01 03 00 01 00 01 D5 CA
从机地址 功能号 数据地址 读取数据个数 CRC校验

单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的:

从机对主机返回内容

0x01 03 02 00 17 F8 4A
从机地址 功能号 数据字节个数 两个字节数据 CRC校验

这样MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。

MODBUS-RTU常用功能码

数据类型

读功能码

写功能码

对象类型

离散量输入

02

单个位

线圈状态

01

05,15

单个位

输入寄存器

04

16位字

保持寄存器

03

06,16

16位字

寄存器起始地址(起始数据地址)

数据类型

参数地址,寄存器编号

离散量输入

00001~0FFFF

线圈状态

10001~1FFFF

输入寄存器

30001~3FFFF

保持寄存器

40001~4FFFF

举例:
Modbus协议中寄存器地址从1开始,而实际存储中地址从0开始。假如要读取寄存器编号为40005(4为块编号,5为modbus中寄存器地址)的寄存器的数据,则应把00
04放入报文的地址域。寄存器定义,又名码表或者信息点表,应由厂家提供的。

寄存器编号

属性

定义

系数

备注

40001

RO

A相电压

从40048中读取电压系数

40002

RO

B相电压

如要读A相电压,则应将0x00 0x00放入寄存器起始地址域中。

报文实例

1、读40005、40006两个寄存器,假设从机地址为1

下行报文:01 03 00 04 00 02 85 ca

从机地址

功能码

寄存器起始地址

读取寄存器个数

CRC校验

01

03

00 04

00 02

85 ca

上行报文:01 03 04 00 00 00 00 21 33

从机地址

功能码

返回字节个数

寄存器40005数据

寄存器40006数据

CRC校验

01

03

04

00 00

00 00

21 33

2、向40005寄存器中写入0x12,0x34,假设从机地址为1

下行报文:01 06 00 04 00 01 12 34 4a b0

从机地址

功能码

寄存器起始地址

读取寄存器个数

要写入的数据

CRC校验

01

03

00 04

00 01

12 34

85 ca

上行报文:01 06 00 04 00 01 12 34 4a b0

从机地址

功能码

寄存器起始地址

读取寄存器个数

写入的数据

CRC校验

01

03

00 04

00 01

12 34

85 ca

MODBUS-RTU数据帧格式、报文实例相关推荐

  1. 如何看懂Modbus数据帧?Modbus RTU数据帧格式

    在介绍Modbus RTU数据帧格式之前,首先让我们先了解一下Modbus的通讯模式. Modbus通讯模式 Modbus协议是典型的主-从通讯结构,链路中只能有一台主设备,可以有多台从设备.主设备向 ...

  2. 如何利用CommMonitor串口监控,抓取串口Modbus RTU数据包

    今天来分享一下,如何抓取串口Modbus RTU数据包. 首先,下载CommMonitor的最新版v12.0,才支持Modbus RTU/ASCII协议分析功能, 同ModbusMonitor RTU ...

  3. readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例

    西门子PLC-1200的基于232串口的Modbus RTU通讯实例 这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus ...

  4. MODBUS通讯之数据帧格式解读(附资料下载)

    MODBUS通讯之数据帧格式解读(文末可免费下载文档) 一.背景 之前在一个项目上用代码分别实现了Modbus主站和Modbus从站(注:其实官方提供有现成的MODBUS从站库代码,并且支持大多数的嵌 ...

  5. Modbus协议栈应用实例之一:Modbus RTU主站应用

    自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例.所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,在这一篇中我们先来使用协议栈实现Modbu ...

  6. Modbus协议栈应用实例之二:Modbus RTU从站应用

    自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例.所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将使用协议栈实现一个Modbu ...

  7. MODBUS-RTU数据帧格式、报文解析

    MODBUS-RTU报文模型 设备地址 功能代码 数据格式 CRC校验L CRC校验H 8bit 8bit N*8bit 8bit 8bit 一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完 ...

  8. 【逗老师带你学IT】PRTG监控通过Python+Modbus RTU获取温湿度传感器数据

    前文[逗老师带你学IT]PRTG监控通过Python+TCP Modbus获取温湿度传感器数据中我们讲了如何通过Python读取支持TCP Modbus的传感器数据.本章我们讲解下如何读取Modbus ...

  9. 西门子200smart,MODBUS RTU轮训实例

    西门子200smart,MODBUS RTU轮训实例,读取 写入16台温控器数据,通过间接寻址,分配各温控器数据,程序已经过项目验证,注释详细,现PLC程序,附送温控器通讯协议文件. ID:48106 ...

最新文章

  1. oracle localhost连接
  2. matlab循环数组里的数据库,用于在matlab的python中循环数组
  3. 如何根据SAP Spartacus的页面快速找到实现的Angular Component
  4. Java编程经典10道_Java经典编程题50道之十二
  5. 搜狗浏览器智慧版_搜狗浏览器2019官方版下载,搜狗浏览器2019官方版 v3.2.1
  6. Non-managed pom.xml file found
  7. 【转】WinCC 6.0 声音报警
  8. 局域网计算机加密共享文件,局域网共享文件,小编教你局域网共享文件怎么加密...
  9. Netgear R6800 padavan稳定固件亲测
  10. 病毒RNA分离:病毒RNA提取试剂盒方案
  11. 【iOS开发】生成Appicon图标、为iOS应用添加图标
  12. matlab实现多目标测试集ZDT、DTLZ、MOP的最优理论前沿
  13. windows核心编程之 C/C++运行库注意事项
  14. C语言 输入今天的日期,显示明天的日期
  15. AndroidQ(八)Android Q隐私:更改相机和连接
  16. Python学习日志16 - 数据库SQL查询
  17. 罗切斯特计算机官网,罗切斯特
  18. sql server 学习教程
  19. 缓存Cache概述——缓存Cache1.1.1
  20. #XDOJ 172 构造表达式

热门文章

  1. 应用基准化分析—Benchmark
  2. 析达芬奇DM644x平台ARM中断处理流程
  3. October——I Will Talk
  4. 计算机设备管理器老是闪烁,Win7系统打开设备管理器后一直自动刷新解决方法...
  5. Linux操作系统同时启动多个服务脚本
  6. IM软件中的语音录制与播放【iOS】
  7. Mybatis中javaType和jdbcType对应关系
  8. 那么问题来了? int(a/b) 和 a//b 的区别在哪里呢? 例1:
  9. 永擎服务器主板稳定性,支持AMD 64核撕裂者、17块硬盘扩展,双万兆:永擎发布TRX40D8-2N2T高端服务器工作站主板...
  10. android翻盖手机双屏显示,使用双屏翻盖手机是一种怎样的体验?