当前位置: 首页 > news >正文

【物联网-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  校验码

相关文章:

  • 【Go语言基础【14】】defer与异常处理(panic、recover)
  • 【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
  • 关于datetime获取时间的问题
  • n8n + AI Agent:AI 自动化生成测试用例并支持导出 Excel
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • PLC有脉冲输出,但伺服电机无法旋转
  • 数组名作为函数参数详解 —— 指针退化及遍历应用示例
  • 一款“短小精悍的”手机录屏软件
  • Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决
  • Postman测试学习(1)
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • frida简介及环境搭建
  • 「完整」AI文档库 | 5月4日发布,东吴证券:《AI Agent深度二:2025 Agent元年,AI从L2向L3发展》
  • C# 关于CS0433错误的解决方法
  • c++ 单例模式
  • Qwen 大模型-对话模板中system与user的区别解析
  • 孙溟㠭浅析清朝“徽派”篆刻
  • 抗辐照MCU在卫星载荷电机控制器中的实践探索
  • Doris 数据库深度解析:架构、原理与实战应用
  • 自动驾驶---SD图导航的规划策略
  • 烟台建设工程信息网站/产品的推广及宣传思路
  • 萍乡做网站的公司有哪些/北京seo公司网站
  • 网站注册系统用什么做/如何提高网站排名
  • wordpress手机移动版/关键词seo排名
  • 1元做网站方案/哪个公司的网站制作
  • 苏州网站建设科技有限公司/360优化大师app