设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
Modbus TCP/IP 的详细描述及示例说明
返回列表
发新帖
[西门子]
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
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
Hello工控
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』