Modbus Slave和Modbus Poll的使用说明

本文介绍了如何配置和使用ModbusPoll和ModbusSlave软件进行ModbusTCP/IP连接测试,包括正常连接、SlaveId不一致、Quantity不足等场景的测试,并详细讲解了异常模拟功能,如Skipresponse、InsertCRC/LRCerror和Returnexception06.Busy。
摘要由CSDN通过智能技术生成

1 软件说明

  1. Modbus Poll:是Witte Software公司开发的的Modbus主机仿真器,用于测试和调试Modbus从设备。软件支持ModbusRTU、ASCII、TCP/IP协议。支持多设备监控,可以同时监视多个从设备/数据域。
  2. Modbus Slave:Modbus从设备仿真器,主要用来模拟Modbus从站设备,接收主站的命令包,回送数据包。帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试,用于模拟、测试、调试Modbus通讯设备。

2 本例目标

  1. 下文中整个测试例子的目标是:在本机电脑上,让slave Id为2,端口为502的Modbus Slave和Poll实现功能码为0x03的Modbus TCP/IP连接。此外,连接检测地址从3开始的100个寄存器。

3 Modbus Poll配置步骤

  1. 打开软件后的主界面如下图,红字No connection表示此时没有连接任何从设备。其中,Tx表示发送帧数,Err表示错误帧,ID表示从站的ID号,F表示功能码,SR表示轮询周期,右下角的[127.0.0.1]:502显示IP地址和端口号
    poll主界面

  2. 点击导航栏里Connection->connect可以设置连接的一些参数,本次例子为Modbus TCP/IP。所以Connection选择Modbus TCP/IP,端口与从站一致设为502。还可以下载Virtual Serial Port Driver Pro软件去模拟串口连接。
    在这里插入图片描述

  3. 设置成功后,点击OK按钮。但还需要进行Modbus TCP/IP连接协议配置。导航栏Setup->Read/Write Definition。根据目标要求,把Slave Id改为2,Function选择03,Address设3,Quantity数量设100。其余属性保持默认。配置好后点击按钮OK
    在这里插入图片描述

4 Modbus Slave配置步骤

  1. 打开软件后,主界面如下图。其中,ID即从站ID,F为功能码。红字No connection表示此时未与任何设备连接。右下角[Any IP Address]:502显示ip地址和端口。
    在这里插入图片描述

  2. 导航栏Connection->connect,Connection选择Modbus TCP/IP,端口设为502,其余保持默认。配置好,点击按钮ok。
    在这里插入图片描述

  3. 导航栏Setup->Slave Definition。Slave ID即从站地址配为2,Function选择0x03,Address保持默认0,Quantity改为103。因为poll里的address和quantity表示,从address开始读quantity个寄存器值。而slave表示从Address开始共有quantity个寄存器。那么只要slave里有poll要读的寄存器即可,所以slave可以多设寄存器数量但不是不能少配置。
    在这里插入图片描述

5 各种测试

5.1 正常显示

  1. 按照上述配置后,两个软件能够实现连接,下面是它们的主界面图:
    在这里插入图片描述
    图1. Modbus Poll

在这里插入图片描述

图2. Modbus Slave
  1. 查看二者之间的报文,都是导航栏Display->communication。如下图所示,Tx表示发送报文,即poll发出的;Rx为响应报文,即slave响应回来的。而Exit表示退出,弹窗关闭;Stop停止报文,显示框内停止报文记录;Clear清空,显示框清空;Log可以把报文保存在本机上,存为txt文件。
    在这里插入图片描述
  2. 因为0x03功能码是读寄存器,所以当slave寄存器里值变化时,poll读到的值也会变化。如下图所示。但是改slave寄存器1的数值时,poll没有变化。因为poll没有address为3之前的寄存器。
    在这里插入图片描述

5.2 Slave Id不一致

  1. 如果从站ID为2,但是poll没有改,无法成功连接,报Timeout Error
    在这里插入图片描述
  2. 打开poll日志发现只有发送报文,没有响应报文。因为Slave ID不一致,slave和poll没有成功连接。
    在这里插入图片描述

5.3 Quantity不够

  1. 把slave设置的quantity改为100,即address为0,quantity为100,共100个寄存器。但是不满足poll读的要求。poll界面显示如下,报Illegal Data Address非法数据地址。
    在这里插入图片描述
  2. 打开poll的日志,有发送报文和响应报文,但是响应报文为异常的。可以与正常时作比较。
    在这里插入图片描述

5.4 测试IP Address

  1. 准备两台不同的电脑,即主机,一台运行slave,一台运行poll,让二者连接成功。
  2. 步骤如下:
    • 在主机A上运行Modbus poll,点击Connection->Connection;跳出配置弹窗。在弹窗,选择modbus tcp/IP,填写主机B的IP地址,其它配置默认,点击“OK”。
    • 在主机B上运行modbus slave,操作同步骤上,同样选择modbus tcp/IP,先去掉“Any address”,ip根据实际从机设备的IP设置,再勾上“Any address”。点击OK。即可成功建立连接。
      在这里插入图片描述
图3. Modbus Poll的设置

6 总结

  1. 上述内容是常用的连接介绍,软件导航栏的其余选项可自行探索;
  2. poll和slave不一定要同时使用,这两个软件是进行模拟主从设备的。当有实际的主平台时,可以只有slave模拟从设备,从而检测主平台性能;当有实际从设备时,也可以只有poll模拟主平台。

7 补充

7.1 异常模拟

  1. 2023-07-28,补充关于Modbus Slave的**故障模拟(Error Simulation)**功能。
  2. 此功能在”setUp->slave definition…“的弹窗里。下面是针对几种模拟的具体分析。
    在这里插入图片描述
7.1.1 Skip response
  1. Skip response:跳过响应。就是poll(主机)在发多帧报文的时候,slave有一帧不回。主机具体发多少帧会有一帧不回,没有进行统计分析,读者可自行实验。配置如下,可设500ms的响应延迟,这样能更清楚看到效果。
    在这里插入图片描述
  2. 当slave跳过响应时,poll会显示红字提示Timeout Error,且Err计数加一。在本实例中,由39变成40。
    在这里插入图片描述
  3. 在communication(Display->communication)中,可以借助Stop on Error功能来更好的分析报文情况。
    在这里插入图片描述
  4. 此外,还可以勾选Time stamp(时间戳)显示每帧报文的具体时间。红线上对应,时、分、秒,即10时50分40秒。
    在这里插入图片描述
7.1.2 Insert CRC/LRC error
  1. Insert CRC/LRC error:插入CRC/LRC错误。就是poll(主机)在发多帧报文的时候,slave这边会有一帧返回错误CRC/LRC校验。具体频率,请自行分析。
    在这里插入图片描述
  2. 此外要特别注意Not when using TCP/IP,该功能不适用于Modbus TCP/IP,因为该协议没有CRC/LRC校验。Modbus的串口通信才有校验,可以使用Virtual Serial Port Driver软件模拟串口。
    在这里插入图片描述
7.1.3 Return exception 06. Busy
  1. Return exception 06. Busy:返回设备繁忙状态,即异常码06。此部分内容可移步Modbus TCP/IP之异常响应
    在这里插入图片描述

7.2 自加说明

  1. 2023-08-07,补充关于Modbus Slave的自加功能(Auto increment)功能

  2. 双击数据框,可以修改寄存器/线圈的数值。其中,Auto increment是每次通信后自动增加数值。(可以用来做心跳包模拟)
    在这里插入图片描述

  3. 简要测试总结:

    1. 由于个人项目的需求,主要涉及两个轮询时间1000ms和500ms;
    2. 当轮询为1000ms时,在0x04功能码下auto increment就是每秒增加1;
    3. 当轮询为500ms时,在0x04功能码下auto increment为秒增肌2,即每500ms增加1。每次通信后就增加1。
    4. 但当个人自主测试时,轮询改为200ms和5000ms,并没有实现每200ms加1,或者每5000ms加1。自增频率还是在每秒加1和每秒加2里。当为200ms时,自增频率为每秒加2;当为5000ms时,自增频率为每秒加1。(通过肉眼观测和手机秒表记录的)
    5. 针对第四点的测试,欢迎大佬评论指点、解释。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值