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

网络协议——Modbus-RTU

目录

1、简介

2、消息格式

3、Modbus寄存器种类说明

4、功能码01H

5、功能码02H

6、功能码03H

7、功能码04H

8、功能码05H

9、功能码06H

10、功能码0FH

11、功能码10H


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个。
http://www.lryc.cn/news/351319.html

相关文章:

  • 【Qt】如何优雅的进行界面布局
  • 【八股系列】分别说一下nodeJS和浏览器的事件循环机制?
  • 关于基础的流量分析(1)
  • 数据结构---树,二叉树的简单概念介绍、堆和堆排序
  • MySQL聚合函数(多行函数)
  • 智慧教室课堂-专注度及考试作弊系统、课堂动态点名,情绪识别、表情识别和人脸识别结合
  • 单例模式简要介绍
  • 深度学习面试问题总结(21)| 模型优化
  • 4月手机行业线上市场销售数据分析
  • 首都师范大学聘请旅美经济学家向凌云为客座教授
  • 多电脑共享鼠标键盘
  • 展厅设计对企业有哪些作用
  • LeetCode-102. 二叉树的层序遍历【树 广度优先搜索 二叉树】
  • 基于时频模糊算子的数据增强方法
  • 浅谈后端整合Springboot框架后操作基础配置
  • 英码科技算能系列边缘计算盒子再添新成员!搭载TPU处理器BM1688CV186AH,功耗更低、接口更丰富
  • selenium 爬取今日头条
  • docker 安装 yapi
  • 【AI如何帮你编写测试用例并输出表格格式】
  • 九宫格转圈圈抽奖活动,有加速,减速效果
  • 利用阿里OSS服务给文件设置过期删除--简单版
  • LabVIEW控制Trio控制器
  • 02--大数据Hadoop集群实战
  • 【ARMv8/v9 异常模型入门及渐进 10 -- WFI 与 WFE 使用详细介绍 1】
  • @DateTimeFormat 和 @JsonFormat 的区别和使用方式
  • C++—结构体
  • 指针与引用
  • 使用 mysql-binlog-connector 监听处理 MySQLBinlog 文件
  • CF Div2 729 Plus and Multiply
  • Joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞环境