网络协议详解:Modbus-RTU
创作时间:
作者:
@小白创作中心
网络协议详解:Modbus-RTU
引用
CSDN
1.
https://blog.csdn.net/weixin_45100742/article/details/139118909
Modbus-RTU是一种广泛应用于工业自动化领域的串行通信协议,主要用于监控和控制设备之间的数据通信。本文将详细介绍Modbus-RTU协议的基本概念、消息格式、寄存器种类以及各种功能码的具体使用方法,帮助读者深入理解该协议的工作原理和应用场景。
1、简介
- Modbus-RTU(Remote Terminal Unit)是一种串行通信协议,广泛用于工业自动化领域,特别是在监控和控制设备之间进行数据通信。
- Modbus-RTU是无状态协议,每次通信都是独立的,不维护通信状态信息。
- Modbus-RTU的通信结构是基于主从(Master-Slave)模式的。一个主设备(Master)可以控制多个从设备(Slave),只允许主设备发起请求,从机被动响应。
2、消息格式
- 高字节在前,低字节在后
3、Modbus寄存器种类说明
线圈寄存器(Coils)
功能:表示单个位的输出状态,常用于DO数字量输出,常用场景有控制继电器、晶体管或其他二进制输出设备。
地址范围:00001到09999
读/写方式:可读可写
数据类型:单个位(1位)按位操作
功能码:
读线圈状态:功能码 01H
写单个线圈:功能码 05H
写多个线圈:功能码 0FH
离散输入寄存器(Discrete Inputs)
功能:表示单个位的输入状态,常用于DI数字量输入,通过外部设置改变输入状态。常用场景有按钮开关、光电开关等。
地址范围:10001到19999
读/写方式:只读
数据类型:单个位(1位)按位操作
功能码:
读离散输入状态:功能码 02H
输入寄存器(Input Registers)
功能:存储连续的16位数据,常用于AI模拟量输入,控制器运行时从外部设备获取的参数。常用场景有传感器或测量设备的输入。
地址范围:30001到39999
读/写方式:只读
数据类型:16位(2字节)按字节操作
功能码:
读输入寄存器:功能码 04H
保持寄存器(Holding Registers)
功能:存储连续的16位数据,常用于AO模拟量输出,输出参数或保持参数。常用场景有存储设备的配置参数或输出数据。
地址范围:40001到49999
读/写方式:可读可写
数据类型:16位(2字节)按字节操作
功能码:
读保持寄存器:功能码 03H
写单个保持寄存器:功能码 06H
写多个保持寄存器:功能码 10H
4、功能码01H
- 01H:读线圈状态。读取一组线圈的状态,返回一个字节数组,其中每个位表示一个线圈的状态。
发送报文
- 含义:从机地址为01H,寄存器地址为0000H,读取寄存器数量0008H为8个,最后两位为校验位。
响应报文
- 含义:返回字节数量01H为1个字节,01功能码为按位读取,需要把返回的数据转换为二进制。
- 数据1为0FH,转换为二进制为:(线圈0007H-0000H)
5、功能码02H
- 02H:读离散输入状态。读取一组离散输入的状态,返回一个字节数组,其中每个位表示一个输入的状态。
发送报文
- 含义:从机地址为01H,寄存器地址为0000H,读取寄存器数量0008H为8个,最后两位为校验位。
- 【注】这里的寄存器地址为偏移地址,逻辑地址是从10001开始的。
响应报文
- 含义:返回字节数量01H为1个字节,02功能码为按位读取,需要把返回的数据转换为二进制。
- 数据1为0FH,转换为二进制为:(线圈0007H-0000H)
6、功能码03H
- 03H:读保持寄存器。读取一组保持寄存器的值,每个寄存器返回16位(2字节)数据。
发送报文
- 含义:0000H寄存器开始,读取2个寄存器。
响应报文
- 含义:返回字节数04H为4个字节(2个寄存器,一个寄存器返回2个字节),数据1为0001H(通道1),数据2为0000H(通道2)。
7、功能码04H
- 04H:读输入寄存器。读取一组输入寄存器的值,每个寄存器返回16位(2字节)数据。
发送报文
- 含义:0000H寄存器开始,读取2个寄存器。
响应报文
- 含义:返回4个字节,数据1为0001H,数据2为0000H。
8、功能码05H
- 05H:写单个线圈。设置一个线圈的状态,写入一个位(0或1)。
发送报文和响应报文一致
- 含义:寄存器地址为0000H,向寄存器写入FF00H控制线圈吸合(写入0000H控制线圈断开)。
9、功能码06H
- 06H:写单个保持寄存器。设置一个保持寄存器的值,写入16位(2字节)数据。
发送报文和响应报文一致
- 含义:寄存器地址为0000H,向寄存器写入值为0001H。
10、功能码0FH
- 0FH:写多个线圈。设置多个线圈的状态,写入一个字节数组,其中每个位表示一个线圈的状态。
发送报文
- 含义:寄存器起始地址为0000H,线圈寄存器数量为0004H,写入字节数为01H,写入数据为0FH(需要转换为二进制)
- 这意味着从起始地址开始的四个线圈都要设置为1(打开)。
响应报文
- 含义:寄存器起始地址为0000H,线圈寄存器数量为0004H。
11、功能码10H
- 10H:写多个保持寄存器。设置多个保持寄存器的值,写入多个16位(2字节)数据。
发送报文
- 含义:寄存器起始地址为0000H,寄存器数量为2个,写2个保持寄存器需要4个字节,数据1为0001H,数据2为0001H。
响应报文
- 含义:寄存器起始地址为0000H,保持寄存器数量为2个。
热门推荐
酱油背后的秘密:一张配料表告诉你如何挑选自然酿造
一个主机如何接两个显示器 详细教程分享
苏州穹窿山上真观:千年道韵与皇家气象
2024年社保公积金调整方案解读与影响分析
出口发货代理如何完成清关?2025年必知的七大关键问题
动态IP与静态IP的区别,你选对了吗?
千年古刹大慈恩寺:历史与现代的交织
什么情况下可以起诉物业?业主维权情形全解析
叮!您有一份立案指南待查收
7个步骤,搞定结肠息肉镜下切除术!
肠镜检查发现有息肉需不需要手术
肚脐眼下方隐隐作痛的原因及注意事项
RNA动植物保护剂创新产业联盟成立,开启农业绿色革命新篇章
广东省精准医学应用学会举办肿瘤防治宣传周系列健康科普直播活动
Win11多显示器操作怎么设置?如何优化显示效果?
如何判断室内门的质量?这些细节帮你辨别优质门
承担连带责任
世界卫生组织喊你“赶紧把家里的盐换了”!能省出很多看病钱
在多地都有过工作,最后养老金怎么能在天津领取?
一公里修车的费用如何确定?确定这个费用需要考虑哪些因素?
【原】武侠小说中,那些稀奇百怪、眼花缭乱的武林派别
全红婵世界杯决赛领先2.7分,陈芋汐精彩表现,3个10分震撼全场
教你3个动作,膝盖不痛了,腿更有劲了!
精准把握客户需求的8种有效手段解析
汪曾祺:玉渊潭的传说
如何选择合适的货币基金?选择货币基金时需要考虑哪些因素?
春风拂面,诗词里的春天最动人
《安全标志及其使用导则》规定的40个禁止标志
win10 安装openssl并使用openssl创建自签名证书
清朝侧福晋、庶福晋、侍妾都有何区别?家里谁的地位待遇更高?