0102030405
MODBUS_TCP 通信协议详解
2026-02-08
我。协议概述
MODBUS TCP MODBUS TCP(传输控制协议)是一种广泛应用于工业环境中的串行通信协议,最初是为通过串行通信线路连接的设备而设计的。然而,随着时间的推移,MODBUS TCP 也逐渐成为通过网络(通常是以太网)连接的设备的主流通信协议。MODBUS TCP 允许设备通过网络进行通信,从而实现远程监控和控制。
Modbus-TCP 是基于 TCP/IP 协议栈的以太网 Modbus 协议实现。它保留了 Modbus 的核心功能(例如数据模型和操作码),但将数据封装在 TCP/IP 数据包中,利用 TCP 的可靠性来确保数据传输的准确性。
二、MODBUS TCP协议的基本结构
- 客户端/服务器模型:
- 客户端(通常是 PC、PLC 或其他控制设备)发起连接并发送请求。
- 服务器(通常是受控设备或从属设备)接收请求并返回响应。
通信采用客户端-服务器模型,其中客户端(主站)主动发起请求,服务器(从站)做出响应。默认端口为502。

2.交易结构:
- 事务 ID:用于区分不同的请求和响应。
- 协议 ID:通常为 0,用于标识 MODBUS 协议。
- 长度:数据长度字段。
- 单元标识符:由设备的地址派生而来。
- 功能码:指示请求类型(例如读/写寄存器)。
- 数据:与函数代码相关的具体数据。
- 错误验证:用于验证数据的完整性。
3.数据框结构:
数据封装在 TCP/IP 数据包中,由两部分组成:MBAP 消息头和 PDU(协议数据单元)。
- MBAP 电报头(7 字节):事务标识符、协议标识符、长度和单元标识符。
交易标识符(2 字节):唯一标识请求-响应对,确保匹配。
协议标识符(2 字节):固定为 0x0000,表示 Modbus-TCP。
长度字段(2 字节):指示后续 PDU 的字节数(包括单元标识符和功能代码)。
单元标识符(1 字节):相当于从地址,用于标识网络上的设备。
- PDU(协议数据单元):功能代码和数据,与 Modbus-RTU 相同。
功能码(1 字节):定义操作类型(例如读取/写入线圈或寄存器)。
数据:长度可变,包含操作所需的地址和值。

三、沟通流程
- 建立连接:客户端和服务器之间建立 TCP 连接。客户端通过 TCP 连接(端口 502)发起请求,服务器监听并响应该请求。
- 发送请求:客户端发送一个包含功能码和必要数据的 MODBUS TCP 帧。
- 接收响应:服务器处理请求,执行操作(例如读取寄存器),并返回响应消息。如果操作失败,服务器将返回异常响应(功能码的最高位设置为 1,并附带异常代码)。
- 关闭连接(可选):您可以根据需要关闭 TCP 连接。

四、常用功能码
- 01:读取线圈状态(读取离散输入)
- 02:读取输入状态(读取输入寄存器)
- 03:读取持仓登记册(读取持仓登记册的价值)
- 04:读取输入寄存器(读取输入寄存器的值)
- 05:写入单线圈
- 06:写入单个寄存器
- 15:编写多个线圈
- 16:写入多个寄存器
- 17:写入多个寄存器(带掩码)
五分之三防范措施
- 确保服务器端的 MODBUS TCP 服务已启动,并且正在监听正确的端口(默认端口为 502)。
- 可能需要对防火墙和网络设置进行适当配置,以允许 TCP 流量通过指定端口。
- 使用正确的设备标识符和功能代码与设备通信。
- 由于其简便性和广泛的兼容性,MODBUS TCP 已被广泛应用于工业自动化和监控系统。通过正确的实施和配置,可以有效地实现设备间的远程通信和管理。










