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

标签 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 服务器已连接,然后也注册了组,但读取数据时出现异常。

最佳答案

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

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

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

关于c# - 使用 OPCDA.NET 工具远程访问 OPC 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978721/

相关文章:

c# - 是否可以在 jQuery 数据表中放置编辑和删除按钮?

c# - 为多个服务设置 ASMX 命名空间的最佳方法

c# - 局部变量实际上在 CLR 中分配在哪里?

python - freeopcua c++客户端和python opcua的组合在getChild()上引发错误

c# - 自动处理对象

c# - 在构造函数中传递默认值

c# - 即使在进程终止时也保证代码执行

c# - 更喜欢 EqualityComparer<T> 而不是 IEqualityComparer<T>

c# - 从对 ServerManager 类的公共(public)访问启动 Opc Ua 服务器抛出 NullPointerException

java - 用于编写简单 Java 客户端/服务器的 OPC UA 标准