Modbus调试工具——Modbus tools(仿真演示)
在之前的文章中,小编介绍了一款免费的Modbus主从仿真软件“MThings”,今天介绍一款与“Witte Software”开发的非常受欢迎的Modbus主站设备仿真器,支持Modbus RTU、ASCII、TCP/IP等协议模式,该软件主机和从机的应用程序分离支持单独下载安装,若需要使用仿真主机使用“Modbus Poll”,使用仿真从机下载“Modbus Slave”。

个人比较喜欢这家公司出品的从机仿真器,“MThings”仿真从机配置的寄存器在主机查询时严格区分配置寄存器的长度,比如,配置一个起始地址为0000H长度为10的保持寄存器,主机若只读取首地址为0000H长度为1的保持寄存器,从机会返回83H的错误码。上述案例可以看出主机请求的参数为从机仿真的子集,原则上从机应当正确返回数据(PLC和各类RTU设备基本都支持,不排除部分受保护的寄存器需要严格验证长度),但“MThings”仿真的从机在寄存器列表上显得特别工整,功能区分明确,非常适合配置寄存器的规划。
主机仿真会根据需求使用“MThings”和“Modbus Poll”,快速搭建测试使用“Modbus Poll”,界面简洁菜单直观,创建步骤少,而稳定使用选择“MThings”强大的配置文件导入导出(“相对Modbus Poll不同功能码需要单独保存,导入时需要同时导入多个文件,较为繁琐”)。
只有适合的工具,没有最好用的工具,不同调试环境使用对应的工具,能节省不少测试设备的时间,“Modbus Poll”与“Modbus Slave”搭建快,“MThings”搭建虽然慢但通过配置文件后期的维护性更高。
Modbus Poll下载地址:https://modbustools.com/modbus_poll.html;
Modbus Slave下载地址:https://modbustools.com/modbus_slave.html;
该软件为付费软件,支持正版,促进优秀软件发展。
一、软件功能说明
1、文件导入
可通过“File”菜单实现寄存器表“新建”“导入”“保存”“另存为”和导出“.csv”文件,也可实现工程文件的导入、导出。

区域“1” :用于寄存器表的“新建”“导入”“关闭”“保存”“另存为”;
区域“2” :用于导出“.csv”与“.mbs”;
区域“3”: 创建和打开工程文件,工程文件就是将不同的寄存器表进行关联;

区域“4”与“5”: 用于打印配置文件,最近文件列表;
2、连接
通过此接口配置对应的连接参数实现与物理接口连接,该菜单栏同时支持配置打开软件后自动连接。

配置串口连接,选择对应的串口号,配置波特率参数(“1”)注意第一次使用该软件应当注意“Advanced”中流控配置的模式是否与串口匹配,不少人第一次超时错误就是流控不匹配导致的。

在“Mode”下调整协议模式,串口仅支持Modbus RTU与Modbus ASCII两种协议;
配置网络连接,Modbus Poll仅支持TCP客户端与UDP两种模式,“3”配置Modbus通讯的等待时间,“4”配置服务器IP与端口配置连接超时时间。

Modbus Slave与Modbus Poll相反只能配置为TCP服务器与UDP模式,其余参数大致相同。
3、寄存器配置

区域“1”: 用于配置连接方法和寄存器配置,“1”为Modbus地址,“2”配置功能码,“3”首地址寄存器,“4”寄存器数量,“5”查询周期,“6”禁用连续读取,“7”配置错误时自动停止。

区域“2”: 用于保存寄存器数据日志,支持“.xlsx”与“.txt”两种文本格式;
区域“3”: 用于清除当前通讯日志与全部通讯日志,还可将当前寄存器配置保存为软件启动时的默认参数;
4、写入操作(仅Modbus Poll支持)
“Functions”操作菜单,使用“05H”、“0FH”操作从机线圈状态,使用“06H”、“10H”操作从机保持寄存器;

5、显示格式
“Display”菜单用于调整寄存器值显示格式与调试信息;

区域“1”: 调整单字(Word)显示格式,支持整型、无符号整型、16进制与ASCII、2进制等显示方法;
区域“2”与区域“3”: 调整长整型数据与浮点数据,由于超过2个字节需要考虑数据存储时的字序与字节序,比如在不同显示模式写入浮点数6546.87,从机存储方式,如下图:

区域“4”: 通讯日志显示,非常重要的功能,“1”用来启动或暂停日志显示,“2”用于保存通讯日志,“3”用于记录发生通讯错误时的日志,“4”用于现在日志输出时间;

6、自动布局
通过“Window”菜单的“Tile”进行窗口自动布局,如下:

以上Modbus Poll主要使用的功能基本讲解完毕,Modbus Slave除了在“Connection”配置上有点差异,一个是客户端,一个是服务器;
二、仿真演示
1、Modbus TCP基于TCP
配置如下:

通讯演示:

2、Modbus TCP基于UDP
配置如下:

通讯演示:

3、Modbus RTU
配置如下:

通讯演示:

4、Modbus ASCII
配置如下:

通讯演示:

常见协议2:Modbus协议与组态王软件的通信测试
上期文章我们主要介绍了一下Modbus协议的基本内容、协议优势、如何选择、应用场合、以及协议解析等内容。
下面我们接着上期来讲,如何进行一下Modbus协议测试,由于手头没有实际的测试仪表。故使用软件来模拟完成Modbus协议的通讯采集过程,以便直观的展示协议内容。
需要用到的软件有四个:
Modbusslave:用来模拟从设备,即要采集的设备。
Modbuspoll:用来模拟主设备,可以测试模拟设备是否正常。
虚拟串口软件:虚拟串口,模拟串口通讯实现的过程。
组态王(其他任意一款组态软件均可):代替modbuspoll完成采集,用来模拟主设备,即需要把采集数据显示的设备。
01 软件安装
1、安装Modbusslave软件,按照软件操作一步一步进行即可,如图1。
2、安装Modbuspoll软件,按照软件操作一步一步进行即可,如图2。
3、安装虚拟串口软件软件,按照软件操作一步一步进行即可,如图3。

图1 Modbusslave

图2 Modbuspoll

图3 虚拟串口软件
先在虚拟串口里面建立一对虚拟串口,这里我们暂时使用COM1、COM2,使用其他的端口也可以。一个用给Modbusslave使用,另一个给Modbuspoll或者组态王使用,如下图所示:

虚拟串口界面
02 modbuspoll测试
1、打开Modbusslave软件进行数据模拟,这里我们模拟的设备地址是1,通讯参数为:波特率9600,8位停止位,无校验。数据的寄存器地址为2,读取长度为6,如下图所示:

通讯参数

设备地址

数据模拟
2、Modbuspoll 读取的数据如下图所示:
Modbuspoll中设置跟上面的通讯参数一致,如下图1

图1
设备地址也跟模拟软件的地址保持一致,如图2.

图2
Modbuspoll中读取到的数值如下图3所示。

图3
这样就完成了Modbuspoll读取断开Modbusslave的数据过程。
03 组态王读取数据
1.断开Modbuspoll,使用组态王读取数据。新建一个空白项目,在项目中建立通讯驱动,如图所示:

新建驱动

选择COM口

填写设备地址

新建IO设备
2.之后新建变量,如下图所示:

新建COM口,编辑通讯参数

新建变量

定义变量

填写通讯地址寄存器地址
3.在组态王中新建画面。绑定点位。如下图所示:

新建画面,新建点位

绑定变量
剩余的两个点跟上面的一样:

绑定第二个点

绑定第三个点
4.运行组态王读到的数据如下,跟仿真的数据一样:

组态王读取到的数据
Modbusslave 中的报文显示如下(由于组态王中串口通讯的基地址从1开始,我们的起始寄存器为1):
Rx:01 03 00 01 00 06 94 08
Tx:01 03 0C 00 0F 00 00 00 D9 00 00 05 B3 00 00 1A 82
这样一个完整的Modbus采集就完成了。其他 的功能码跟03功能码的采集类似,由于篇幅限制,就不再赘述。
相关问答
modbus通讯与模拟量通讯区别?
Modbus通讯和模拟量通讯是两种不同的通讯方式,它们在通讯原理、应用范围、通讯协议和优缺点等方面存在显著的区别。通讯原理:Modbus通讯是一种串行通讯协议,通...
西门子s7-1200通讯协议16#8180什么意思?
不同协议的指令盒的反馈状态值的含义不一样。以Modbus_Comm_Load为例,16#8180表示:端口ID值无效(通信模块的端口/硬件标识符错误)。不同协议的指令盒的反...