Modbus是一种通讯协议,通常用于工业自动化系统,智能家居系统,小型对象(仓库,温室等)的自动化网络。 该协议还用于将各种类型的设备连接到家用计算机。 诸如Arduino和Raspberry Pi之类的项目的开发大大增加了对与机器人技术和自动化相关的任务的兴趣。 所有这些确保了Modbus在业余爱好者和专业人士中的普及度.
在本文中,我们将介绍用于测试和调试基于Modbus协议的设备和网络的现有软件和硬件解决方案的关键功能。
在本文中,我们将介绍用于测试和调试基于Modbus协议的设备和网络的现有软件和硬件解决方案的关键功能。如果您熟悉协议的体系结构,则可以直接跳至 Modbus软件的说明。 如果没有,下面将为您简要介绍Modbus。
表中的内容:
关于Modbus协议
Modbus是中下层(现场)自动化系统中常用的协议。 中间层是控制器的层级-收集数据并控制工艺过程的设备。 字段级别是传感器与控制器或传感器与服务器之间的交互级别。
下面显示了使用Modbus作为其基本协议的自动化系统的典型结构。

Modbus协议的标准“环境”为RS485/422/232。 Modbus RTU 要么 Modbus ASCII 解决它。 但是,在TCP / IP网络中,更高级别的协议是TCP传输协议,并且此变体称为Modbus TCP。 在本文中,我们将讨论Modbus RTU传输模式。
Modbus协议使用主从关系实现。 这意味着通信总是由一台设备(主设备)启动,该设备将请求发送到从设备(服务器)并等待响应。 网络上始终有一个主机,从1到247个从机。
主机以请求-响应格式与从机交互。 该请求包含一个称为帧的字节序列,其中字节之间的时间根据数据传输速率进行标准化,并且不超过可以传输1.5字节数据的时间间隔。 在RTU模式下,消息以至少3.5个字符时间的静默间隔开始。
请求消息以以下格式发送:

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

如您所见,响应帧和请求帧具有类似的构造,但数据字段除外,该字段根据执行的功能提供不同的内容.
如果从属设备不支持所请求的功能,或者该服务器的请求的[args]字段中的参数对于该服务器不正确,则在响应的FN字段中,高位将设置为1,而Data字段将 包含有关发生错误的其他信息。
同样,特定的从设备可以具有带有附加信息的特定寄存器.
Modbus设备中引用的寄存器类型包括:
领域 | 访问 | 尺寸 | 描述 |
---|---|---|---|
离散输入 | 用作输入 | ||
线圈输出 | 用于控制离散 | ||
输入寄存器 | 用于输入 | ||
保持寄存器 | 用于各种事物,包括输入,输出,配置数据等. |
Modbus RTU协议的完整说明在其功能规范中提供。
设置Modbus网络时,需要考虑的一点是,该协议允许从多个设备传输数据,这些数据将由安装了Modbus驱动程序的单个服务器或控制器接收。 串行应用程序可以从多个传感器接收Modbus数据,从而控制服务器的通信端口(例如COM1)。
不幸的是,存在局限性,因为同时打开多个应用程序中的接收端口可能会带来巨大挑战。
有一个解决这个难题的方法。 Eltima的 Virtual COM Port Driver PRO 允许创建虚拟RS485端口和拆分Modbus数据,因此多个端口可以同时接收数据。