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

【物联网-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.lryc.cn/news/2404353.html

相关文章:

  • Java应用10(客户端与服务器通信)
  • STM32学习之I2C(理论篇)
  • 【C/C++】algorithm清单以及适用场景
  • Python_day47
  • 如何在mac上安装podman
  • 小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
  • CppCon 2015 学习:Intro to the C++ Object Model
  • Go 语言中的 make 函数详解
  • 阿里云ACP云计算备考笔记 (4)——企业应用服务
  • 用 NGINX 构建高效 SMTP 代理`ngx_mail_smtp_module`
  • 【前端】常用组件的CSS
  • 【华为云学习与认证】以华为云物联网为基座的全栈开发(从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等)的系统性学习与认证路线
  • OpenCV 键盘响应来切换图像
  • ARM SMMUv3简介(一)
  • C#提取CAN ASC文件时间戳:实现与性能优化
  • hadoop集群datanode启动显示init failed,不能解析hostname
  • Android 视图系统入门指南
  • 浏览器工作原理05 [#] 渲染流程(上):HTML、CSS和JavaScript是如何变成页面的
  • 青少年编程与数学 01-011 系统软件简介 03 NetWare操作系统
  • AI编程提示词
  • Android学习总结-GetX库常见问题和解决方案
  • |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面
  • React 中 HTML 插入的全场景实践与安全指南
  • 一键更新依赖全指南:Flutter、Node.js、Kotlin、Java、Go、Python 等主流语言全覆盖
  • Java异步编程难题拆解技术
  • NoSQL 之 Redis 配置与优化
  • pikachu靶场通关笔记20 SQL注入03-搜索型注入(GET)
  • 产品笔试专业名词梳理
  • 【前端】es6相关,柯里化
  • 51单片机基础部分——矩阵按键检测