我正在研究用于工业SCADA系统的传统modbus程序。
目前,c ++程序既充当modbus TCP服务器又充当客户端。客户行为:它从许多供应商处读取……
如果没有关于实现的详细信息,我只能猜测问题是您的程序是单线程的,并且延迟是由PLC等待响应引起的。
因此,如果我的假设是正确的,您需要切换到“选择”功能并重新设计您的软件完全异步。您必须将所有套接字(已连接和已接受)放入FD集并在其上等待事件。
的 Win32的: 强> https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-select
的 Linux的: 强> https://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=select&category=2
我在win32上写了相同的应用程序(但没有计算),它很容易处理大约200个PLC,在SCADA的同一台机器上工作。