【发布时间】:2020-12-23 17:03:13
【问题描述】:
所以,这是我第一次在这里发帖,所以请耐心等待。(不是以英语为母语的人) 我正在一个项目中工作,我必须将 OPC DA 客户端连接到 OPC UA 服务器(西门子 PLC)。 三个月前,我从未听说过 OPC、PLC 等。对我来说都是全新的,有点困惑。 到目前为止,我在 OPC DA 客户端中使用 Wrapper(OPC Expert),将其作为 OPC UA 服务器显示给我。 所以我两边都有两台服务器,中间有一个客户端(C# 堆栈)(我正在处理),用于进行通信。 客户端为每个服务器打开两个会话,并订阅双方感兴趣的项目(标签)。所以我在一侧得到更改并将其写入另一侧。目前我正在使用两个线程来读取每个订阅并写入更改。我正在使用将节点从一台服务器映射到另一台服务器中的节点的文件。引号之间是文件的一行,(+) 是分隔符。 "ns=3;s=UMUARAMA->OA.OpcOAenterprise.1->Test.Equipment.Motor.CV_E101.EquipmentControlCommand+ns=3;s="MotorControl_CV_E101"."EquipmentCommand"。" 目前我正在逐一读取订阅中的受监控项,如果附加任何值,我将值写入另一台服务器。我很确定有很多不那么愚蠢的方法可以做到这一点。所以,我正在寻求一些建议。提前致谢。
【问题讨论】:
-
嗯 - 我不太确定你在这里问什么。如果这有效 - 它有效。为什么你想要一个不同的解决方案?你遇到性能问题了吗?这需要大量维护吗?你的天使/问题是什么?
-
您可以将两台服务器视为数据库。通常是 c# 在您使用 BulkCopy 的数据库之间进行复制。我不知道客户端和服务器之间的连接类型,所以不确定接口是否支持 BulkCopy。也许以下内容会有所帮助:cogentdatahub.com/products/datahub-opc-gateway/?https://…
-
@jdweng - 谢谢,它支持某种批量复制。链接中的软件似乎是一个包装器,就像我已经在使用的一样,但我会看看。
-
@sommmen - 好吧,也许有人遇到了类似的任务并有一些建议可以提供。对于我所读到的内容,我向服务器调用发布请求,以便它知道我正确接收了数据。但我只是从订阅中读取受监控的项目。它会导致任何问题吗?