【物联网-ModBus-RTU

物联网-ModBus-RTU

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

一个寄存器两个字节

c 复制代码
主机发送: 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个字节 两个字节
发送
01 06 00 00 00 01 48 0A
从机地址 功能码 00 00 要修改寄存器地址 00 01 要修改的值 循环冗余校验
回复
01 06 00 00 00 01 48 0A
从机返回给主机自己的地址 修改单个寄存器功能 00 00代表修改的起始寄存器地址 00 01代表修改的值 循环冗余校验

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

主发和接收数据分析

c 复制代码
==========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 94

01     地址
03     功能码  03:读取保持寄存器
00 00  查的寄存器的地址
00 0A  查的寄存器地址的个数 10个 10*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  查的寄存器地址的个数 10个 10*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  校验码
相关推荐
调试优选官4 天前
IoT物联网系统定制落地实践:从设备接入、协议网关、平台分层到业务应用,如何做技术选型、交付验收、责任边界与长期运维成本评估及迁移安排
物联网·iot·成本分析
华允物联-HUAIOT4 天前
工业路由器和DTU在联网方式上的区别
物联网
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
码流子4 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
XUEYUAN52125 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
绿蕉5 天前
配电房的“AI听诊师”:可视化声纹局放智能巡检系统与通讯保障
物联网
CHENKONG_CK5 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19925 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
做萤石二次开发的哈哈5 天前
海康商用音频主机接入萤石蓝海 AIoT:多路拾音、矩阵路由、分区广播、应急广播四类技能,IP 网络广播系统多端开发实战
物联网·音频矩阵·萤石开放平台·ip网络广播·蓝海aiot一站式工作台·aiot开发·公共广播
wuyk5555 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网