Modbus TCP传输速度

2024-09-24 00:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Modbus-TCP做一些测试,我正在努力理解与每秒扫描的最大寄存器数有关的理论速度限制。在

我的测试是使用beaglebone来托管一个modbus服务器(从机),我从我的笔记本电脑上进行轮询。这两个设备都在一个专用子网上,并且它们是该子网上唯一的两个设备。服务器和客户端用pymodbus在python中实现。作为一个测试,我使用块读取来轮询6000个保持寄存器(48个块读取中每个都有125个寄存器),耗时0.17163秒。这意味着扫描速度约为35000个寄存器/秒。这是一个快速的,但它没有接近理论极限,为基础100t接口计算在上面链接的页面。在

根据这一页,Base100T连接的理论极限应该在3600000个寄存器/秒左右。我意识到由于python程序的吞吐量等原因会有一些损失,但是它比理论上的要低得多,所以我很难理解这些主要的损失在哪里。在哪里可以限制吞吐量?在

下面是我用于此测试的代码列表:

服务器(Beaglebone)

from pymodbus.server.sync import StartTcpServer
from pymodbus.datastore import ModbusSequentialDataBlock
from pymodbus.datastore import ModbusSlaveContext, ModbusServerContext

def run_server():
    holding_registers = ModbusSequentialDataBlock(0,[i for i in range(15000)])
    store = ModbusSlaveContext(hr = holding_registers)
    context = ModbusServerContext(slaves=store, single=True)

    StartTcpServer(context, address=("localhost", 5020))

if __name__ == "__main__":
    run_server()

客户端(笔记本电脑)

^{pr2}$

Tags: fromimport服务器客户端server理论吞吐量寄存器