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

4
我正在开发基于Windows C#的OPC客户端。我已经编写了代码并且可以对采样和事件进行读取(OnDataChange)。当我在本地机器上工作时,我的代码可以正常运行并且可以进行采样和事件处理。但是当我尝试从远程OPC服务器读取数据时,采样可以正常工作,但是我无法通过事件处理获取数据。我能够连接到OPC服务器,但是当我向其添加订阅时,我会遇到错误。
HRESULT: 0x80040202.
       group1.DataChanged += new DataChangeEventHandler(this.DataChangeHandler);
               group1.AdviseIOPCDataCallback();//exception HRESULT : 0x80040202.

OPC服务器已连接并注册了组,但在读取数据时出现了异常。

3个回答

3
问题通常出现在使用Advise()时,服务器将会建立一个DCOM连接到客户端(标准DCOM连接点)。客户端需要正确设置以允许此操作发生(即正确的安全设置以允许服务器在客户端上执行代码)。
您应该阅读此页面:http://www.softwaretoolbox.com/xpsp2/,它涵盖了有关如何为OPC使用正确设置DCOM的许多建议。这里有很多安全顾虑。Software Toolbox网站提供了大量的信息(还有视频)。如果您仍然无法使其正常工作,我建议您投资于一款OPC隧道产品,它将允许您在不必跳过所有DCOM循环的情况下进行远程OPC。
您不必使用OPCDA.NET才会遇到同样的问题。您可以使用任何OPC客户端并首先使其与远程服务器配合运行,然后专注于弄清楚如何将其全部连接在OPCDA.NET中。我推荐使用OPC Quick Client(附带Software Toolbox TOP Server演示版)。

六年后,你救了我的一天 :) - qwertoyo
链接已失效,但您仍然可以在archive.org上找到它。请注意,该页面包含有关在Windows XP Service Pack 2中使用新的Windows防火墙运行OPC的信息。 - jrh
这个链接现在可以使用:http://support.softwaretoolbox.com/app/answers/detail/a_id/416/kw/dcom/related/1 - Garo Yeriazarian

1
你实际遇到的问题是回调。换句话说,它不是建议调用让你失败了,而是来自OPC服务器的回调(触发建议)失败了。这个错误通常是由于用户身份验证问题引起的(即两台计算机上的用户帐户不匹配)。请检查远程计算机上的OPC服务器用户帐户。如果它在本地计算机上不存在,则找到了问题!
有一个自动化应用程序可以帮助您解决问题。我建议您下载OPC Expert(谷歌搜索)。它是一个免费的应用程序,不需要安装,也不会更改Windows注册表。它已经多次救了我。此外,供应商(OPCTI)非常乐意提供帮助,请查看他们。

1
奇怪:这是一个旧问题(2011年),我3小时前评论了@garo-yeriazarian的答案,现在有一个新用户的新答案...发生了什么? :) - qwertoyo

0

这个问题是因为当您连接到服务器时,您可能使用了第一个连接函数,即server.connect();

相反,请尝试:

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

这对我有用。希望能帮到你 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接