这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » ModbusTCP协议及通信报文解读

共2条 1/1 1 跳转至

ModbusTCP协议及通信报文解读

高工
2023-08-23 09:14:48     打赏
一、Modbus协议设计思想 

Modbus设备使用主从(客户端-服务器)技术进行通信,其中只有一个设备(主设备/客户端)可以启动事务(称为查询)。其他设备(从设备/服务器)通过向主设备提供请求的数据或采取查询中请求的操作进行响应。从设备是任何外围设备(I/O转换器、阀门、网络驱动器或其他测量设备),它处理信息并使用Modbus将其输出发送到主设备。

主机可以寻址单个从机,也可以向所有从机发起广播消息。从属服务器会返回对单独发送给它们的所有查询的响应,但不会响应广播查询。从属服务器不会自己启动消息,它们只响应来自主服务器的查询。

主查询将包括一个从地址(或广播地址)、一个定义所请求操作的功能代码、任何所需数据和一个错误检查字段。从机的响应由确认所采取的操作、要返回的任何数据和错误检查字段组成。

请注意,查询和响应都包括设备地址、功能代码、适用数据和错误检查字段。如果没有发生错误,则从设备的响应包含所请求的数据。如果收到的查询中出现错误,或者从设备无法执行请求的操作,则从设备将返回一条异常消息作为响应。

从机消息帧的错误检查字段允许主机确认消息的内容是有效的。传统的Modbus消息是串行传输的,奇偶校验也应用于其数据帧中的每个传输字符。

在这一点上,重要的是要区分Modbus本身是一个应用协议,因为它定义了组织和解释数据的规则,但仍然只是一个消息传递结构,独立于底层物理层。

二、Modbus TCP 

Modbus消息结构是一种应用协议,定义了独立于数据传输介质的数据组织和解释规则。

TCP/IP是指传输控制协议和互联网协议,为Modbus TCP/IP消息提供传输介质。

注意:TCP的主要功能是确保所有数据包都被正确接收,TCP/IP只是一个传输协议,并没有定义数据的含义或数据的解释方式,这是应用协议的工作)。

image.png

从本质上讲,Modbus TCP/IP消息只是封装在以太网TCP/IP封装器中的Modbus通信。Modbus TCP将标准Modbus数据帧嵌入到TCP帧中,没有Modbus校验和,如下图所示。

image.png

你一定会奇怪,相比串口版本的Modbus RTU,为什么没有使用Modbus错误检查字段校验。

因为TCPIP是一种可靠传输,其使用标准以太网TCP/IP链路层校验和方法来保证数据的完整性。

三、报文介绍  

image.png还是把这张图拿过来。从图中可以看出,功能代码和数据字段与原始形式一样。Modbus TCP/IP应用数据单元(ADU)采用7字节报头(事务标识符+协议标识符+长度字段+单元标识符)和协议数据单元(功能代码+数据)的形式。MBAP标头长7个字节,包括以下字段:

  • 事务/调用标识符(2个字节):当客户端沿同一TCP连接发送多条消息而不等待先前响应时,此标识字段用于事务配对。
  • 协议标识符(2字节):此字段对于Modbus服务始终为0,其他值保留用于未来扩展。
  • 长度(2字节):该字段是剩余字段的字节计数,包括单元标识符字节、功能代码字节和数据字段。
  • 单元标识符(1字节):此字段用于标识位于非TCP/IP网络上的远程服务器(用于串行桥接)。在典型的Modbus TCP/IP服务器应用程序中,单元ID设置为00或FF,被服务器忽略,并在响应中简单地回显。

完整的Modbus TCP/IP应用数据单元嵌入到标准TCP帧的数据字段中,并通过TCP发送到系统端口502,该端口专门为Modbus应用保留。Modbus TCP/IP客户端和服务器,通过端口502监听和接收Modbus数据。

我们可以看到,Modbus在以太网上的操作对Modbus寄存器/命令结构几乎是透明的。因此,如果您已经熟悉传统Modbus的操作,那么您已经非常熟悉Modbus TCP/IP的操作。





关键词: Modbus     TCP协议     报文     解读    

工程师
2023-08-25 09:05:11     打赏
2楼

MODBUS值得学习


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]