无法连接到 OPC服务器[无此类接口支持(异常来自HRESULT:0x80004002(E_NOINTERFACE))]
来源:https://stackoverrun.com/cn/q/10400663
无法连接到ABB Freelance OPC服务器[无此类接口支持(异常来自HRESULT:0x80004002(E_NOINTERFACE))]
我的OPC客户端应用程序使用OPC NET API 2.00
时出现问题,所以当我想连接到ABB Freelance OPC Server它在调用Opc.Server.Connect(Opc.ConnectData)
方法时会引发异常。
例外:
Unable to cast COM object of type 'System.__ComObject' to interface type 'OpcRcw.Comn.IOPCServerList2'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{9DD0B56C-AD9E-43EE-8305-487F3188BF7A}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
可能问题涉及IOPCServerList2
接口:这里
#region Assembly OpcRcw.Comn.dll, v1.10.2.0
// C:\Windows\assembly\GAC_MSIL\OpcRcw.Comn\1.10.2.0__9a40e993cbface53\OpcRcw.Comn.dll
#endregion
using System;
using System.Runtime.InteropServices;
namespace OpcRcw.Comn
{
[Guid("9DD0B56C-AD9E-43EE-8305-487F3188BF7A")]
[InterfaceType(1)]
public interface IOPCServerList2
{
void CLSIDFromProgID(string szProgId, out Guid clsid);
void EnumClassesOfCategories(int cImplemented, Guid[] rgcatidImpl, int cRequired, Guid[] rgcatidReq, out IOPCEnumGUID ppenumClsid);
void GetClassDetails(ref Guid clsid, out string ppszProgID, out string ppszUserType, out string ppszVerIndProgID);
}
}
创建 09 6月. 16 Reza Ebrahimi
2 答案
排序:
有效
最旧
投票
E_NOINTERFACE是一个通用的COM错误(不那么有用,以指示真正的问题)。
检查:
在客户端: “OPC核心组件可再发行组件” 和的RCW mergemodule安装?
在客户端上:防火墙设置?
在服务器上:abc opc服务器的dcom设置是否正确?
只是看看在IOPCCServerList2的源代码,我IOPCServerList2有不同的版本比你的。 我想你尝试使用为OPC DA 1.0设计的旧合并模块/ api(这是一个非常古老而又不严格的opc标准),大多数opc服务器都期望OPC DA 2.0客户端连接。
这里是我的:
#region Assembly OpcComRcw, Version=2.0.105.1, Culture=neutral, PublicKeyToken=9a40e993cbface53
// C:\WINDOWS\assembly\GAC_MSIL\OpcComRcw\2.0.105.1__9a40e993cbface53\OpcComRcw.dll
#endregion
using System;
using System.Runtime.InteropServices;
namespace OpcRcw.Comn
{
[Guid("9DD0B56C-AD9E-43ee-8305-487F3188BF7A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOPCServerList2
{
void CLSIDFromProgID(string szProgId, out Guid clsid);
void EnumClassesOfCategories(int cImplemented, Guid[ ] rgcatidImpl, int cRequired, Guid[ ] rgcatidReq, out IOPCEnumGUID ppenumClsid);
void GetClassDetails(ref Guid clsid, out string ppszProgID, out string ppszUserType, out string ppszVerIndProgID);
}
}
是的,当连接到其他OPC服务器品牌(如横河电机或Matrikon)时,所有这些都可以正常工作,但不适用于ABB OPC服务器。 – Reza Ebrahimi 13 6月. 16
你有一些opc测试客户端尝试连接吗? – apr 13 6月. 16
是的,Matrikon和一些其他商用opc客户端可以连接和读取数据,但.Net API无法连接。 – Reza Ebrahimi 13 6月. 16
IOPCCServerList2是OPCENUM服务,而不是服务器本身的一部分的一部分。
如果从远程进行连接,则应用程序正在访问与服务器在同一台计算机上运行的OPCEnum服务。
IOPCCServerList2是IOPCCServerList的新版本,最可能的是随ABB Freelance安装的OPCEnum服务版本太旧。
您可以通过安装OPC Foundation website中提供的最新OPC核心组件来更新OPCEnum服务。
是的,这是我的问题,但对于您的答案,我们无法在OPC服务器站上安装或更新任何软件,我们有工厂限制。 – Reza Ebrahimi 14 6月. 16
然后,您将需要避免使用OPCEnum或修改.NET API,以便它将使用IOPCServerList而不是IOPCServerList2。您可以通过使用服务器的CLSID而不是ProgID来避免它。但我不是100%确定的.NET API。 – Jouni Aro 14 6月. 16
感谢Jouni Aro,为了忽略副作用,'IOPCServerList2'是一个内部接口,我无法改变它使用'IOPCServerList',我们已经解决了将OPC API从.NET API转换为另一种基于Python的API的问题。 – Reza Ebrahimi 15 6月. 16
需要安装:
OPC Core Components 2.00 Redistributable 2.20.msi
无法连接到 OPC服务器[无此类接口支持(异常来自HRESULT:0x80004002(E_NOINTERFACE))]的更多相关文章
- excel System.Runtime.InteropServices.COMException (0x80010105): 服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E
System.Runtime.InteropServices.COMException (0x80010105): 服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E ...
- C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT) private Microsoft.Office.Intero ...
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开 ...
- IIS中使用Microsoft.Office.Interop.Excel 常见问题:RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA) 的异常。等
IIS中使用Microsoft.Office.Interop.Excel 异常1: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} ...
- System.Runtime.InteropServices.COMException:“服务器出现意外情况。 (异常来自
.Net MVC导出Excel的时候,一直报错,如题.原因是因为福昕阅读器,这样设置 execl->点击文件>选项>加载项,选择com加载项,把祈福阅读器勾掉.
- 基于第三方开源库的OPC服务器开发指南(1)——OPC与DCOM
事儿太多,好多事情并不以我的意志为转移,原想沉下心好好研究.学习图像识别,继续丰富我的机器视觉库,并继续<机器视觉及图像处理系列>博文的更新,但计划没有变化快,好多项目要完成,只好耽搁下来 ...
- C#.Net平台与OPC服务器通讯
最近,我们Ndolls工作室承接了山大某个自动化控制项目,主要做了一套工控信息化系统,其中有一个功能模块是将系统管理的一部分数据参数发送至OPC服务器,由OPC服务器接收数据后执行相应工控操作.第一次 ...
- OPC服务器开发浅谈 — 服务器模型(转)
这里主要讨论的是OPC Data Access 2.0服务器的开发,在掌握了这个最常用的OPC服务器开发之后,对其它类型的OPC服务器,如A&E.HDA等就可以触类旁通了. 一个OPC服务器的 ...
- linux服务器无telnet等测试工具,测试http+json服务连通性
1. 问题描述: 1.公司内部服务器需要通过http接口方式访问另一公司内部接口服务器. 2.申请信息安全开通访问权限,但是只能开通到服务器+端口号,例如:192.168.1:8080,无ping权限 ...
随机推荐
- 文件系统--fs(读)--fs.read
var fs = require('fs');var buf=new Buffer(1024);//fs.open(); //fs.open(path,flags,mode,callback);/* ...
- Kaggle:Home Credit Default Risk 特征工程构建及可视化(2)
博主在之前的博客 Kaggle:Home Credit Default Risk 数据探索及可视化(1) 中介绍了 Home Credit Default Risk 竞赛中一个优秀 kernel 关于 ...
- Django之模版层-语法:标签 {% %}
标签 {% %} for循环以及for..empty.. <h4>for标签</h4> {% for i in lis %} <p>{{ i }}</p> ...
- html+css实现小米商城首页静态页面
学了一个星期的html和css,用新学的东西写点东西,仿照小米商城的首页按照它的页面布局盗用它的图片写了个小米商城的静态页面. 源代码:链接:https://pan.baidu.com/s/1qf63 ...
- ERROR: gnu-config-native-20150728+gitAUTOINC+b576fa87c1-r0 do_unpack: Function failed: Fetcher failure: Fetch command failed with exit code 128, output: fatal: the '--set-upstream' option is no longer
/********************************************************************** * ERROR: gnu-config-native-2 ...
- conda创建虚拟环境
可能自己常常会遇到一个这样的问题,自己服务器安装的是python2,但是现在有的代码是基于python3的啊 怎么办?自己将代码转换成python2的呗,是的,我曾经就这样做过,但是真的是很鸡肋 更有 ...
- 防止sql注入的函数addslashes()
<?php $str = addslashes('Shanghai is the "biggest" city in China.'); echo($str); ?> ...
- 测试那些事儿—Linux搭建环境基础步骤
Linux搭建环境基础步骤 准备工具:SecureCRT工具(Linux工具,连接服务器)FTP传输工具(上传文件到服务器)MySQL连接工具 安装包(以下文件均为压缩包rpm格式和tar.gz):J ...
- 51Nod 1084:矩阵取数问题 V2(多维DP)
1084 矩阵取数问题 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励 ...
- PTA——数列求和
PTA 7-34 求分数序列前N项和 #include<stdio.h> int main() { int i,n; ,fm = ,sum = ; scanf("%d" ...