远程OPC连接,但不能读取

本文关键字:但不能 读取 连接 OPC 远程 | 更新日期: 2023-09-27 17:49:32

我正在用c#编写一个自定义OPC客户端应用程序,可以从RSLinx服务器读取数据。

首先,我无法远程连接到RSLINX Opc服务器。异常访问拒绝一直发生。

我然后改变了DCOM设置的MyComputer -> Com安全->访问权限和启动和激活权限,启用一切为用户'Everyone'

然后允许我连接,但是当它涉及到读取服务器时,我得到以下异常-

[System.Runtime.InteropServices.COMException]   {"Exception from HRESULT: 0x80040202"}  System.Runtime.InteropServices.COMException

我已经尽可能多地搜索了网络,它们都归结为与Dcom相关的问题。我已经简单地用Dcom设置尝试了所有的东西。我已经确保我的电脑和RSLinx服务器的设置都是启用的。

我使用两个.dll文件从OPCFoundation - opcNetApi.dll, opcNetApi.Com.dll

这是我的代码,(它可能很方便)

private void readplc()
        {
            Opc.URL url = new Opc.URL("opcda://48.5.0.05/RSLinx OPC Server");
            Opc.Da.Server server = null;
            OpcCom.Factory fact = new OpcCom.Factory();
            server = new Opc.Da.Server(fact, null);
            try
            {
                server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));
            }
            catch (Exception exy)
            {
                MessageBox.Show(exy.Message);
            }
            // Create a group
            Opc.Da.Subscription group;
            Opc.Da.SubscriptionState groupState = new Opc.Da.SubscriptionState();
            groupState.Name = "Group";
            groupState.Active = true;
            group = (Opc.Da.Subscription)server.CreateSubscription(groupState);
            // add items to the group.
            Opc.Da.Item[] items = new Opc.Da.Item[6];
            items[0] = new Opc.Da.Item();
            items[0].ItemName = "[ALARM]F20:9";
            items[1] = new Opc.Da.Item();
            items[1].ItemName = "[ALARM]F22:30";
            items[2] = new Opc.Da.Item();
            items[2].ItemName = "[ALARM]F22:6";
            items[3] = new Opc.Da.Item();
            items[3].ItemName = "[ALARM]F18:8";
            items[4] = new Opc.Da.Item();
            items[4].ItemName = "[ALARM]F22:32";
            items[5] = new Opc.Da.Item();
            items[5].ItemName = "[ALARM]F22:5";
            items = group.AddItems(items);
            try
            {
                group.DataChanged += new Opc.Da.DataChangedEventHandler(OnTransactionCompleted); // COM EXCEPTION THROWN HERE
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Console.ReadKey();
            }
        }


        private void OnTransactionCompleted(object group, object hReq, Opc.Da.ItemValueResult[] items)
        {
            for (int i = 0; i < items.GetLength(0); i++)
            {

            }
        }

我知道肯定的代码工作,因为我已经尝试构建应用程序连接作为本地主机在PC上,我试图远程连接到,它愉快地读取数据。

希望,有人会有一些想法是怎么回事,我花了超过12个小时在过去的4个工作日试图解决它!

远程OPC连接,但不能读取

这是为我工作:

_opcServer = new Server(_comFactory, null) { Url = new Opc.URL("opcda://localhost/FactoryTalk Gateway") };
_opcServer.Connect();
相关文章: