C# 使用OPCDA.NET工具远程访问OPC服务器

C# 使用OPCDA.NET工具远程访问OPC服务器,c#,.net,opc,C#,.net,Opc,我正在windows C#中开发OPC客户端。我已经开发了代码并进行了阅读 关于采样和基于事件(OnDataChange)的OPC项目。当我 使用本地机器时,我的代码也可以很好地处理这两种采样 当我试图从远程OPC服务器读取数据时 然后采样工作正常,但我无法在基于事件的进程上获取数据。 我可以连接到OPC服务器,但当我将订阅添加到 那我就错了 HRESULT:0x80040202 group1.DataChanged += new DataChangeEventHandler(th

我正在windows C#中开发OPC客户端。我已经开发了代码并进行了阅读 关于采样和基于事件(OnDataChange)的OPC项目。当我 使用本地机器时,我的代码也可以很好地处理这两种采样 当我试图从远程OPC服务器读取数据时 然后采样工作正常,但我无法在基于事件的进程上获取数据。 我可以连接到OPC服务器,但当我将订阅添加到 那我就错了

HRESULT:0x80040202

       group1.DataChanged += new DataChangeEventHandler(this.DataChangeHandler);
               group1.AdviseIOPCDataCallback();//exception HRESULT : 0x80040202.

OPC服务器已连接&然后也注册组,但我在读取数据时遇到了异常。

问题通常是,当您使用
advice()
时,服务器会将DCOM连接回客户端(标准DCOM连接点)。需要正确设置客户端以允许这种情况发生(即,正确的安全设置以允许服务器在客户端上执行代码)

您应该阅读本页:,其中包含了许多关于如何正确设置DCOM以供OPC使用的建议。这里有很多安全问题。软件工具箱网站上有大量的信息(还有视频)。如果您仍然无法让它正常工作,我建议您投资一款OPC隧道产品,它可以让您在不需要跳转所有DCOM循环的情况下进行远程OPC


您不必使用OPCDA.NET来解决同样的问题。您可以使用任何OPC客户端,首先让它与您的远程服务器一起工作,然后集中精力弄清楚如何在OPCDA.NET中将其连接起来。我推荐OPC Quick Client(随软件工具箱顶部服务器演示一起提供)。

这个问题是因为当您连接到服务器时,您可能会使用第一个连接功能,即
Server.connect()

相反,请尝试:

server.connect(new Opc.ConnectData(new System.Net.NetworkCredential()));

这对我有用。希望有帮助:)

您实际遇到的问题是回调。换句话说,让您失败的不是advice调用,而是来自OPC服务器的回调(advice触发)。此错误通常由用户身份验证问题(即,两台计算机上的用户帐户不匹配)引起。在远程计算机上查看OPC服务器的用户帐户。如果您的本地计算机上不存在,则表明您发现了问题


有一个自动应用程序可以帮助您解决问题。我建议您下载OPC专家(谷歌it)。它是一个免费的应用程序,不需要安装,并且不更改Windows注册表。它救了我很多次。此外,供应商(OPCTI)非常有帮助,所以请查看它们。

6年后,您保存了我的一天:)链接已失效,但您仍然可以找到它,请注意,该页面包含有关在Windows XP Service Pack 2中使用新的Windows防火墙运行OPC的信息。该链接现在起作用了:奇怪:这是一个老问题(2011年),我在3小时前评论了@garo yeriazarian的答案,现在有一个新用户的新答案。。。发生了什么事?:)