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的地址为0和1的两个保持寄存器的值,分别为6和2582。

样例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  科里布  阅读(358)  评论(0)    收藏  举报