Modbus协议解读及测试工具

在上一篇笔记中,波波为Workman定制了Modbus通讯协议。但是在实际工作中负责PLC开发的同事却只能借助模拟软件连接服务器发送数据。鉴于中文资料较少,特做一篇关于Modbus通讯协议的科普文章。

Modbus是一种通讯协议,通常用于工业自动化系统,智能家居系统,小型对象(仓库,温室等)的自动化网络。 该协议还用于将各种类型的设备连接到家用计算机。 诸如Arduino和Raspberry Pi之类的项目的开发大大增加了对与机器人技术和自动化相关的任务的兴趣。 在本文中,我们将介绍用于测试和调试基于Modbus协议的设备和网络的现有软件和硬件解决方案的关键功能。

一、Modbus协议:

Modbus是中下层(现场)自动化系统中常用的协议。 中间层是控制器的层级-收集数据并控制工艺过程的设备。 字段级别是传感器与控制器或传感器与服务器之间的交互级别。

下面显示了使用Modbus作为其基本协议的自动化系统的典型结构。

Modbus协议解读及测试工具

Modbus协议的标准“环境”为RS485/422/232。 Modbus RTU 要么 Modbus ASCII 解决它。 但是,在TCP / IP网络中,更高级别的协议是TCP传输协议,并且此变体称为Modbus TCP。

Modbus协议使用主从关系实现。 这意味着通信总是由一台设备(主设备)启动,该设备将请求发送到从设备(服务器)并等待响应。 网络上始终有一个主机,从1到247个从机。

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

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

Modbus协议

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

响应消息的格式:

Modbus协议

如您所见,响应帧和请求帧具有类似的构造,但数据字段除外,该字段根据执行的功能提供不同的内容.

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

同样,特定的从设备可以具有带有附加信息的特定寄存器.

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

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

Modbus RTU协议的完整说明在其功能规范中提供。

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

不幸的是,存在局限性,因为同时打开多个应用程序中的接收端口可能会带来巨大挑战。有一个解决这个难题的方法。 Eltima的 Virtual COM Port Driver PRO 允许创建虚拟RS485端口和拆分Modbus数据,因此多个端口可以同时接收数据。

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

二、开发和测试Modbus设备

在开发和调试Modbus RTU设备时,专家会使用专门的软件和硬件工具。 对于硬件设备,最简单的解决方案是RS485/USB转换器。 在所有此类设备中,可能最有效的解决方案是MOXA UPORT 1130/UPORT1150。该设备设计易于使用,并且组装技能最低。 还有更复杂的解决方案,例如以太网/ RS-485(例如,MOXA的NPORT)。

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

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

三、高效的Modbus测试软件

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

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

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

串行端口监视器能够在终端模式下工作,该模式模拟从受监视的COM端口向插入其中的设备传输数据。 该选项对于Modbus通讯测试特别方便,因为它可以观察特定设备对特定命令和数据的反应。

Serial Port Monitor

当需要专用软件时,它不仅可以检查设备是否正常工作(即正确响应请求),还可以测量故障的平均时间。

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

软件下载地址:https://zkii.lanzous.com/ilLiYl6p1ng

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

调试自动化系统和支持Modbus协议的设备的专家要多于开发这些设备的专家。 因此,根据任务的具体情况, 对Modbus软件的要求会略有不同.

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

如果您已经拥有就绪的设备网络,则可以区分以下任务:

  • 检查网络上所有设备的可操作性(即与每个单独的设备进行通信并验证其响应的正确性);
  • 负载测试(确定设备的最大运行容量)。 建议进行几次会话,并分析收集的数据是否有故障,无响应,数据损坏等。
  • 要完成这些任务,您将需要具有能够创建请求列表的终端或专用工具(例如Modbus Poll),该工具是Modbus主站模拟器,可以同时监视多个Modbus从站和/或数据区域。

五、Modbus通讯挑战

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

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

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

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

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!