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

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


http://www.kler.cn/a/315231.html

相关文章:

  • 【uni-app】2025最新uni-app一键登录保姆级教程(包含前后端获取手机号方法)(超强避坑指南)
  • YoloV8改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用
  • 微信小程序UI自动化测试实践 !
  • 单元测试mock框架Mockito
  • 【Spring】Spring框架之-AOP
  • Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
  • 冒泡排序,选择排序,插入排序,归并排序,快速排序五种排序方法
  • thop计算模型复杂度(params,flops)
  • 云计算实训50——Kubernetes基础命令、常用指令
  • 怎样把PPT上顽固的图标删了
  • Html css水平居中+垂直居中+水平垂直居中的方法总结
  • WPF 自定义路由事件
  • HTTP的基本格式
  • 整合多方大佬博客以及视频 一文读懂 servlet
  • go/函数
  • Java笔试面试题AI答之单元测试JUnit(5)
  • 3. 什么是连接池?为什么使用数据库连接池?
  • AgentScope中带有@功能的多Agent组对话
  • Github Wiki 超链接 转 码云Gitee Wiki 超链接
  • hcia-openEuler V1.0师资题库-试卷2
  • MySQL数据库专栏(九)内联查询
  • 如何做系统架构?从动态系统思考的角度
  • 线性规划------ + 案例 + Python源码求解(见文中)
  • idea2021git从dev分支合并到主分支master
  • C#基础(14)冒泡排序
  • Go 并发模式:扩展与聚合的高效并行