【modbus协议】Modbus-TCP消息帧格式

文章目录

协议描述

在ModbusTCP/IP协议中,串行链路中的主/从设备分别演变为客户端/服务器端设备。即客户端相当于主站设备,服务器端相当于从站设备。基于TCP/IP网络的传输特性。Modbus协议在TCP/IP上的实现是在TCP/IP协议层上的应用,它需要一个完整的 TCP/IP协议栈作为支撑,Modbus TCP/IP服务器端通常使用端口502作为接收报文的端口。

  • 客户端

    • 发起通信:客户端主动建立连接并发送请求。
    • 发送请求:客户端可以发送读取、写入和其他类型的请求(如功能代码)。
    • 接收响应:客户端接收并处理服务器的响应。
  • 服务器

    • 等待请求:服务器处于监听状态,等待客户端的请求。
    • 处理请求:服务器解析接收到的请求,并执行相应的操作(如读取寄存器、写入数据等)。
    • 发送响应:服务器将结果返回给客户端。
  • Modbus TCP 客户端是发起请求的角色,通常用于发送数据给服务器。

  • Modbus TCP 服务器是响应请求的角色,通常用于提供数据给客户端。

Modbus Application Header 结构


Modbus Application Header 的长度固定为 7 字节,包含以下字段:

  1. Transaction Identifier(事务标识符)

    • 长度:2 字节
    • 描述:由客户端设置,用于将响应与请求关联起来。服务器在响应中会复制这个标识符。
  2. Protocol Identifier(协议标识符)

    • 长度:2 字节
    • 描述 :通常设置为 0x0000,表示使用的是 Modbus 协议。
  3. Length(长度)

    • 长度:2 字节
    • 描述:表示从 Unit Identifier 到 PDU 末尾的总字节数(包括 Unit Identifier 和 PDU)。
  4. Unit Identifier(单元标识符)

    • 长度:1 字节
    • 描述 :用于区分网络中的不同设备。如果使用的是 TCP/IP,通常设置为 0xFF0x00,但在某些复杂网络中可能会使用其他值来区分不同的设备。

示例

假设有一个 Modbus TCP 请求,其 MBAP 如下:

复制代码
Transaction Identifier: 0x00 0x01
Protocol Identifier:  0x00 0x00
Length:               0x00 0x06
Unit Identifier:      0x01
  • Transaction Identifier0x0001,表示这是一个特定的事务。
  • Protocol Identifier0x0000,表示使用的是 Modbus 协议。
  • Length0x0006,表示后续有 6 字节的数据。
  • Unit Identifier0x01,表示这是针对标识符为 0x01 的设备。

与其他部分的关系

  • PDU(Protocol Data Unit)
    • PDU 包含实际的 Modbus 功能码和数据。
    • PDU 位于 MBAH 之后,长度由 MBAH 中的 Length 字段指定。

作用

  • 唯一性标识:通过 Transaction Identifier,客户端可以唯一标识每个请求和响应,确保不会混淆。
  • 路由信息:Unit Identifier 帮助在复杂网络中定位特定的设备。
  • 长度控制:Length 字段确保数据传输的完整性,客户端和服务器可以根据这个值正确解析数据。

总结

Modbus Application Header 是 Modbus TCP 通信中的关键部分,它提供了事务标识、协议标识、数据长度和设备标识等信息,帮助客户端和服务器正确解析和处理 Modbus 请求和响应。通过理解这些字段的含义和作用,可以更好地实现和调试 Modbus TCP 通信。

相关推荐
Sylvia33.2 小时前
从轮询到推送:足球数据API架构演进与火星数据技术拆解
java·服务器·网络·python·websocket·架构
程序员老陆5 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
玫幽倩5 小时前
2026黄河流域公安院校-电子物证单项赛(程序逆向分析+服务器取证)
运维·服务器·python·电子取证·逆向·程序分析·服务器取证
kels88996 小时前
实战排坑:黄金实时API开发,XAUUSD Tick报文异常处理实践
开发语言·python·websocket·网络协议·信息可视化
Bobolink_6 小时前
IP更换频率:账号运营里多久换一次IP算正常
大数据·网络协议·tcp/ip
treesforest6 小时前
你的IP干净吗?
网络·网络协议·tcp/ip·跨境电商·ip归属地查询·跨境
sbjdhjd7 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php
运维行者_7 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
March.s7 小时前
Nginx 服务器反向代理实战指南
服务器·nginx·github
刚入门的大一新生7 小时前
Linux-Linux第一个系统程序-进度条
linux·运维·服务器