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

时间:2011-05-12 13:30:30

标签: c# .net opc

我在Windows C#中开发OPC客户端。我开发了代码和阅读 采样上的OPC项目以及基于事件的(OnDataChange)。当我 使用本地机器然后我的代码也适用于两个采样 作为OnDataChange,但是当我尝试从远程OPC服务器读取数据时 然后采样工作正常,但我无法获取基于事件的进程数据。 我可以连接到OPC服务器,但是当我添加订阅时 然后我收到了错误。

HRESULT:0x80040202。

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

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

3 个答案:

答案 0 :(得分:3)

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

您应该阅读此页面:http://www.softwaretoolbox.com/xpsp2/,它涵盖了很多关于如何正确设置DCOM以供OPC使用的建议。这里有很多安全问题。 Software Toolbox网站有很多很棒的信息(以及视频)。如果您仍然无法使其工作,我建议您投资使用OPC隧道产品,这样您就可以在不必跳过所有DCOM循环的情况下进行远程OPC。

您不必使用OPCDA.NET来解决同样的问题。您可以使用任何OPC客户端并使其首先与远程服务器一起工作,然后专注于弄清楚如何将它全部连接到OPCDA.NET中。我推荐OPC Quick Client(附带Software Toolbox TOP Server演示)。

答案 1 :(得分:1)

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

有一个自动应用程序可以帮助您找出问题所在。我建议你下载OPC Expert(Google it)。它是一个免费的应用程序,不需要安装,也不会更改Windows注册表。它拯救了我很多次。此外,供应商(OPCTI)非常有帮助,所以请检查它们。

答案 2 :(得分:0)

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

相反,请尝试:

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

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