首页 > 其他分享 >ModbusTCP报文详解

ModbusTCP报文详解

时间:2024-09-18 20:51:43浏览次数:12  
标签:字节 报文 寄存器 地址 详解 线圈 服务器 ModbusTCP 标识符

Modbus TCP与Modbus Rtu(ASCI)数据帧的区别

总结:Modbus TCP就是在Modbus Rtu(ASCI)基础上去掉CRC,再加上六个0一个6

Modbus TCP MBAP报文头

长度描述客户机服务器
事务处理标识符2字节Modbus请求/响应事务处理的识别客户机启动服务器从接收的请求中重新复制
协议标识符2字节0=Modbus协议客户机启动服务器从接收的请求中重新复制
长度2字节随后字节的数量客户机启动(请求)服务器(响应)启动
单元标识符1字节串行链路或其它总线上连接的远程从站的识别客户机启动服务器从接收的请求中重新复制

功能码01H

读取输入线圈  功能码:01H

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码起始地址(高位)起始地址(低位)线圈地址(高位)线圈数量(低位)
0x000000000x00060x110x010x000x130x000x1B

含义: 读服务器单元标识符(0x11)输出线圈,起始地址 =0013H=19,对应地址 00020;

线圈数 =001BH=27; 结束地址 =00020+27-1=00046,即读服务器输出线圈 00020-00046,共 27个线圈状态。

从站应答报文格式:

含义:返回服务器单元标识符(0x11)输出线圈 00020-00046,共 27个线圈状态,分别为CD 6B B2 05
CD=1100 1101 对应00020-00027                             B2=1011 0010 对应00036-00043
6B=0110 1011  对应00028-00035                             05=0000 0101 对应00044-00046

功能码02H

读取输入线圈  功能码:02H

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码起始地址(高位)起始地址(低位)线圈地址(高位)线圈数量(低位)
0x000000000x00060x110x020x000x130x000x1B

含义: 读服务器单元标识符(0x11)输出线圈,起始地址 =0013H=19,对应地址 00020;

线圈数 =001BH=27; 结束地址 =10020+27-1=10046,即读服务器输出线圈 10020-10046,共 27个线圈状态。

从站应答报文格式:

含义:返回服务器单元标识符(0x11)输出线圈 10020-10046,共 27个线圈状态,分别为CD 6B B2 05
CD=1100 1101 对应10020-10027                             B2=1011 0010 对应10036-10043
6B=0110 1011  对应10028-10035                             05=0000 0101 对应10044-10046

功能码03H

读取保持寄存器  功能码:03H

主站询问报文格式:

事务/协议(4个字节)

字节长度单元标识符功能码起始寄存器(高位)起始寄存器(低位)寄存器数量(高位)寄存器数量(低位)
0x000000000x00060x110x030x000x6B0x000x02

含义:读服务器单元标识符(0x11)保持寄存器,起始地址=006BH=107,对应地址 40108;

寄存器数=0002H=2;结束地址=40108+2-1=40109,即读服务器保存寄存器40108-40109,共2个寄存器的值。

从站应答报文格式:


含义:返回服务器单元标识符(0x11)保存寄存器40108-40109 ,共 2个寄存器的值,分别为02 2B 01 06
因此40108寄存器对应值为022BH                40109寄存器对应值为0106H

功能码04H

读取输入寄存器  功能码:04H

主站询问报文格式:

事务/协议(4个字节)

字节长度单元标识符功能码起始寄存器(高位)起始寄存器(低位)寄存器数量(高位)寄存器数量(低位)
0x000000000x00060x110x040x000x6B0x000x02

含义:读服务器单元标识符(0x11)输入寄存器,起始地址=006BH=107,对应地址 30108;

寄存器数=0002H=2;结束地址=30108+2-1=30109,即读服务器输入寄存器30108-30109,共2个寄存器的值。

从站应答报文格式:

含义:返回服务器单元标识符(0x11)输入寄存器30108-30109,共 2个寄存器的值,分别为02 2B 01 06

因此30108寄存器对应值为022BH                                30109寄存器对应值为0106H

ModbusTCP报文详解

功能码05H

强制单个线圈  功能码:05H

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码线圈地址(高位)线圈地址(低位)断通标志断通标志
0x000000000x00060x110x050x000xAC0xFF0x00

含义:强制服务器单元标识符(0x11)某个线圈的值,线圈地址=00ACH=172,对应地址 00173;

断通标志为FF00H表示置位,断通标志为0000H表示复位,即置位服务器输出线圈00173。

从站应答报文格式:

事务/协议(4个字节)字节长度单元标识符功能码线圈地址(高位)线圈地址(低位)断通标志断通标志
0x000000000x00060x110x050x000xAC0xFF0x00

含义:强制服务器单元标识符(0x11)输出线圈00173为ON后原文返回。

功能码06H

预置单个寄存器  功能码:06H

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码寄存器地址(高位)寄存器地址(低位)写入值(高位)写入值(低位)
0x000000000x00060x110x060x000x870x030x9E

含义: 预置服务器单元标识符(0x11)某个寄存器的值,寄存器地址=0087H=135,对应地址 40136;写入值为0x039E,即预置服务器保存寄存器40136值为0x039E。

从站应答报文格式:

事务/协议(4个字节)字节长度单元标识符功能码寄存器地址(高位)寄存器地址(低位)写入值(高位)写入值(低位)
0x000000000x00060x110x060x000x870x030x9E

含义:预置服务器单元标识符(0x11)保存寄存器40136值为0x039E后原文返回。

功能码0FH

强制单个线圈  功能码:0FH

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码起始线圈(高位)起始线圈(低位)字节统计字节1字节2
0x000000000x00060x110x0F0x000x0A0x020xCD0X00

含义:预置服务器单元标识符(0x11)多个线圈的值,线圈起始地址=0013H=19,对应地址 00020;线圈数=0x000A=10,结束地址为00020+10-1=00029,写入值为0xCD00,即预置服务器从站线圈:

        00020-00027=0xCD=1100 1101                        00028-00029=0x00=0000  0000

事务/协议(4个字节)字节长度单元标识符功能码起始线圈(高位)起始线圈(低位)线圈数(高位)线圈数(低位)
0x000000000x00060x110x0F0x000x130x000x0A

含义:预置服务器单元标识符(0x11)线圈:

00020-00027=0xCD=1100 1101
00028-00029=0x00= 0000 0000

功能码10H

预置多个寄存器  功能码:10H

主站询问报文格式:

事务/协议(4个字节)字节长度单元标识符功能码起始地址(高位)起始地址(低位)数量(高位)数量(低位)字节统计字节1字节2字节3字节4
0x000000000x000B0x110x100x000x870x000x020x040x010x050x0A0X10

含义:预置服务器单元标识符(0x11)多个寄存器的值,寄存器起始地址=0087H=135,对应地址 40136;寄存器数=0x0002=2,结束地址为40136+2-1=40137,写入值为0x0105,0x0A10,即预置服务器寄存器:40136=0x0105             40137=0x0A10

从站应答报文格式:

事务/协议(4个字节)字节长度单元标识符功能码起始(高位)起始(低位)数量(高位)数量(低位)
0x000000000x000B0x110x100x000x870x000x02

含义:预置服务器单元标识符(0x11)寄存器:

40136=0x0105
40137=0x0A10

标签:字节,报文,寄存器,地址,详解,线圈,服务器,ModbusTCP,标识符
From: https://blog.csdn.net/Mumyi_/article/details/142328121

相关文章

  • 9--Maven高级 详解
    目录分模块设计与开发继承与聚合继承与聚合对比私服分模块设计与开发分模块设计就是将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。实体类只用到了lombok依赖utils使用JWT令牌、阿里云OSS、lombok、WEB开发起步......
  • MySQL MVCC 详解
    文章目录MVCC基本概念当前读快照读MVCCMVCC实现原理隐藏字段undolog日志undolog的版本链ReadViewRC隔离级别下的MVCCRR隔离级别下的MVCCMVCC基本概念当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。......
  • 2024Mysql And Redis基础与进阶操作系列(2)作者——LJS[含MySQL登录;DDL;DML;举例说明;编码
    目录1.MySQL的登录1.1服务的启动和停止方式1:使用图形界面工具步骤1:打开windows服务 步骤2:找到MySQL80(点击鼠标右键)→启动或停止(点击)编辑补充说明2点:1.2自带客户端的登录与退出登录方式1:MySQL自带客户端注意:退出登录2MySQL数据库基本操作-DDL和DML2.1.DDL解释2.......
  • Failed to start docker.service — 完美解决方法详解 ️
    ......
  • Java JNA、JNI、ProcessBuilder、Runtime.getRuntime.exec()详解
    Java提供了几种方式与非Java代码进行交互(比如调用本地库或执行外部程序),其中包括JNA、JNI、ProcessBuilder和Runtime.getRuntime().exec()。下面是对每种方式的详细解释。1.JNA(JavaNativeAccess)简介JNA是Java与本地代码进行交互的一种高层次API,它允许Java......
  • AI应用启动失败?专业级详解DLL文件缺失原因及下载修复步骤
    当AI应用(如AdobeIllustrator、深度学习框架等)启动失败,并提示DLL文件缺失时,这通常是由于多种原因导致的。以下是对这一问题的专业级详解,包括缺失原因及下载修复步骤。DLL文件缺失原因程序漏洞:软件本身存在漏洞,可能导致DLL文件在安装或使用过程中丢失。恶意软件攻击:恶意软件......
  • 大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(正在更新!)章节内容上节我们完成了如下的内容:ManageOperatorStateStateBackendCheckpoint......
  • 使用Python计算多个集合的交集详解
    集合(Set)是Python中的一种常用数据结构,专门用于存储不重复的元素。在数据处理中,集合操作常被用来处理去重、并集、交集等问题。尤其在处理多个数据集时,交集操作尤为重要,因为它可以帮助我们找到多个集合中都存在的共同元素。本文将详细探讨如何在Python中高效地进行多个集合的交集操......
  • 详解Node.js开发中不可或缺的7个库
            在Node.js开发中,选择合适的库对于提高开发效率和优化应用程序性能至关重要。本文将介绍七个备受关注的Node.js库,它们在各自的领域中展现了出色的功能和性能。这些库分别是:Config、Fetch、Ioredis、Multer、Cache、Fast-xml-parser和Cron。我们将深入了解它们......
  • 企业如何选择WMS系统及其功能详解:为什么定制化解决方案更优?
    在当今快速发展的商业环境中,仓库管理系统(WMS)已经成为物流和供应链管理不可或缺的一部分。随着市场竞争的加剧,企业需要一种高效、灵活且能适应变化的WMS系统。因此,选择合适的WMS系统变得尤为重要。本文将详细探讨WMS系统的核心功能、企业选择WMS系统的关键因素,以及为何定制......