深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 64|回复: 3
打印 上一主题 下一主题

ModBus TCP帧结构

[复制链接]

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
跳转到指定楼层
楼主
发表于 2025-3-5 11:36:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ModBus TCP帧结构
ModBus帧结构可分为MBAP报头+PDU这两部分。

MBAP 报头帧结构

MBAP 报头是以标准 ModBus 消息为前缀的 7 字节结构,具体组成如下。




回复

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
沙发
 楼主| 发表于 2025-3-5 11:43:38 | 只看该作者
PDU帧结构

ModBus TCP PDU帧结构部分是与ModBus RTU一致的,由功能码和数据两部分组成。

1.ModBus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器

2.根据对象的不同,ModBus的功能码有以下几类:

ModBus TCP与串行链路ModBus的数据域是一致的,具体数据域可以参考串行ModBus。



回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
板凳
 楼主| 发表于 2025-3-5 11:47:26 | 只看该作者
通过ModBus TCP连接设备,需要知道以下参数:
  • IP地址与端口号
    • 服务器端(从设备):每个设备的IP地址必须是唯一的,用于在网络中准确识别和定位该设备。常见的子网掩码设置有255.255.255.0等,它决定了IP地址中的网络部分和主机部分
      [size=0.75]
    • 客户端(主设备):客户端的IP地址也需要正确配置,以便能够与服务器端建立连接。
    • 端口号:Modbus TCP通常使用502端口进行通信,但也可以根据实际情况进行自定义配置
      [size=0.75]
      [size=0.75]

  • 设备标识信息
    • 从站地址:在Modbus TCP网络中,每个从设备都需要有一个唯一的从站地址,用于区分不同的设备。这个地址在通信过程中会被客户端指定,以便从设备能够识别并响应相应的请求
      [size=0.75]
    • 单元标识符:它是Modbus TCP报文头的一部分,用于标识具体的从设备。在通信时,客户端会在请求报文中设置正确的单元标识符,从设备则根据该标识符来判断是否处理该请求
      [size=0.75]

  • 功能码
    • 读操作功能码:如0x01(读线圈状态)、0x02(读离散输入状态)、0x03(读保持寄存器)、0x04(读输入寄存器)等,用于读取从设备的不同类型数据
      [size=0.75]
    • 写操作功能码:如0x05(写单个线圈)、0x06(写单个寄存器)、0x10(写多个线圈)、0x16(写多个寄存器)等,用于向从设备写入数据
      [size=0.75]

  • 数据地址
    • 线圈地址:对于读写线圈的操作,需要指定线圈的起始地址和数量。例如,要读取从地址为100开始的10个线圈的状态,就需要在请求报文中正确设置线圈地址参数
      [size=0.75]
    • 寄存器地址:对于读写寄存器的操作,同样需要明确寄存器的起始地址和数量。比如,若要读取从地址为200开始的5个保持寄存器的值,就必须准确地给出寄存器地址信息
      [size=0.75]


总之,要通过ModBus TCP成功连接设备,需精确配置上述各项参数,确保通信的准确性和稳定性。这些参数共同构建了ModBus TCP通信的基础,使得设备间能够顺畅地交换数据,实现工业自动化系统的高效运行。

回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
地板
 楼主| 发表于 2025-3-5 14:27:53 | 只看该作者
Coils DI Reg IR


“Coils DI Reg IR”这些术语通常出现在Modbus协议的上下文中,它们代表了Modbus协议中的四种不同类型的数据或寄存器。以下是对这些术语的解释:
  • Coils(线圈):在Modbus协议中,线圈是一种离散量输出,用于控制外部设备或系统的开关状态。线圈的状态可以是开(1)或关(0),通过写入操作来改变其状态。线圈的地址范围通常是从1开始,具体范围可能因不同的Modbus实现而有所差异。
  • DI(Discrete Input,离散量输入):离散量输入是另一种离散量数据类型,用于读取外部设备或系统的状态信息。与线圈不同,离散量输入只能读取而不能写入。离散量输入的地址范围也是从1开始,但通常与线圈的地址范围不同。
  • Reg(这里可能指的是IR,即Input Registers,输入寄存器):输入寄存器是Modbus协议中的一种数据类型,用于存储外部设备或系统的输入数据。与线圈和离散量输入不同,输入寄存器是以字(WORD)为单位进行访问的,每个字通常包含16位。输入寄存器的地址范围通常是从300001开始,但也可能因不同的Modbus实现而有所变化。
  • IR(Input Registers,输入寄存器):如上所述,输入寄存器是Modbus协议中的一种数据类型,用于存储外部设备或系统的输入数据。它们是只读的,意味着只能读取而不能写入。输入寄存器的地址范围通常是从300001开始,但也可能因不同的Modbus实现而有所变化。

总的来说,“Coils DI Reg IR”这些术语在Modbus协议中扮演着重要的角色,它们代表了不同类型的数据或寄存器,用于实现外部设备或系统之间的通信和控制。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-4 21:35 , Processed in 0.029949 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表