0

我已经导入了 pyads ( Python lib以通过 TwinCAT 库与 TcAdsDll.dll 进行通信。我在这里读到这个库具有多线程功能。

是否也可以在多个进程中使用 pyads 库而不会发生冲突?

为避免冲突,我考虑制作一个 pyads 包装器,它将 ADS 数据共享给具有多处理和队列的多个进程,但与仅执行相比,这将是相当多的工作:

# process1:
pyads.open_port()
self.adr = pyads.AmsAddr('192.168.2.11.1.1', 851)
data = pyads.read_by_name(adr, args)

在类似的过程中:

# process2:
pyads.open_port()
self.adr = pyads.AmsAddr('192.168.2.11.1.1', 851)
data = pyads.read_by_name(adr, args):

仅在多个进程中运行 pyads.open_port() 不会引发错误。我希望有人能告诉我是否会在两个进程中收到相同的数据而没有冲突/优先级。

[编辑:]我们通过多处理和在进程之间共享数据来实现我们的系统,以避免出现同步问题的风险。这完美无缺,但引入了一些数据流和编程开销。

4

1 回答 1

1

根据我在pyads源代码中看到的内容以及我对 TcAds dll 的了解,您应该对两个进程建立自己的连接感到满意。您可以有多个客户端同时连接到 TwinCAT 系统。ADS 路由器将确保数据通信的正确同步。

于 2017-01-20T20:16:14.150 回答