OPC HRESULT E_FAIL连接到远程服务器时

时间:2014-09-04 09:31:41

标签: .net vb.net opc

我正在使用Kepware KEPServerEX 5.15作为我的OPC服务器和.NET中的OPC DA Automation Wrapper 2.02进行通信。

当我的应用程序和KEPServerEX安装在同一台机器上时我没有问题,一切都按预期工作,但当我将应用程序移动到另一台机器时,我在任何操作上都收到HRESULT E_FAIL异常。

我还在第二台机器上安装了KEPServerEX,该应用程序在本地指向时工作。我也尝试从指向秒服务器的第一台机器运行应用程序,仍然得到HRESULT E_FAIL例程。

我还禁用了两台计算机上的防火墙,并启用了网络DTC访问,并在本地DTC安全属性中设置了无需身份验证。

总之,当我尝试使用远程OPC服务器时,应用程序会抛出HRESULT E_FAIL。

在最简单的例子中,我正在做以下事情:

    Dim opcServer As New OPCAutomation.OPCServer
    Dim opcServerEnum As IEnumerable = CType(opcServer.GetOPCServers(hostAddress), IEnumerable)

编辑: 刚刚在系统事件日志中找到了这个:

  

DCOM从计算机10.24.7.28获得错误“2147944122”   试图激活服务器:   {13486D51-4821-11D2-A494-3CB306C10000}

1 个答案:

答案 0 :(得分:1)

OPC使用DCOM进行通信,您需要执行以下步骤来解决此问题。

  1. 从Windows“开始”菜单中选择“运行”,然后键入dcomcnfg.exe,单击“确定”,运行DCOM配置实用程序。
  2. 2.展开组件服务,计算机并右键单击MyComputer并选择属性

    1. 选择选项卡默认属性并选中“在此计算机上启用分布式COM”。默认身份验证级别应为“连接”,默认模拟级别应为“识别”。 注意:应取消选中为参考跟踪提供额外的安全性。

    2. 现在选择COM Security选项卡,在Access Permissions部分下单击Edit Defaults按钮,单击Add ...按钮并添加用户名(新创建的用户名与用户完全相同)服务器上的名称)。添加新用户后,选择它并在下面的框中选中复选框以启用(允许)本地访问和远程访问。

    3. 初始测试目的包括授予访问权限列表中的所有人。

    4. 在服务器将OpcEnum.exe添加到防火墙例外列表的计算机上

    5. 在客户端计算机的防火墙上允许端口135传入的锥形

    6. 注意:对于初始测试,请在服务器和客户端上禁用防火墙.. :))

      1. 记下运行opc服务器的Windows用户帐户的用户ID和密码,并在远程计算机上创建相同的用户名和帐户 (这是为了在两台计算机之间建立信任)
      2. 在此之后,您应该能够远程访问OPC服务器