我正在一个单线程OPC客户端程序中工作,该程序管理连接到同一OPC服务器的3个不同的西门子PLC,也是西门子的.
单线程客户端看起来像这样:
loop
begin
processPLC1;
processPLC2;
processPLC3;
end;
Run Code Online (Sandbox Code Playgroud)
每个processPLC过程都会调用底层OPC库,例如:
OPCutils.WriteOPCGroupItemValue(FGroupIf, FHandleItemOpc, Value);
Run Code Online (Sandbox Code Playgroud)
好的,现在我想在不同的线程中调用每个processPLC并且并行工作.
我做了一些研究,并使用OmniThreadLibrary开始了一些代码,但我不认为OPC代码是多线程安全的.是吗?
我应该使用task.Invoke或类似的东西吗?ReadOPC函数怎么样,返回PLC标签的值?这里最好的做法是什么?
谢谢!!!
在我的新Windows 8 64位计算机上编译C#后,在获取OPC客户端应用程序中的可用服务器列表时,我开始收到以下错误.
"OpcNetApi.Com无法将类型为'System .__ ComObject'的COM对象转换为接口类型'OpcRcw.Comn.IOPCServerList2'.此操作失败,因为QueryInterface调用COM组件上的IID为'{9DD0B56C-AD9E-43EE'的接口-8305-487F3188BF7A}由于以下错误而失败:未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG)).
可能是什么原因?
我在使用 ANSI C 堆栈中的 OPC UA 订阅和通知时遇到问题。OPC UA 第 4 部分,服务说:
5.13.1 订阅模型 5.13.1.1 描述 c) NotificationMessages 被发送到客户端以响应发布请求。
怎么送的?我真的很期待某种回调,但似乎没有。它确实说这些是为了响应“发布”请求,但是发布服务调用确认收到通知,它似乎没有请求。此外,这将是轮询,而订阅和监控的重点是不轮询。
任何人都可以提供一个示例来显示在 ANSI C 中监视数据值吗?
我想为我的应用程序实现 OPC UA 通信 (c#)
我发现一些 OPC UA 服务器模拟(Prosys 和 Softing OPC UA)我可以毫无问题地连接和读取数据。我想要的是实施 Euromap 77 标准。 http://www.euromap.org/euromap77
据我了解,通过 OPC 访问数据时必须使用模型结构。我想将此模型加载到 OPC UA 服务器并处理该数据结构是否可以将此http://www.euromap.org/files/Opc_Ua.EUROMAP77.RC1_00.NodeSet2.xml模型导入到任何免费的 OPC UA 服务器?
OPC UA 中的用户令牌类型是什么?为什么这很重要,我如何从服务器知道用户令牌类型,并将其添加到客户端以连接到服务器?
我使用OPCDotNetLib但无法从远程OPC Server读取数据.
我可以连接,比如
Type typeofOPCserver = Type.GetTypeFromProgID(clsidOPCserver, ip);
Run Code Online (Sandbox Code Playgroud)
但是查看DataChanged或ReadCompleted方法不起作用或工作错误.
我用本地OPC服务器进行了相同的测试,效果很好,我可以连接远程OPC服务器,我可以添加项目并可以读取数据.远程机器上的OPC服务器显示我已读取它们,但我看不到任何数据.好像我需要在OPCDotNetLib上为远程OPC服务器提供另一种解决方法.
我甚至在那里发表了评论
此库/ dll不能在远程服务器上运行,只能在本地使用.
是否有其他可用的OPC Client .NET库?
我想从头开始实现自己的OPC DA客户端(2.02、2.05a,3.00版),但不使用任何第三方。我也想利用OPCEnum.exe服务来获取已安装的OPC服务器的列表。是否有某种文档详细解释了逐步实现OPC客户端的过程?
我正在使用Matricon OPC Simulation.我创建了两个组,例如'g1'与'g2'和分配的一个变量如'Bucket Brigade.Int1'到这两个群体.
小组如何运作?
我看到当我更新 'Bucket Brigade.Int1'组'g1'中变量的值时'Bucket Brigade.Int1',组中变量的值'g2'也会发生变化.
是否有可能创建一些孤立的群体?或者变量每次都保持不变,无论使用哪个组?

我需要订阅 ~1000 个节点,这些节点是在层次结构中创建的,例如:
ns=2;s=0:Manufacturing.E01.Ambient.Temperature
ns=2;s=0:Manufacturing.E01.Ambient.WindDir
ns=2;s=0:Manufacturing.E01.Commands.AckAllErrors
ns=2;s=0:Manufacturing.E03.Ambient.Temperature
ns=2;s=0:Manufacturing.E03.Ambient.WindDir
ns=2;s=0:Manufacturing.E03.Ambient.WindSpeed
我以相同的方式处理每个更新,因此subscription.monitor()为每个更新调用函数并创建一个新的回调函数对我来说似乎不是最佳方式。
是否可以订阅具有模式的多个节点,例如属于以下所有节点:
ns=2;s=0:制造.E01。
我正在用 C# 编写 opc 客户端。我想获取机器上所有 opc 服务器的列表,我该怎么做?我正在使用 opc 基金会的 opc .net API。
我一直在用 C#.NET 开发一个应用程序,它可以通过 OPC 服务器与 PLC 通信。我已经搜索了基于 C#.NET 的 OPC\n客户端库,并找到了以下库。由于我从未使用过这些库,所以我不知道哪个是首选。价格在这里并不重要。如果你们用过其中任何一个或其他任何一个,请告诉我。
\n\nhttp://www.opclabs.com/products/quickopc
\n\nhttp://advosol.com/pc-54-3-easyua-client-sdk.aspx
\n\nhttps://www.plccom.net/products/opc/opc-ua-toolkit.html
\n\nhttps://technosoftware.com/opc-ua-client-sdk-net/
\n\n\n\nhttps://www.unified-automation.com/products/client-sdk/net-ua-client-sdk.html
\n