【物联网-ModBus-RTU

物联网-ModBus-RTU

  • ■ 优秀博主链接
  • ■ ModBus-RTU介绍
    • ■(1)帧结构
    • ■(2)查询功能码 0x03
    • ■(3)修改单个寄存器功能码 0x06
    • ■(4)Modbus RTU 串口收发数据分析

■ 优秀博主链接

Modbus RTU通讯笔记

■ ModBus-RTU介绍

发送:从机的地址+我要干嘛的功能码+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码
回复:从机的地址+主机发我的功能码+要发送给主机数据的字节数+数据+校验码

■(1)帧结构

一个字节一个字节N个字节两个字节
地址
----------------
功能码
------------------------
数据
------------------------------------------------------------------
校验
--------------
01
读取线圈状态
取得一组逻辑线圈的当前状态(ON/OFF)
02
读取输入状态
取得一组开关输入的当前状态(ON/OFF)
03
读取保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
04
读取输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
05
强置单线圈
强置一个逻辑线圈的通断状态
06
预置单寄存器
放置一个特定的二进制值到一个单寄存器中
07
读取异常状态
取得8个内部线圈的通断状态
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器
放置一系列特定的二进制值到一系列多寄存器中
17
报告从机标识
可使主机判断编址从机的类型及该从机运行指示灯的状态

■(2)查询功能码 0x03

一个寄存器两个字节

主机发送: 01 03 00 00 00 01 84 0A
从机回复: 01 03 02 19 98 B2 7E
一个字节一个字节N个字节两个字节
地址功能码数据校验
发送
01
传感器的地址
03
查询功能码
00 00
起始寄存器地址
00 01
代码查询寄存器个数
84 0A
循环冗余校验
回复
01
传感器的地址
03
查询功能码
02
后面2个数据
19 98
寄存器的值
B2 7E
循环冗余校验

例如:
发送长度为 00 04 个寄存器个数,返回 08
在这里插入图片描述

■(3)修改单个寄存器功能码 0x06

06代表修改单个寄存器功能,一个寄存器为两个字节。

主机发送: 01 06 00 00 00 01 48 0A
从机回复: 01 06 00 00 00 01 48 0A

一个字节一个字节N个字节两个字节
发送
010600 00
00 01
48 0A
从机地址功能码00 00 要修改寄存器地址
00 01 要修改的值
循环冗余校验
回复
010600 00
00 01
48 0A
从机返回给主机自己的地址修改单个寄存器功能00 00代表修改的起始寄存器地址
00 01代表修改的值
循环冗余校验

■(4)Modbus RTU 串口收发数据分析

主发和接收数据分析

==========poll 读取的第0个数据为20
Tx:01 03 00 00 00 0A C5 CD 
Rx:01 03 14 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 96 9401     地址
03     功能码  03:读取保持寄存器
00 00  查的寄存器的地址
00 0A  查的寄存器地址的个数 1010*2 = 20字节
C5 CD  校验码01     地址
03     功能码  03:读取保持寄存器
14     长度 0x14 == 20个字节
00 14 00 00 00 00 00 00 00 00  查的寄存器地址的个数  14 == 0x14 == 20
00 00 00 00 00 00 00 00 00 00  查的寄存器地址的个数
96 94  校验码==========poll 读取的第0个数据为10
Tx:01 03 00 00 00 0A C5 CD 
Rx:01 03 14 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38 BE Tx: --------------
01     地址
03     功能码  03:读取保持寄存器
00 00  查的寄存器的地址
00 0A  查的寄存器地址的个数 1010*2 = 20字节
C5 CD  校验码Rx: --------------
01     地址
03     功能码  03:读取保持寄存器
14     长度 0x14 == 20个字节
00 0A 00 00 00 00 00 00 00 00 查的寄存器地址的个数  0A == 0x0A == 10
00 00 00 00 00 00 00 00 00 00 查的寄存器地址的个数
38 BE  校验码

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

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

相关文章

03.数据类型

数据类型 数据长什么样数据需要多少空间来存放系统内置数据类型用户定义数据类型 选择正确的数据类型对于获得高性能至关重要 三大原则: 更小的通常更好,尽量使用可正确存储数据的最小数据类型简单就好,简单数据类型的操作通常需要更少的CPU周期尽量…

达梦数据库字段类型 varchar 转 text

达梦数据库字段类型 varchar 转 text 业务场景问题浮现问题处理方式一 总结 业务场景 在初次创建达梦数据库表的时候,仅仅设定了基础的表字段。然而,在预估字段值的长度时,常常会出现不够准确的情况。例如,我创建了一张参数配置表…

MyBatis 缓存机制源码深度解析:一级缓存与二级缓存

MyBatis 缓存机制源码深度解析:一级缓存与二级缓存 一、一级缓存1.1 逻辑位置与核心源码解析1.2 一级缓存容器:PerpetualCache1.3 createCacheKey 方法与缓存命中1.4 命中与失效时机1.5 使用方式 二、二级缓存2.1 逻辑位置与核心源码解析2.2 查询流程、命…

【题解-Acwing】1097. 池塘计数

题目:1097. 池塘计数 题目描述 农夫约翰有一片 N∗M 的矩形土地。 最近,由于降雨的原因,部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内,如果包含雨水,则用”W”表示,如果不含…

基于Flask框架的前后端分离项目开发流程是怎样的?

基于Flask框架的前后端分离项目开发流程可分为需求分析、架构设计、并行开发、集成测试和部署上线五个阶段。以下是详细步骤和技术要点: 一、需求分析与规划 1. 明确项目边界 功能范围:确定核心功能(如用户认证、数据管理、支付流程&#…

板凳-------Mysql cookbook学习 (十--2)

5.12 模式匹配中的大小写问题 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…

编程实验篇--线性探测哈希表

线性探测哈希表性能测试实验报告 1. 实验目的 编程实现线性探测哈希表。编程测试线性探测哈希表。了解线性探测哈希表的性能特征,并运行程序进行验证。 2. 实验背景与理论基础 哈希表是一种高效的数据结构,用于实现符号表(Symbol Table&a…

使用Python提取PDF元数据的完整指南

PDF文档中包含着丰富的元数据信息,这些信息对文档管理和数据分析具有重要意义。本文将详细介绍如何利用Python高效提取PDF元数据,并对比主流技术方案的优劣。 ## 一、PDF元数据概述 PDF元数据(Metadata)是包含在文档中的结构化信…

【量化】策略交易类型

通过查找相关资料,这里罗列了一些常见的策略交易类型,如下: 📊 技术分析类策略 均线交叉策略(SMA、EMA)动量策略(Momentum)相对强弱指数策略(RSI)随机指标策…

【Go语言基础【17】】切片:一种动态数组

文章目录 零、概述一、切片基础1、切片的结构2、切片的创建方式3、切片的操作与扩容 二、切片的拷贝与共享内存三、切片作为函数参数 Go语言的切片(slice)是一种动态数组,提供了灵活、高效的元素序列操作。它基于底层数组实现,通过…

MybatisPlus使用DB静态工具出现找不到实体类的报错

报错:Not Found TableInfoCache. 原因在于没有创建实体类对应的mapper,并且该mapper还必须继承baseMapper。 猜测大概的原理应该是DB会去查找实体类对应的mapper,然后通过mapper去查找对应的实体类。

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …

LLMs 系列科普文(15)

前面 14 篇文章,就是本系列科普文中想介绍的大部分技术内容。重点讲述了训练这些模型的三个主要阶段和范式:预训练、监督微调和强化学习。 我向你们展示了这些步骤大致对应于我们已用于教导儿童的过程。具体来说,我们将预训练比作通过阅读说…

深入理解汇编语言中的顺序与分支结构

本文将结合Visual Studio环境配置、顺序结构编程和分支结构实现,全面解析汇编语言中的核心编程概念。通过实际案例演示无符号/有符号数处理、分段函数实现和逻辑表达式短路计算等关键技术。 一、汇编环境配置回顾(Win32MASM) 在Visual Studi…

Selenium4+Python的web自动化测试框架

一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE:Firefo…

React 样式方案与状态方案初探

React 本身只提供了基础 UI 层开发范式,其他特性的支持需要借助相关社区方案实现。本文将介绍 React 应用体系中样式方案与状态方案的主流选择,帮助开发者根据项目需求做出合适的选择。 1. React 样式方案 1.1. 内联样式 (Inline Styles) 通过 style …

PHP中如何定义常量以及常量和变量的主要区别

在PHP编程中,常量和变量是存储数据的两种重要方式。常量在定义后值不能改变,而变量的值可以在程序执行过程中发生变化。本文将详细介绍如何在PHP中定义常量,并深入探讨常量和变量的主要区别。 一、PHP中定义常量 1. 使用 define 函数定义常…

奈飞工厂官网,国内Netflix影视在线看|中文网页电脑版入口

奈飞工厂是一个专注于提供免费Netflix影视资源的在线播放平台,致力于为国内用户提供的Netflix热门影视内容。该平台的资源与Netflix官网基本同步,涵盖电影、电视剧、动漫和综艺等多个领域。奈飞工厂的界面简洁流畅,资源分类清晰,方…

CMS内容管理系统的设计与实现:架构设计

一、整体架构方案 &#xff08;一&#xff09;架构方案选择&#xff08;根据项目规模&#xff09; 1. 中小型项目推荐方案&#xff08;团队<10人&#xff09; #mermaid-svg-cjzaHpptY8pYWnzo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:1…

嵌入式里的时间魔法:RTC 与 BKP 深度拆解

文章目录 RTC实时时钟与BKPUnix时间戳UTC/GMT时间戳转换时间戳转换BKP简介BKP基本结构1. 电池供电模块&#xff08;VBAT 输入&#xff09;2. 侵入检测模块&#xff08;TAMPER 输入&#xff09;3. 时钟输出模块&#xff08;RTC 输出&#xff09;4. 内部寄存器组 RTC简介RTC时钟源…