用于测试和调试基于Modbus的设备和网络的高效工具


Modbus是一种通用协议,通常用于工业自动化系统,智能家居系统,小型物体(仓库,温室等)的自动化网络。 该协议还用于将各种类型的设备连接到家用计算机。 Arduino和Raspberry Pi等项目的开发显着提高了对机器人和自动化相关任务的兴趣。 所有这些都确保了Modbus在业余爱好者和专业人士中的普及。

在本文中,我们将介绍用于测试和调试基于Modbus协议的设备和网络的现有软件和硬件解决方案的主要功能。

如果您熟悉协议的体系结构,则可以直接跳转到 Modbus软件的描述. 如果没有,您可以在下面找到Modbus的简短介绍。

内容


  1. 关于Modbus协议
  2. 开发和测试Modbus设备
  3. 调试基于Modbus设备的自动化系统

关于Modbus协议


Modbus是中低层(现场)自动化系统中常用的协议。 中间层是控制器级别 - 收集数据和控制技术过程的设备。 字段级别是传感器和控制器或传感器与服务器之间的交互级别。 可以找到有关自动化系统中的级别的更多详细信息 这里.

使用Modbus作为其基本协议的自动化系统的典型结构如下所示.

Modbus协议

Modbus协议的标准“环境”是RS-485/422/232。 Modbus RTU或 Modbus ASCII 努力工作。 在 TCP / IP网络, 但是,更高级别的协议是TCP传输协议,这种变体称为Modbus TCP。 在本文中,我们将讨论Modbus RTU传输模式。

Modbus协议使用主从关系实现。 这意味着通信始终由一个设备(主设备)发起,设备向从设备(服务器)发送请求并等待响应。 网络上始终有一个主站,从1到247个从站。 (有关Modbus设备的更多信息,请参阅 Modbus官方网站).

主设备以请求 - 响应格式与从设备交互。 该请求包含一个字节序列,称为帧,其中字节之间的时间根据数据传输速率标准化,并且不超过可传输1.5字节数据的间隔。 在RTU模式下,消息以至少3.5个字符时间的静默间隔开始。

请求消息按以下格式发送:

请求消息

ID - 设备地址(1个字节),
FN - Modbus功能(1个字节),
[args] - 函数参数(N个字节,取决于函数),
CRC - 校验和CRC-16(2字节).

响应消息的格式:

回复消息

如您所见,响应和请求框架具有类似的结构,但数据字段除外,它根据执行的功能提供不同的内容。

如果从属设备不支持请求的功能,或者请求的[args]字段中的参数对于此服务器不正确,则在响应的FN字段中,高位将设置为1,数据字段将为 包含有关发生错误的其他信息。

此外,特定的从设备可以具有带有附加信息的特定寄存器。

Modbus设备中引用的寄存器类型包括:

领域 访问 尺寸 描述
离散输入
只读
1位
用作输入
线圈输出
读/写
1位
用于控制离散
输入寄存器
只读
16位
用于输入
持有寄存器
读/写
16位
用于各种事物,包括输入,输出,配置数据等。

其中提供了Modbus RTU协议的完整描述 functional specification.

在设置Modbus网络时,需要考虑的一点是协议允许从安装了Modbus驱动程序的单个服务器或控制器接收的多个设备传输数据。 串行应用程序可以控制服务器的通信端口(例如COM1),因为它从多个传感器接收Modbus数据。

不幸的是,存在一个限制,因为同时在多个应用程序中打开接收端口可能会带来重大挑战。

这种困境有一个解决方案。 Virtual COM Port Driver PRO 通过Eltima,可以创建虚拟RS485端口并拆分Modbus数据,从而使多个端口可以同时接收数据。

您现在可以将进入一个物理端口的数据流复制到多个虚拟端口。 通过将多个应用程序连接到COM1端口的虚拟副本,所有应用程序都可以实现对物理端口的共享访问。

开发和测试Modbus设备


在开发和调试Modbus RTU设备时,专家使用专门的软件和硬件工具。 至于硬件设备,最简单的解决方案是RS-485 / USB转换器。 在这种类型的所有设备中,最有效的解决方案可能是MOXA UPORT 1130 / UPORT 1150.该设备易于使用,只需要很少的组装技能。 还有更复杂的解决方案,如Ethernet / RS-485(例如,MOXA的NPORT)。

实际上,当涉及到Modbus RTU设备的开发时,更经常地实现从属功能。 从设备包括各种传感器,受控继电器,I / O模块等。主设备的创建频率较低。 在自动化网络中,主功能通常由已实施Modbus堆栈的控制器或配备Modbus驱动程序的OPC服务器/ SCADA系统执行。

我们不会在本文中考虑Modbus堆栈的开发。 唯一值得一提的是FreeMODBUS库,在此基础上构建支持Modbus从站功能的设备非常容易。

用于Modbus测试的高效软件


可以在不同级别的Modbus设备开发上执行测试。Modbus测试软件 和硬件解决方案根据开发阶段和测试目的而有所不同。

在设备测试的初始阶段使用的最方便的工具之一是Modbus终端。 此解决方案有助于手动创建请求,发送请求以及分析响应。

在开发过程中,当设备接收到请求并对其作出响应时可能会出现这种情况(这可以通过数据包接收/传输LED指示,如果设计中提供了此类元素,或者使用调试器和设置进行检测 断点)但数据不会显示在终端或其他专门程序中。 在这种情况下,您将需要一个专用的串口嗅探器.

Serial Port Monitor 是目前最好的Modbus监控软件之一。 该Modbus解决方案可以轻松读取和记录通过系统COM端口的任何串行数据。 该应用程序的高级功能允许实时捕获数据,以便开发人员可以在检测到所有问题后解决所有问题。

Serial Port Monitor能够在终端模式下工作,模拟将数据从受监控的COM端口传输到插入其中的设备。 此选项对于Modbus通信测试尤其方便,因为它允许观察特定设备对特定命令和数据的反应。

Serial Port Monitor

Serial Port Monitor是一种用于测试和调试基于Modbus的设备和网络的专业软件
Serial Port Monitor logo

Serial Port Monitor

记录和分析串行端口活动
4.8 等级 基于 41+ 用户, 评论(75)
下载 14天全功能试用
Serial Port Monitor

当需要不仅检查设备是否工作(即正确响应请求)而且还测量平均故障时间时,专用软件就派上用场了。

Modbus测试仪解决方案允许记录传入和传出的数据流。 此外,所有收集的数据都可以显示在不同的视图(表格,行,转储,终端)中,这使得比较和分析它变得简单。

调试基于Modbus设备的自动化系统


与开发这些设备的人相比,调试支持Modbus协议的自动化系统和设备的专家更多。 所以,根据任务的具体情况,要求 Modbus RTU软件 会略有不同.

如果需要将控制器连接到单个从设备,则可以使用RS-485 / USB转换器,PC和专用软件或终端建立串行通信。 在这种情况下,不需要长时间的测试,然后分析大量的日志文件。 因此,操作和工具集的逻辑与从设备开发的测试阶段使用的逻辑没有区别。

如果您已有一个现成的设备网络,则可以区分以下任务:

  • 检查网络上所有设备的可操作性(即与每个独立设备通信并验证其响应的正确性);
  • 负载测试(识别设备的最大工作容量)。 建议进行多次会话并分析收集的数据,包括故障,不响应,数据损坏等。

要完成这些任务,您需要一个能够创建请求列表的终端或一个专用工具,如Modbus Poll,一个允许同时监控多个Modbus从站和/或数据区域的Modbus主站模拟器。

Modbus通信面临挑战


某些Modbus设备可以具有特定的RS-485接口设置(数据位数,奇偶校验,停止位数)。 具有不同设置的设备无法在具有相同主设备的同一网络中工作。 用于测试和配置此类设备的最方便的工具是终端程序,该程序支持在预先安装的端口参数之间快速切换或同时使用多条线路。

另一个挑战是提供与通过不同于Modbus RTU标准规范的协议工作的设备的数据交换。 例如,从属协议可能在逻辑上类似于Modbus(包结构,超时等),但使用超出标准的某些功能。 Modbus RTU通信教程 帮助您了解Modbus RTU的工作原理。

在这种情况下,最好使用允许制定任意请求的Modbus轮询或支持类似功能的终端。

标准SCADA系统对于使用此类设备效率不高,并且通过特殊的OPC服务器建立与设备的通信。

Serial Port Monitor

要求: Windows XP/2003/2008/Vista/7/8/10/Server 2012 , 9.16MB 大小
版本 7.0.342 (13.01.2018) 行说明
類別: Communication Application
Olga Weis 2月20日15:53
Olga Weis 2月22日16:16
Olga Weis 5月23日17:29
Olga Weis 10月11日16:48