4

我正在 Windows C# 中开发 OPC 客户端。我已经开发了代码并阅读了采样和基于事件的 OPC 项目(OnDataChange)。当我使用本地机器时,我的代码在采样和 OnDataChange 上都可以正常工作,但是当我尝试从远程 OPC 服务器读取数据时,采样可以正常工作,但我无法在基于事件的过程中获取数据。我能够连接到 OPC 服务器,但是当我向它添加订阅时,我得到了错误。

HRESULT:0x80040202。

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

OPC 服务器已连接,然后也注册了该组,但读取数据时出现异常。

4

3 回答 3

3

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

你应该阅读这个页面: http: //www.softwaretoolbox.com/xpsp2/,它包含了很多关于如何正确设置 DCOM 以供 OPC 使用的建议。这里有很多安全问题。Software Toolbox 网站有很多很棒的信息(还有视频)。如果您仍然无法使其正常工作,我建议您购买 OPC 隧道产品,该产品可让您进行远程 OPC,而无需跳过所有 DCOM 循环。

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

于 2011-05-17T23:42:59.763 回答
1

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

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

于 2017-02-27T18:38:39.370 回答
0

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

相反,请尝试:

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

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

于 2016-06-11T17:44:23.043 回答