[西门子] Modbus TCP/IP 的详细描述及示例说明

[复制链接]
查看221 | 回复0 | 2024-7-10 21:01:45 | 显示全部楼层 |阅读模式


我们前期已经详细介绍了Modbus的数据定义、功能码及模型,还有三种协议的PDU对比。

这期重点介绍 Modbus TCP/IP,也被称为Modbus-TCP,它本质上是带有TCP接口的Modbus RTU协议,运行在以太网上。



TCP/IP

TCP/IP,全称为传输控制协议和互联网协议(Transmission Control Protocol and Internet Protocol),它为Modbus TCP/IP消息传递提供了传输介质。



TCP/IP支持大量同时连接,因此发起方可以选择是重新建立连接还是重用一个活动的连接。

正如我们已经知道的,TCP/IP用于计算机之间交换数据块,TCP的主要功能是确保所有发送的数据包都被接收,而IP则确保消息被正确地寻址和路由。

TCP/IP的结合可以简单地被称为一种传输协议,它不定义数据的含义或数据如何被解释,但是Modbus结合TCP/IP作为一个应用协议可以用来解释数据。



IP地址和502端口

MODBUS TCP/IP协议作为工业自动化领域内的一种关键通信手段,其实现对于确保设备间的有效通信至关重要。

在以太网网络中,设备的地址是其IP地址。通常,设备位于同一子网中,IP地址的最后两位数字不同,例如使用最常见的子网掩码255.255.255.0时,IP地址为192.168.1.100。

接口是以太网网络,数据传输协议是TCP/IP。

使用的TCP端口是:502。







Modbus TCP协议描述

Modbus TCP/IP基于客户端和服务器模型工作。Modbus主站被称为客户端,Modbus从站被称为服务器。Modbus TCP/IP客户端和服务器通过502端口发送和接收Modbus数据。



现在,如果我们谈论Modbus TCP/IP的消息结构,它在消息的开头添加了一个7字节的头部,称为MBAP头部(Modbus应用协议头部),以及一个PDU(协议数据单元)。



以下是一个Modbus RTU请求示例,用于获取设备地址17的保持寄存器#40108到40110的模拟输入AI值。

11 03 006B 0003 7687

针对上述Slave ID(11),如果是Modbus TCP协议,MBAP头部是:

0001 0000 0006 11

具体对比如下所示:



MBAP头部(Modbus应用头部)。这个头部包含以下数据:


  • 事务标识符:由主设备设置的2个字节,用于唯一标识每个请求。可以是任意值。这些字节在响应中由从设备重复,因为从设备的响应可能不会按照请求的顺序接收。

  • 协议标识符:由主设备设置的2个字节,总是00 00,对应于Modbus协议。

  • 长度:由主设备设置的2个字节,标识消息中后续字节的数量。从单元标识符到消息末尾。

  • 单元标识符:1字节由主设备设置。由从设备重复,以唯一标识从设备。

那么,上述例子的请求具体说明:


其中:



在来自Modbus TCP从设备的响应中我们得到:

0001 0000 0009 11 03 06 022B 0064 007F

其中:



上述:

模拟输出寄存器AO0的值为02 2B 十六进制或十进制中的555。

模拟输出寄存器AO1的值为00 64 十六进制或十进制中的100。

模拟输出寄存器AO2的值为00 7F 十六进制或十进制中的127。



其他

Modbus TCP的命令定义的具体含义,我们在Modbus功能码一节详细说明过,这里不再重复。

详解Modbus协议功能码

Modbus请求出错的处理机制,我们也已经详细介绍过:

功能码+0x80来响应对于的错误回复:



除了Modbus TCP不需要进行CRC、LRC及奇偶校验外,具体的错误代码都是遵循Modbus协议的故障描述:

Modbus协议的错误检测方法:奇偶校验、CRC(循环冗余校验)和LRC(纵向冗余校验)

另外,需要重点说明以下几点:

  • 在Modbus TCP/IP中,我们只需要设置IP地址,而不需要像Modbus RTU那样设置波特率、校验位和数据位。
  • Modbus TCP/IP使用单元标识符代替Modbus RTU中的从设备ID。
  • Modbus TCP/IP通信栈由OSI模型的7层中的5层组成,分别是应用层、传输层、网络层、数据链路层和物理层。
  • TCP连接只能由客户端建立,而服务器不能启动TCP事务。服务器应该保持打开TCP连接,并在每个Modbus消息后关闭它。客户端在需要时可以关闭连接,并且也可以处理来自服务器的消息。
  • 一些Modbus设备可以充当服务器和客户端,在这种情况下,可以通过分别用于客户端和服务器数据流的独立连接实现双向通信。
  • Modbus TCP/IP使用502端口作为本地或远程端口,用于发送和接收来自客户端和服务器的消息。也就是说,端口502始终被保留为监听或接收端口。
  • Modbus TCP/IP设备可以在不需要等待回复/响应的情况下向同一服务器发送多个请求,在这种情况下,可以使用事务标识符将请求与相应的响应匹配起来。

关于Modbus RTU和Modbus TCP的详细对比,我们下期接着分享,敬请持续关注。

参考链接:

  • https://theautomization.com/what-is-modbus-tcp-ip/
  • https://ipc2u.com/articles/knowledge-base/detailed-description-of-the-modbus-tcp-protocol-with-command-examples/
  • https://www.gridconnect.com/blogs/news/modbus-tcp-vs-ethernet-ip-an-engineers-decision-making-guide

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则