Modbus TCP

6次阅读
没有评论

  Modbus TCP 是 Modbus 协议的一个变体,它运行在 TCP/IP 网络之上。相比于 Modbus RTU 和 Modbus ASCII 这两种基于串行通信的 Modbus 协议,Modbus TCP 支持更快的数据传输速度和更远的通信距离。由于基于 TCP/IP,Modbus TCP 可以在以太网上进行通信,使其非常适合于现代工业自动化系统。

  基本概念

  TCP/IP 网络 :Modbus TCP 使用 TCP/IP 协议栈进行通信,确保了数据传输的可靠性。

   端口号 :Modbus TCP 通常使用 502 号 TCP 端口。

  MBAP 头 :Modbus Application Protocol 头是 Modbus TCP 特有的,用于封装传统 Modbus 请求和响应报文,以便在 TCP/IP 网络上传输。

  MBAP 头结构

  MBAP 头由以下几部分组成:

   事务标识符 (2 字节):用于同步请求和响应之间的消息。

   协议标识符 (2 字节):用于 Modbus 协议,固定为 0x0000。

   长度字段 (2 字节):标识后续字段的长度(包括单元标识符、功能码、数据)。

   单元标识符 (1 字节):标识远程服务器,对于 Modbus TCP 通常设置为 0xFF。

  功能码

  Modbus TCP 支持的功能码与 Modbus RTU 相同,包括但不限于:

  读线圈(01)

  读离散输入(02)

  读保持寄存器(03)

  读输入寄存器(04)

  写单个线圈(05)

  写单个寄存器(06)

  写多个线圈(15)

  写多个寄存器(16)

  通信示例

  假设有一个操作要求读取从设备的保持寄存器,从寄存器地址 100 开始,读 3 个寄存器。

  读取保持寄存器请求

  

  MBAP 头 + PDU(协议数据单元)

  请求示例(十六进制):00 01 00 00 00 06 01 03 00 64 00 03

  00 01:事务标识符。

  00 00:协议标识符。

  00 06:长度(6 字节,不包括 MBAP 头的长度)。

  01:单元标识符。

  03:功能码,表示读保持寄存器。

  00 64:起始寄存器地址(100)。

  00 03:读取的寄存器数量(3 个)。

  读取保持寄存器响应

  

  MBAP 头 + PDU(协议数据单元)

  响应示例(十六进制):00 01 00 00 00 09 01 03 06 02 2B 00 00 00 64

  00 01:事务标识符(与请求相匹配)。

  00 00:协议标识符。

  00 09:长度(9 字节,不包括 MBAP 头的长度)。

  01:单元标识符。

  03:功能码。

  06:字节计数(3 个寄存器×2 字节 / 寄存器 = 6 字节)。

  02 2B:第一个寄存器的值。

  00 00:第二个寄存器的值。

  00 64:第三个寄存器的值。

  报文规则

  Modbus TCP 的报文规则确保了在 TCP/IP 网络上可靠地传输 Modbus 命令。事务标识符允许同步请求与响应,即使在异步通信环境中也能匹配。长度字段确保接收方能够正确地解析后续的 PDU 部分。通过单元标识符,可以在同一网络上与多个远程设备通信,尽管在大多数实现中,此字段通常被设置为 0xFF。

  Modbus TCP 使得 Modbus 协议能够在现代的网络环境中使用,扩展了其在工业自动化领域的应用范围。

正文完
 0