Modbus数据刷新率取决于几个非显而易见的参数。在设计阶段,出现了如何评估未来接口线速度的问题。在本文中,我们考虑了影响Modbus RTU上数据更新速度的因素,并进行了一些标准计算,并且在本文结尾处,将有一个链接到Web计算器,以了解Modbus RTU线路的速度。Modbus仍然是工业设备中使用最广泛的通信协议。协议的描述及其流行的原因可以在许多文章中找到,例如在此处。进一步了解您熟悉该协议如何工作的基础知识。我们将考虑Modbus RTU,但研究结果将部分适用于Modbus TCP。为了计算速度,我们首先考虑物理协议(OSI模型的第一级)。Modbus RTU使用物理接口RS-485,RS-422或RS-232(实际上Modbus不使用后者)。为了进行信号传输,这些接口使用UART(通用异步收发器)。您可以在此处阅读有关UART的更多信息。标准UART软件包包括:- 起始位()1位
- 有用的数据(data)7-8位
- 奇偶校验位(parity_bit0-1位
- 停止位(stop_bit1-2位
即,对于有用数据的每7-8位,发送2-4个辅助位。有效负载率(Vdata)将低于界面速度(Vuart)计算Vdata 可以根据公式:Vdata=Vuart∗datastart_bit+data+parity_bit+stop_bit
接下来,您需要了解Modbus主站如何在数据链路层(OSI模型级别2)与从站进行通信。由于设备的物理接口的特殊性,连接到线路的设备顺序传输数据,也就是说,在给定时间只有一个设备可以发送数据。因此,向导会周期性地与从站通信,从而顺序地将寄存器写入到从站。从从设备读取寄存器的完整周期如下所示:- 延迟(最少3.5个字符= 28位,以下以秒为单位)
- 读取请求传输(8字节)
- 从设备的响应延迟(至少28位,通常为数十毫秒,以形成响应消息)
- 从设备发送响应消息(对于Modbus RTU,最大为256字节)。
一些工程师选择接口的四线版本,以期实现更快的传输(暗示并行数据传输到接收和传输)。显然,此解决方案不起作用。2x和4x有线线路的数据发送顺序相同。我们使用以下行参数计算在125个保持寄存器的完整读取周期(Modbus RTU的最大数量)上花费的时间:帧格式:8N1(8个数据位,无奇偶校验位,1个停止位)速度uart:Vuart= 19200 bit / s有效负载传输速率:Vdata= 15360 bit / s主延迟master_silence = 28位/ Vuart(这是最小允许延迟,通常更大)从站响应延迟:slave_silence= 0.04 s(该值取决于从站设备)使用125个保持寄存器发送请求:8字节或64位125个保持寄存器应答:256字节或2048位用于计算读取周期时间的公式:Tcycle=silence_master+64bit/Vdata+slave_silence+2048bit/Vdata=0.179s
写入寄存器的顺序几乎相同。主软件包的大小将更大,因为 包括有关可写寄存器的信息。从站成功记录的确认将是8个字节。根据Modbus规范,可以将32个从站连接到RS-485 / 422线路。奴隶的讯问也通常是成圈地依次进行的。了解如何快速更新数据N 奴隶需要成倍增长 Tcycle在 N称之为完整更新时间。 Tfull。一些计算Tfull(读取和写入最大保持寄存器数)各种通讯参数:帧格式:8N1,Vuart = 19200位/秒,从站数量, N= 16Tfull= 5.727 s帧格式:8N1,Vuart = 9600 bit / s,从站数量, N= 16Tfull= 10.173 s帧格式:7E1,Vuart = 19200位/秒,从站数量, N= 16Tfull= 6.355 s帧格式:8N1,Vuart = 19200位/秒,从站数量, N= 2Tfull= 0.716 s如您所见,帧格式会影响数据更新时间,但影响不大。数据传输速度会显着影响,但是在我们的示例中,我们传输了最大数量的寄存器,在实际项目中,这个因素可能并不那么重要。最重要的是,从站的数量会影响数据刷新率。为了简化计算,我们制作了一个Web应用程序,用于估算通过Modbus更新数据的时间