网络协议详解: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个。
热门推荐
教皇为何拥有"画的审判"权力?
如何通过企业结构调整实现税务优化
市场趋势预测:如何准确预测市场趋势
《人工智能时代与人类未来》:三位思想家探讨AI时代的社会变革
狗狗换牙期需要注意什么
长寿的人,身体这个指标都很低!但很多人却一直居高不下!
高二早恋需要制止吗
没有饥饿感是怎么回事
南非边境战争:争议的叙述与冲突的记忆
国米遭遇短期困难,难掩长远利好!中前场全力出击,目标取胜!
眨眼间可完成上百年才能处理的问题!量子计算技术挑战传统计算机极限
手机银行转账冲正是什么意思
为啥油车最好买前驱,电动车务必选后驱呢?对此你有什么看法?
工作机是什么手机?工作机和正常机的区别
吃什么增加中性粒细胞
3·15曝光美妆乱象:成分造假,水军泛滥
职业技能证书的获取条件是什么?
从《真心英雄》看到文艺作品的价值影响力
嬲的意思是什么?揭秘‘嬲’字的含义与用法
谢媒人送什么礼品好 十类常见的谢媒礼品有哪些
中国最好的核桃在哪里
九一八事变:硝烟远去 国殇难忘
服用中药时能吃西瓜吗
东菱咖啡机维修全攻略:从基本排查到专业维修建议
如何给小学生讲人工智能
缺氧导致的头疼怎么办
最新QS排名公布,帝国理工超越牛剑,哥大耶鲁暴跌
已致6人死亡!仅1毫克即可致命,这三类食物特别注意→
《世界之外》,套路之外?
《未来》:一本关于未来预测与创造的通识读本