Modbus TCP通信协议介绍及示例详解

1、相关概念

  1.1 Modbus

  Modbus是一种广泛应用于工业自动化领域的通信协议, Modbus提供了通用的语言在设备之间建立主从式的通信,Modbus协议简单、开放、易于实现,且支持多种物理层通信介质(RS232、RS485、TCP/IP网络等),因此成为了工业领域通信协议的业界标准之一。我们今天要介绍的是一种基于以太网TCP/IP的应用层协议——Modbus TCP/IP协议。


  1.2 Modbus TCP

  Modbus TCP是Modbus协议在以太网上的一种实现,它保留了Modbus协议的核心功能和数据模型,但对消息封装进行了调整,使其符合TCP/IP的要求。在进行下一步之前我们首先对Modbus中的一些概念做一个了解。

  1.3存储区

  存储的数据类型分为布尔量和寄存器

  1.3.1布尔量

  如水阀的开关、灯的开关等数据。

  1.3.2寄存器

  如流速、导电率、温湿度、空气浓度等数据。

  Modbus规定了4个存储区,分别是0、1、3、4,对应下面表格内容,具体为:

  0区:可读可写的布尔量

  1区:只读布尔量

  3区:只读寄存器

  4区:可读可写的寄存器

  1.4功能码

  Modbus定义了一系列的功能码,这些功能码表示了主站请求从站执行的具体操作,下面表格是一些常见的功能码,具体为:

  1.4.1读操作

  0x01:读输出线圈状态。

  0x02:读输入线圈状态。

  0x03:读输出寄存器的值。

  0x04:读输入寄存器的值。

  1.4.2写操作

  0x05:写单个线圈状态。

  0x06:写单个寄存器的值。

  0x0F:写多个线圈状态。

  0x10:写多个寄存器的值。

  1.5 协议报文

  Modbus TCP/IP的报文被封装在一个标准的TCP数据段内,而不是像串行通信那样直接在物理层上发送。TCP报文提供了端到端的可靠传输,包括数据分段、重传、流量控制和拥塞控制等机制。

  Modbus TCP/IP的报文帧主要包括:

  MBAP头:包含事务标识符、协议标识符、消息长度、设备地址

  Modbus PDU:原始Modbus协议的数据部分,包括功能码、数据地址和数据值。


  下面我们用一个表格来根据一段报文解释这两部分的具体内容:

  主站发送报文:

  从站响应报文:

  从上面的报文中我们可以知道:

  事务标识符:占2个字节,一次通信的过程中主站和从站的报文帧的事务标识符是一致的。

  协议标识符:占2个字节,00 00表示Modbus TCP协议。

  后面报文的长度:占2个字节,表示后面报文的长度。

  从站地址:占1个字节,表示设备的地址,也就是Salve ID的值。

  功能码:占1个字节,例子中的03表示的是读输出寄存器的值。

  起始地址:占2个字节,表示从该设备的哪个位置开始读。

  读取数量:占2个字节,表示从起始位置往后读的数量。

  长度:占2个字节,表示后面还报文的长度。

  对应的值:根据不同的存储类型所占的字节不同。

  接下来我们通过工具来模拟Modbus TCP通讯。

2、工具使用

  2.1 Modbus Slave

  打开软件之后点击菜单栏的Connection→Connect,如图所示:


  在弹出的界面选择协议类型为Modbus TCP/IP,输入IP,端口号点击OK


  随后点击Setup→Slave Definition...进入从站设置界面


  下面我们新建四个不同存储区的窗口来为后面模拟通讯做准备


  根据图中任意方式都可以新建窗口。

  可以看到四个窗口在从站地址为2,功能码分别为01、02、03、04。


  需要注意的是01、02表示的是读输出线圈和输入线圈,只有开关量,对应的数值为1=On,0=Off。


  03、04表示的是读输出寄存器和输入寄存器,


  好了,接下来我们去使用工具模拟主站来读取从站的数据。在此之前我们可以勾选Auto increment模拟数据处于变化状态。

  2.2 Modbus Poll

  使用和从站相同的方法连接之后新建四个窗口分别读取,可以看到读取实时数据成功。


  也可以通过查看日志确保主机处于正常读取状态。


  下面我们通过使用modbus-master-tcp模拟一个主站去和从站之间进行通信。

3、Java模拟主站

  3.1使用modbus-master-tcp库

  modbus-master-tcp是基于Netty编写,支持异步与并发。

  下面通过Java模拟主站读取从站线圈状态:


  输出结果:



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年3月    »
12
3456789
10111213141516
17181920212223
24252627282930
31
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864