Modbus是一种串行通信协议,Modbus TCP则是Modbus协议在TCP/IP协议上的应用。在工业控制系统中,Modbus TCP广泛应用于PLC(可编程逻辑控制器)和其他设备之间的通信。本文将从多个角度分析Modbus TCP报文的解析。
一、Modbus TCP协议的基本结构
Modbus TCP报文是由Ethernet帧和TCP报文组成。Ethernet帧是数据包在局域网中传输的基本单位,TCP报文则构成了数据包的内容。
Modbus TCP协议的基本结构分为三部分:事务标识符、协议标识符和应用数据单元(ADU)。其中,事务标识符唯一标识了一个Modbus TCP报文,协议标识符标识了Modbus TCP协议的版本号,ADU则是实际传输的数据。
二、Modbus TCP报文的格式
Modbus TCP报文格式为:

如上图所示,Modbus TCP报文为一个TCP数据包,在数据包中包含了Modbus报文。Modbus报文是一个标准的Modbus RTU或ASCII报文,它被放置在一个标准TCP/IP包的负载中发送,每个Modbus报文必须指定Modbus TCP报文的协议标识符。
一个标准Modbus TCP报文由以下几部分组成:
1. 事务标识符:这是一个短整型数,由发送方用于识别回答报文。
2. 协议标识符:在此协议中,这个字段总是“00 00”。
3. 长度字段:它指定了接下来的字段(即设备地址、功能码和数据)的字节数。长度字段的长度为短整型,因此它的值不能超过255个字节。
4. 设备地址:通常设置为Modbus TCP从设备的IP地址的最后一个数值(如192.168.1.30的设备地址为30)。
5. 功能码:指定Modbus操作的类型,例如读、写、读写、诊断、返回数据、异常等等。
6. 数据:包括从服务器返回的寄存器的值或设定值等等,如果执行失败,返回执行失败的原因等。
三、Modbus TCP报文的解析
Modbus TCP报文的解析主要包括以下三个方面:
1. 设备地址解析
在Modbus TCP报文中,设备地址字段用于标识从设备的地址。Modbus TCP从设备的地址通常被设置为IP地址的最后一个字节,例如192.168.1.30的从设备地址为30。
2. 功能码解析
Modbus TCP报文中的功能码指定了Modbus操作的类型,例如读、写、读写、诊断、返回数据、异常等等。不同的功能码对应不同的Modbus操作,因此功能码的解析非常重要。
3. 数据解析
Modbus TCP报文中的数据包括从服务器返回的寄存器的值或设定值等等,如果执行失败,返回执行失败的原因等。数据的解析需要根据不同的功能码进行不同的处理。
四、Modbus TCP报文解析工具
Modbus TCP报文解析工具能够帮助我们更方便地对Modbus TCP报文进行解析。市面上有很多Modbus TCP报文解析工具,例如Wireshark、ModScan、QModMaster等等。
这些工具可以帮助工程师们更快速、更准确地分析Modbus TCP报文,检测设备是否存在异常。
扫码咨询 领取资料