Modbus协议(三)

ModbusTCP协议

应用层协议:ModbusTCP
物理层协议:标准TCP/IP协议
默认端口:502
校验:无校验
报文头(MBAP):有
简而言之,就是在通用的功能码+数据模型基础上,加上MBAP报文头,即构成了ModbusTCP的通信报文。

MBAP报文头

定义

​MBAP​​ 是 ​​Modbus Application Protocol Header​​(Modbus应用协议头)的缩写,专为 ​​Modbus TCP​​ 协议设计,用于在以太网通信中封装Modbus数据帧。

MBAP结构(7字节)

字段 长度 示例 说明
事务标识符 2字节 00 01 请求-响应匹配ID
协议标识符 2字节 00 00 固定值0x0000,表示Modbus协议
长度字段 2字节 00 06 后续PDU(协议数据单元)的字节数(含单元标识符)
单元标识符 1字节 01 从站地址(兼容RTU设备地址,默认0x01,广播地址0x00无效

样例1

软件

使用运行在同一台电脑上的2个软件,分别做服务器和客户端实现操作。
Server服务器:ModSim32
Client客户端:带网络调试功能的串口调试软件

读多个保持寄存器

image
可以看到,使用串口调试软件发送报文

00 01 00 00 00 06 01 03 00 00 00 02

报文解释

字段 事务ID 协议ID 后续字节长度 从站地址 功能码 寄存器地址 寄存器数量
00 01 00 00 00 06 01 03 00 00 00 02
含义 请求响应 Modbus协议 后续数据有6字节 从站1 读多个保持寄存器 从寄存器0开始 读2个

反馈信息

00 01 00 00 00 07 01 03 04 00 06 0A 16 
字段 事务ID 协议ID 后续字节长度 从站地址 功能码 后续数据长度(字节数) 寄存器0 寄存器1
00 01 00 00 00 07 01 03 04 00 06 0A 16
含义 请求响应 Modbus协议 后续数据有7字节 从站1 读多个保持寄存器 后续数据有4字节 00 06:6 0A 16:16 * 16 * 10 + 16 + 6 = 2582

所以,读出来从站1的地址为01的两个保持寄存器的值,分别为62582

样例2

使用2台电脑,win10系统
A电脑:运行Autoshop仿真H5U作为服务器
B电脑:使用Modbus仿真软件或串口调试软件作为客户端

A电脑 ModbusTCP服务器

查看服务器IP
image

192.168.254.129

打开Autoshop,新建H5UPLC,开启仿真,然后对M存储区写入部分内容。
image
M区继电器得电状态

M 6 5 4 3 2 1 0
ON/OFF状态 ON OFF ON OFF ON OFF ON

汇川H5U的仿真开启后,默认开启ModbusTCP的服务器。

B电脑 ModbusTCP客户端

查看客户端IP
image

192.168.254.158

查看连接状态
image

打开串口调试软件,设置服务器IP,发送报文
image
如图,发送:

00 01 00 00 00 06 01 02 00 00 00 05

报文含义:

字段 事务ID 协议ID 后续字节长度 从站地址 功能码 线圈地址 线圈数量
00 01 00 00 00 06 01 02 00 00 00 05
含义 请求响应 Modbus协议 后续数据有6字节 从站1 读多个线圈 从线圈0开始 读5个

接收数据

00 01 00 00 00 04 01 02 01 15 
字段 事务ID 协议ID 后续字节长度 从站地址 功能码 后续数据长度(字节数) 寄存器
00 01 00 00 00 04 01 02 01 15
含义 请求响应 Modbus协议 后续数据有4字节 从站1 读多个线圈 后续数据有1字节 15:0001 0101

image

由此可知,把服务器的M0~M4共计5个线圈的状态读出来了。

M 5 4 3 2 1 0
ON/OFF状态 OFF ON OFF ON OFF ON
posted @ 2025-07-24 17:04  科里布  阅读(136)  评论(0)    收藏  举报