我目前正在使用OPC Labs的QuickOPC库。我目前的目的是编写一个.NET控制台应用程序来从Matrikon Simulation OPC服务器读取项目值。
模拟服务器在可用IP地址的远程计算机上运行,我需要输入用户名和密码才能登录此远程计算机。
我目前的代码如下:
NetworkSecurity networkSecurity = new NetworkSecurity(UserName, Password, MachineName);
ServerDescriptor serverDescriptor = new ServerDescriptor("\\\\xxx.xxx.xxx.xxx\\Matrikon.OPC.Simulation.1", networkSecurity);
serverDescriptor.Scheme = "opcda";
DAItemDescriptor itemDescriptor = new DAItemDescriptor(ItemID);
Console.WriteLine(client.ReadItemValue(serverDescriptor, itemDescriptor));
例外情况如下:
异常:OPC操作失败,错误代码为-1073442759 (0xC0049039)发起人,起源于 ' OpcLabs.EasyOpcRaw.DataAccess.RawEasyDAClient&#39 ;.除了例外 包含有关问题的详细信息。内部例外:没有方法 可用于将ProgID转换为CLSID。
如果我尝试使用CLSID
ServerDescriptor("\\\\xxx.xxx.xxx.xxx\\{F8582CF2-88FB-11D0-B850-00C0F0104305}", networkSecurity);
异常变为:
异常:OPC操作失败,错误代码为-2147024891 (0x80070005)发起人,起源于 ' OpcLabs.EasyOpcRaw.DataAccess.RawEasyDAClient&#39 ;.除了例外 包含有关问题的详细信息。内部例外:访问被拒绝。
答案 0 :(得分:1)
"内部异常:访问被拒绝",这意味着您必须在服务器和客户端之间启用DCOM通信。服务器应用程序和OPCEnum服务(用于将ProgID转换为CLSID)。