Modbus协议基于modscan 的设备数据收发过程模拟


回到目录    回到末尾

一、基本介绍

  Modbus采用主从式通信,日常使用较多的是Modbus RTU和Modbus TCP/IP两种协议。Modbus RTU是使用串口通讯最广泛的协议之一,市面上有大量的Modbus协议调试工具,本文推荐使用Modscan32和Modsim32,其中,Modscan32作为Modbus主站(模拟上位机软件),Modsim32用来模拟Modbus从站,也就是模拟工业现场的Modbus设备。

  • ModScan32用来模拟主设备。它可以发送指令到从机设备(使用Modbus协议的智能仪表终端设备)中,从机响应之后,就可以在界面上返回相应寄存器的数据。
  • ModSim32用来模拟从设备。 它可以模拟采用ModBus协议的智能终端。主要用在HMI组态开发中,通过ModSim32改变寄存器状态的值,模拟智能终端的状态变化,来观察HMI画面的变化。使得画面的变量配置正确。
      ModSim32和ModScan32可以在同一台电脑中运行,用来模拟采用了Modbus协议的设备的数据收发过程,本文先介绍了虚拟串口工具VSPD(Virtual Serial Port Driver)、Modscan32和Modsim32的使用,再通过实际案例说明了串口调试工具、方法和步骤。

回到目录    回到末尾

二、工具使用说明

2.1 Modsim32的使用 - 模拟从设备 - 生成设备数据

  1. 进入modsim32目录:modscan安装包目录/Modsim32/
  2. 点击ModSim32应用程序,进入软件
    1

2.1.1 新建虚拟设备 - modsim文件

  需要特别注意的是,Modsim32每个文件仅能同时模拟一个寄存器范围,例如,要同时模拟一个Modbus设备的01线圈和03保持寄存器,需要新建两个设备并进行配置。

初次打开ModSim32需要新建一个虚拟设备

点击文件(File)->新建(new)
1
Modsim32支持同时新建多台模拟设备,新建完成后,输入:
1
注意:

  • 从站的地址(Device id):这里最低只能配置为1,对应Modbus指令里的0地址)

  • 寄存器起始地址(Address):读取的点的位置,modscan32读取的点位要加1位,即如果点的实际位置为2时,在地址栏输入3.)

  • 寄存器数量(Length):即读取的点的个数。某些设备的点数是有限的,如一块表一共就10个点,在ping这块表时,输入的数据地址长度请勿超过10个。)

  • MODBUS Point Type:可以配置使用的Modbus点位类型。(注意:修改不同的点位类型时,对应地址前面会带有不同的前缀数据,这个并不影响Modbus指令里的起始地址,只是用于PLC的地址分段)

    01:COIL STATUS:继电器状态 - 线圈(可读可写)
    02:INPUT STATUS:输入状态 - 线圈(只读)
    03:HOLDING REGISTER:保持寄存器(可读可写) - 一般选用这个选项
    04:INPUT REGISTER:输入寄存器(只读)

新建完成后,点击文件(File) -> 保存(save) 保存文件到对应位置。
1
回到目录    回到末尾

2.1.2 打开虚拟设备 - modsim文件

  modsim支持打开一起按配置好的sim文件,不用每次都去重新配置。
点击文件(File)->打开(open),选择对应的modsim文件:
2
回到目录    回到末尾

2.1.3 连接设置

配置完成后,点击连接设置(Connect)连接串口:

2.1.3.1 TCP连接配置

点击:连接设置(Connect)-> modbus/tcp
设置端口号,Modbus/TCP的默认端口号为1024。实际根据连接设备的IP和端口号来设置。
2

2.1.3.2 串口COM连接配置

点击:连接设置(Connect)-> 端口号(COM 号)

  1. 协议选择:根据通信设备选择使用RTU模式或ASCII模式,工业应用的话一般使用RTU模式,很少使用ASCII模式。另外还有"Daniel/enron/OMNI"(一种基于标准的扩展形式)的RTU和ASCII模式可以选。
    1

  2. 参数配置
       在配置窗口中配置好端口号、波特率、数据位、校验位、停止位,一般是9600波特率(9600 Baud),8个数据位(8 Data bits),无校验位(None Parity),1个停止位(1 Stop Bit)。当然这个是要根据实际通信的设备进行匹配设置。
    1

  3. 硬流控制配置: 硬件流控制如果没有使用的话,按默认设置即可。
    1

  4. 设置完点确认即可完成设置进行连接。
    (1)数据区***上方会显示通讯状态,如下图所示,说明连接失败
    1
    (2)数据区上方无文字提示,说明连接成功。
    1

【点击查看更多连接状态】

当然,ModSim32也支持通过物理串口模拟Modbus设备。

回到目录    回到末尾

2.1.4 配置 - 设置数据自变更

  ModSim32支持设置寄存器值,可以通过固定值、随机值和递增、递减四种方式设置寄存器值。双击某个寄存器,可以设置其对应值:
(1)如果要设置固定值,只需要修改Value值并选择Update按钮进行更新;
(2)如果要进行更高级的模拟,需要点击Auto Simulation,选择Random(随机)或者Increment(递增)Decrement(递减)方式,并且配置最大最小值。
双击数据项,设置属性:
1
2
英文版为:
1
回到目录    回到末尾

2.1.5 完成模拟

  1. 模拟完成后,断开连接:
    点击:连接设置(Connection)-> 断开连接(Disconnect),点击对应的协议端口断开。
  2. Modsim配置可以保存在文件中,以免进行复杂的模拟时,每次打开Modsim32都需要逐个重新配置。

回到目录    回到末尾

2.2 ModScan32的使用 - 模拟主设备

【工具使用】Modscan32软件使用详解


  Modscan32的使用与Modsim32非常类似。

  1. 进入moscan32目录:modscan安装包目录/
  2. 双击ModScan32应用程序,进入软件
    1
    功能界面如下:
    1

2.2.1 新建设备

  1. 如果没有设备,新建设备:点击文件(File)->新建(new)
    1
  2. 支持同时新建多台模拟设备,新建完成后,输入配置参数,这里的参数要与从机设备参数配置一致。
    1

注意:

  • 从站的地址(Device id):这里最低只能配置为1,对应Modbus指令里的0地址)

  • 寄存器起始地址(Address):读取的点的位置,modscan32读取的点位要加1位,即如果点的实际位置为2时,在地址栏输入3。一般建议先读少量寄存器,确认通讯上了之后再批量读多个寄存器数据。

  • 寄存器数量(Length):即读取的点的个数。某些设备的点数是有限的,如一块表一共就10个点,在ping这块表时,输入的数据地址长度请勿超过10个。)

  • MODBUS Point Type:可以配置使用的Modbus点位类型。(注意:修改不同的点位类型时,对应地址前面会带有不同的前缀数据,这个并不影响Modbus指令里的起始地址,只是用于PLC的地址分段)

    01:COIL STATUS:继电器状态 - 线圈(可读可写)
    02:INPUT STATUS:输入状态 - 线圈(只读)
    03:HOLDING REGISTER:保持寄存器(可读可写) - 一般选用这个选项
    04:INPUT REGISTER:输入寄存器(只读)

  1. 新建完成后,点击文件(File) -> 保存(save) 或点击 保存图标,自定义文件名,选择合适的位置存储。
    1
  2. 如果已经有配置好的设备:
    点击文件(File)->打开(open),选择对应的modscan文件打开。

回到目录    回到末尾

2.2.2 连接设置

2.2.2.1 TCP连接配置

点击:连接设置(Connect)

  1. 选择连接类型:TCP
  2. 连接信息配置:实际根据连接设备的IP和端口号来设置。
    1
2.2.2.2 串口(COM)连接配置

当通讯接口是串口时需要确定现在具体使用的是PC机的哪个串口。

点击:连接设置(Connect)

  1. 点击下拉框,选择对应的串口。这里的串口与从机为一对串口,如果COM3与COM4为一对串口,从机设置的为COM3,则这里选择COM4.
  2. 在配置窗口中配置好端口号、波特率、数据位、校验位、停止位,一般是9600波特率(9600 Baud),8个数据位(8 Data bits),无校验位(None Parity),1个停止位(1 Stop Bit)。当然这个是要根据实际通信的从机设备进行匹配设置。这里的参数要与从机设备的连接参数一致。
    1
    如下示例:
    1

3.点击“协议选择(rotecol selection)”,根据通信的从机设备选择使用RTU模式或ASCII模式,工业应用的话一般使用RTU模式,很少使用ASCII模式。另外还有"Daniel/enron/OMNI"(一种基于标准的扩展形式)的RTU和ASCII模式可以选。一定要与从机设备的协议类型保持一致。
2
3. 再设置下超时时间和帧间隔时间(实际就是每个窗口之间的发送间隔),超时时间可以按默认1s就行,Modbus国标规定是200ms到1s。帧间隔时间按默认20ms设置即可。
4. 另外勾选""可选择单个写入线圈/寄存器时,要使用15/16指令(支持批量写入)还是05/06指令(只支持单个写入)。
5.硬件流控制如果没有使用的话,按默认设置即可。设置完点确认即可完成设置进行连接。

2

  1. 设置完点确认即可完成设置进行连接。
    (1)数据区***上方会显示通讯状态,如下图所示,说明连接失败
    1
    (2)数据区上方无文字提示,说明连接成功。
    1
    【点击查看更多连接状态 - 故障说明】

回到目录    回到末尾

2.2.3 配置寄存器

  ModScan32支持设置寄存器:
双击某个寄存器,可以设置其信息:
1

2.2.4 主从交互

双击某个寄存器,修改“值”数据,点击“更新”,从机数据也更新:
1
从机数据也会更新:
1

2.2.5 窗口配置

可以在窗口里直接配置,也可以点击"配置"->“数据定义”,在弹窗中进行配置。
扫描速率:配置当前窗口报文发送的周期间隔。
1

2.2.6 窗口状态显示

  • Number of Polls:表示当前已发送的指令数量
  • Valid Slave Responses:表示目标从机回复的指令数量
  • 红色字样表示当前故障状态,详见以下故障说明。

    数据区***上方会显示通讯状态,红色字样表示故障状态,如下图所示:
    1
    常见的故障状态有:
    * Device NOT CONNECTED! :表示当前未连接。
    * Data Uninitialized! :表示当前窗口未进行配置。
    * MODBUS Message TIME-OUT! :表示发送指令后从设备超时未响应。而从机设备不回复,可能性有很多,比如:
    1、连接配置错误,主机的波特率、Slave ID等信息跟从机设备对应不上,从机就不会回。
    2、线路异常,电脑跟从机设备之前的通信线存在异常,也是无法正常收到回复。
    3、从机设备解析异常不回复,这个具体可以查看Modbus协议详解。
    * Checksum Error in Response Message!:响应的数据校验错误。
    * MODBUS Exception Response from Slave Device! :地址异常,一般是当访问的从机设备不存在要读取的寄存器/线圈地址时,会返回不存在此地址的02异常码,软件接收到此指令时就会报出这个错误。

回到目录    回到末尾

2.2.7 设置数据格式

点击"配置"->"显示选项"->"二进制"/"十进制"……,选择对应的数据制式(数据流里的数据也会有变化)。

1

2.2.8 显示原始报文

点击"配置"->“显示选项”->“显示数据流”,可以切换查看当前的收发数据,其中白底的是软件发送的,黑底是从设备回复的。
2

2.2.9 使用注意

  1. 这个工具上的一些时间设置,当时间设置较短时,可能不准。比如以前试过把每一帧的发送间隔时间调成1ms,但实际用示波器抓到的数据,间隔大概100ms左右,基本低于100ms的都实现不了。这个可能跟电脑本身性能有关系,所以要注意不要太过于相信这里面的时间设置,最好以实际的为主。
  2. 因为这个软件是在window系统上运行的,当系统卡顿时,可能会影响软件的运行,表现出来就是查看的报文有异常。Modbus Slave或其他串口调试工具也会有类似的问题。

2.2.10 完成模拟

  1. 模拟完成后,断开连接:
    点击:连接设置(Connection)-> 断开连接(Disconnect),点击对应的协议端口断开。
  2. ModsCAN配置可以保存在文件中,以免进行复杂的模拟时,每次打开Modscan都需要逐个重新配置。
    编辑完成后,点击 保存图标,自定义文件名,选择合适的位置存储。
    1
    回到目录    回到末尾

2.3 虚拟串口工具VSPD(Virtual Serial Port Driver)

  串口是基于硬件的物理设备,一般用于计算机和现场控制器、控制器与控制器、控制器与仪表等设备之间的通讯和数据交换,但工业设备一般都安装在工业现场,需要到现场才可以进行调试。
  上位机调试串口时,有时是没有硬件设备的,只能虚拟串口,为了验证程序的正确性,在进行实际调试前可以使用虚拟串口工具进行一些模拟和测试。
  vspd 一次虚拟2个串口,一个读,一个发,然后连接起来实现自发自收调试,让你的程序读一个串口,另外一个串口你就用来串口调试工具。
下载VSPD:VSPD6.9

2.3.1 VSPD安装

  解压缩后,右键单击VSPD.exe,选择以管理员身份运行,选择默认语言English(暂无中文版),选择安装路径(需要记住安装路径,后续步骤要用)。
1
2
3
4
5
6
7

安装完成后,复制解压缩目录/Cracked下的vspdctl.dll文件,并粘贴到前面的安装文件夹下,覆盖目标文件即可完成安装。

回到目录    回到末尾

2.3.2 VSPD使用

  VSPD可以成对创建相互连通的虚拟串口。两个串口分别用来模拟相互连接的串口设备(例如,一个串口模拟主站,另一个模拟从站)。

2.3.2.1 添加虚拟串口


这里以COM3和COM4为一对虚拟串口为例:

  1. 首先添加端口映射,在VSPD中选择确认虚拟串口的名称并选择Add pair以成对添加串口。
    1
  2. 添加完成后在VSPD中可以看到虚拟串口(virtual ports下,设备的物理串口列举在Physical ports下),在Windows的设备管理器中也能看到Virtual ports虚拟串口。
    1

回到目录    回到末尾

2.3.2.2 删除虚拟串口

  虚拟串口(virtual ports下,设备的物理串口列举在Physical ports下),在Windows的设备管理器中也能看到Virtual ports虚拟串口。
1
  如果要删除虚拟窗口,点击左侧虚拟串口链表里的串口,右侧会出现delete选项,点击delete pair进行删除:
在这里插入图片描述
注意:在卸载VSPD前,务必通过Delete ports删除虚拟串口。

回到目录    回到末尾

三、串口调试方法和步骤实例

  本例在同一台电脑中运行、模拟采用了Modbus协议的设备的数据收发过程。本例以COM3和COM4为一对虚拟串口为例,将ModSim32创建的虚拟设备连接到COM4,步骤如下:

3.1 通过VSPD创建的成对串口COM3和COM4

点击进入查看如何通过VSPD创建的成对串口COM3和COM4
1

3.2 ModSim32创建的虚拟设备连接到COM4

  需要特别注意的是,Modsim32每个文件仅能同时模拟一个寄存器范围,例如,要同时模拟一个Modbus设备的01线圈和03保持寄存器,需要新建两个设备并进行配置。

  1. 新建两个虚拟设备文件:本例新建了设备id为1和2两台虚拟设备
    1
  2. 虚拟设备连接到COM4串口,输入串口的波特率等参数。
    1

连接成功:
2
3. 设置寄存器值:
·

2
2

3.3 modscan与Modsim32进行通讯

  1. 通过modscan新建模拟文件,配置要访问的从站设备id地址与寄存器范围:
    2

  2. 连接并配置串口参数,与Modsim32进行通讯,连接成对串口的另一个(COM3),并保证两个串口参数一致。
    2
    3

  3. 连接完成后,Modscan32就可以与前节的Modsim32创建的modbus设备进行通讯了。
    4
      如果要修改某个线圈或者寄存器地址,只要双击该地址并进行设置即可,在Modscan中修改后,在Modsim中可以看到修改后的参数值。
    1
    2

  4. 退出Modscan32前,需要先断开连接。

回到目录    回到末尾

四、采集异常问题排除

  在实际开发、应用中,如果没有采集到数据,需要判断是哪里出的问题,可以通过以下步骤进行排查:

  1. ping IP地址**
    (1)能成功ping通网络,说明不是网络问题
    1
    (2)ping不同,说明网络存在故障
    2
  2. 查验端口是否开放:
  • cmd窗口输入:telnet IP地址 端口号

回到目录    回到末尾

五、更多

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ModScan是一种用于Modbus协议网络的软件工具,它允许用户轻松地控制和监控Modbus设备Modbus协议是一种串行通信协议,广泛应用于工业自动化中的设备间通信。ModScan具有很多功能,可以帮助用户快速了解Modbus设备的状态、读写寄存器等操作。 ModScan能够解析Modbus协议,并可在PC端监控Modbus设备的读写操作。用户可以通过ModScan向Modbus设备发送读写请求,以实现对设备的控制和数据采集。在使用ModScan时,用户只需要输入设备的IP地址和端口号,就可以建立和设备的通信连接。同时,ModScan也提供了一些额外的功能,比如扫描网络中所有Modbus设备,并显示设备的状态和参数。 总之,ModScan是一款非常实用的Modbus网络工具,它可以帮助用户更方便地与Modbus设备进行通信和控制,提高了工业自动化系统的效率和可靠性。 ### 回答2: Modscan是一种用于测试Modbus设备的软件工具。Modbus是一种通信协议,用于控制可编程逻辑控制器(PLC)和其他自动化设备之间的通信。Modbus设备通常用于自动化和工业控制系统中,例如:制造、能源和输送行业等。 使用Modscan测试Modbus设备可以帮助确定设备是否正常运行,帮助识别故障和排除问题。Modscan具有易于使用的图形用户界面(GUI),可以轻松快速地测试Modbus设备的读取和写入功能。在使用Modscan测试Modbus设备之前,需要正确设置设备的通信参数,例如地址和通信协议类型。 Modscan支持多种Modbus通信协议,例如Modbus RTU、Modbus ASCII和Modbus TCP。Modscan还支持多种通信接口,例如串行口(RS232/485)和以太网口。 总之,Modscan是一种非常有用的软件工具,可帮助检测和排除Modbus设备中的故障和问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值