我正在用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}$
目前没有回答
相关问题 更多 >
编程相关推荐