【问题标题】:is it possible to to communicate with OPC server from multiple threads in same application?是否可以从同一应用程序中的多个线程与 OPC 服务器进行通信?
【发布时间】:2014-02-13 20:52:58
【问题描述】:

我正在从事一个自动化项目,我需要并行处理 21 个固定安装的条形码扫描仪(即所有扫描仪将一直运行),以实现我使用多线程。在这里,每个线程将处理一个条形码扫描仪。

现在,我想使用 O.P.C. 更新 P.L.C (DB/Memory Blocks/Tags) 中的扫描数据。所以,我想知道是否可以通过在多线程应用程序中使用 O.P.C 客户端来更新 P.L.C 值。
我正在使用 Siemens P.L.C(型号:- CPU 315-2 PN/DP,step 7,300 系列)。

我也想知道我应该使用 O.P.C Server 还是 LibNoDave。将有大约 300 个标签(P.L.C 中的数据块),我需要读取并检查数据更改事件。

【问题讨论】:

标签: c# multithreading plc opc libnodave


【解决方案1】:

最好让您的架构尽可能简单并避免使用大量线程,多线程可能会使事情变得不必要地复杂化,并且如果线程需要同步,还需要付出性能代价。由于您有一个 OPC 服务器和多个线程连接到它,您必须小心不要让线程相互干扰。如果我是你,我会改为使用一个线程来设置对带有所有条形码扫描仪的 OPC 服务器的订阅。然后另一个线程来监视那个线程,看看它是否还在工作。

【讨论】:

    【解决方案2】:

    简短的回答是肯定的,但还有更多内容,A Murray 提供的链接很好读。 您还应该考虑使用多线程是否可以真正为您带来任何速度优势。使用 OPC-DA,您只需一个线程即可轻松处理每秒数千次数据更改 - 您真的需要更多线程吗?

    【讨论】:

    • 亲爱的朋友,感谢您的回复。我没有使用多线程来获取数据更改事件。这是在我收到数据更改事件后执行并行活动,例如打开扫描仪的套接字并同时触发扫描仪。
    • 如果并行活动没有做任何与 OPC 相关的事情,那么使用它没有任何问题。事实上,在编写 OPC 回调处理程序时,通常需要使用多线程方法,因为您不应该长时间阻塞回调。因此,在回调处理程序中,您只需将数据存储在某处,然后从单独的线程中检索数据。
    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2018-02-10
    • 2016-06-26
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多