三、ModBus协议实战分析

在这里插入图片描述

0x01 前言

上一篇文章我们学习总结了Modbus协议相关的一些理论基础,在这篇文章中,我们将通过搭建Modbus仿真环境来对Modbus协议进行实际分析。

协议分析环境:

  • ModbusPoll : 用于仿真Modbus主站或Modbus客户端
  • ModbusSlave : 用于仿真Modbus从站或Modbus服务器
  • Configure Virtual Serial Port Driver :简称VSPD, 用与给电脑创建虚拟串口
  • CommMonitor :串口监控精灵,能够监控串口数据传输

软件下载:

  • ModbusPol、ModbusSlave、VSPD下载:https://pan.baidu.com/s/1vQiGP-AIYxShcZhbxbctTg 提取码: dqeg
  • CommMonitor下载:http://www.ceiwei.com/mt/

0x02 使用VSPD新建串口

正常情况下,Modbus协议调试需要两台以上的电脑联机进行调试。但是在使用了VSPD后,我们能够通过在一台电脑上创建虚拟串口的方式,在一台主机上分析Modbus通信。

安装过程就一路next就可以,安装好之后,更具提示进行软件破解。

打开软件页面如下,右边就是新增串口操作的功能位置,我们选择两个较大的串口号进行添加,如下图:

在这里插入图片描述

点击添加,成功在左侧页面看到添加的虚拟串口信息:

在这里插入图片描述

为了验证是否添加成功,可以在此电脑->管理->设备管理器找那个查看端口,如下图,成功添加。

在这里插入图片描述

0x03 新建ModBus串口连接

ModBus Slave 软件安装过程一路next就可以,安装完之后,打开输入即可进行正常使用。

打开后新建连接,Connection—>Connection,提示要输入key,输入软件包中提供的秘钥即可,然后一路OK到如下页面,设置连接信息如图,红框标出的内容需注意,连接串口选择刚刚VSPD添加的串口。

在这里插入图片描述

ModBus Poll与ModBus Slave 一样的安装和打开操作,只不过在选择串口的时候,选择创建的另一个就OK。

在这里插入图片描述

主从站点都已经建立了连接,就需要对主从站点进行设置,点击菜单栏的Setup --> Definition: function 03 ,保持寄存器信息,对于主站和从站来说都相同,如下图:

在这里插入图片描述

主从站设置好之后,可以双击从站(Slave)的寄存器的的某一行的地址,然后输入数据,并勾选上自动增加数值选项,让其每秒自动增加:

在这里插入图片描述

然后在主站中查看是否读取到寄存器的值,如果读取到,说明主从站连接成功。

在这里插入图片描述

0x04 使用 CommMonitor 进行分析

对于安装, CommMonitor串口监控支持WinXP,Win7,Win10, Win11,32/64位操作系统,默认安装即可 。

打开软件后,我们需要对串口进行监控,这里我们选择串口COM21,因为我们点击主站串口选择的就是COM21,数据主要是从主站发起,从站响应,并且由于所有数据都会通过两个串口,所以只需要监听其中一个就可以。

在串口监控设置方面,选上ModBUs视图,MOdbus RTU 模式,与我们的连接方式相对应。

在这里插入图片描述

串口监控设置好之后,我们就能看到串口中实时传输的数据了,基本情况如下:

在这里插入图片描述

如图所示,Modbus协议已经被解析,0x03功能码表示正在请求读取保持寄存器的值,请求读取的地址为0x00,读取长度为0x0A,校验码为0xC5CD。

对于从站响应包解析结果如下图:更具结果中的响应码说明从站寄存器数据读取成功。

在这里插入图片描述

然后我们再修改主站上的数据,发送到从站:

在这里插入图片描述

我们再来看看ModBus协议数据,如下图是我们的请求数据包,可见功能码是0x06,也就是写单个保持寄存器,要写入的值为222:

在这里插入图片描述

再看看响应包的内容,响应包中的功能码也为0x06,说明写入成功:

在这里插入图片描述

0x05 使用Wireshark抓包分析

首先说说在环境设置上的不同点:在新建连接的时候无论是主站还是从站,都需要将传输协议设置为Modbus TCP/IP,并且设置连接端口为同一个,如下图所示:

在这里插入图片描述

设置好连接之后,参照上述方法,在从站设置数据自增长即可,然后打开wireshark进行抓包,如下图是其中的一个请求包:

在这里插入图片描述

具体分析情况如下:

byte[0] byte[1]: 00 76 为消息号,随机指定,返回数据包的消息号的和请求数据包的消息号相同
byte[2] byte[3]: 00 00 为modbus强制标识
byte[4] byte[5]: 00 06 modbus报文的长度,往后数,一共也是6个字节,能够正确对应
byte[6]: 01 为从站编号
byte[7]: 03 功能码,标识读取保持线圈寄存器的值
byte[8] byte[9]: modbus将要读取的保持寄存器的起始地址
byte[10] byte[11]:modbus将要读取的保持寄存器的个数

再来看看响应包:

在这里插入图片描述

对响应包的具体分析如下:

byte[0] byte[1]: 00 76 为消息号,与请求包相同
byte[2] byte[3]: 00 00 为modbus强制标识
byte[4] byte[5]: 00 17 modbus报文的长度,往后数,一共也是23个字节,能够正确对应
byte[6]: 01 为从站编号
byte[7]: 03 功能码,与请求包的功能码相同
byte[8]:读取到的数据长度的总长度,往后数一共20个byte,与之对于。
byte[9] byte[10]:第一个保持寄存器的数据,2个byte
byte[11] byte[12]:第二个保持寄存器的数据,2个byte,此处为00 41 ,也就是65
byte[13] byte[14]:第二个保持寄存器的数据,2个byte
........
byte[27] byte[28]:第10个保持寄存器的数据,2个byte

0x06 参考文章

  • https://blog.csdn.net/as480133937/article/details/123219425
  • https://baijiahao.baidu.com/s?id=1728421275380437231&wfr=spider&for=pc
  • https://www.likecs.com/show-94474.html
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Modbus协议手册是一本详细介绍Modbus协议的文档。Modbus协议是一种通信协议,用于工业自动化领域中的设备通信。该协议由Modicon公司(现在是施耐德电气公司的一部分)于1979年创建,并成为工业领域中最常用的通信协议之一。 Modbus协议手册包含了详细的协议规范和通信规则,以帮助开发人员理解和实施Modbus协议。该手册通常包括以下内容: 1. 协议介绍:对Modbus协议的起源、发展和应用进行简要介绍,帮助读者了解该协议的背景和重要性。 2. 协议架构:详细描述Modbus协议的结构和组成部分,包括消息帧、寄存器地址和功能码等。 3. 通信方式:介绍Modbus协议支持的不同通信方式,包括串口通信、以太网通信和无线通信等。还可能涉及如何建立和维护通信连接以及数据传输的速率和可靠性等方面的内容。 4. 功能码:列出并解释Modbus协议支持的各种功能码,它们用于读取和写入设备的寄存器数据,并执行特定的控制操作。 5. 寄存器映射:给出设备寄存器的地址和功能的详细说明,以便开发人员正确地读取和写入设备的数据。 6. 错误处理:讨论如何处理通信错误和异常情况,以确保通信的稳定性和可靠性。 7. 应用示例:提供一些使用Modbus协议进行通信和控制的实际应用示例,帮助开发人员理解如何在实际项目中应用该协议。 总之,Modbus协议手册对于开发人员来说是一本重要的参考资料,它提供了关于Modbus协议的详细说明和指南,帮助开发人员正确地使用该协议进行设备通信和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值