首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程OPC连接但无法读取

远程OPC连接但无法读取
EN

Stack Overflow用户
提问于 2015-05-18 16:00:25
回答 1查看 3K关注 0票数 2

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

首先,我无法远程连接到。异常访问一直被拒绝。

然后我更改了MyComputer -> Com安全->访问权限和启动和激活权限的DCOM设置,为用户“每个人”启用了所有内容

这样我就可以连接了,但是当读取服务器时,我得到了以下异常-

代码语言:javascript
复制
[System.Runtime.InteropServices.COMException]   {"Exception from HRESULT: 0x80040202"}  System.Runtime.InteropServices.COMException

我已经浏览了尽可能多的网页,它们都归结为与Dcom相关的问题。我只是用Dcom设置尝试了所有的东西。我已经确保为MyComputer和RSLinx服务器启用了设置。

我正在使用来自OPCFoundation - opcNetApi.dll,opcNetApi.Com.dll的两个文件。

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

代码语言:javascript
复制
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上构建作为本地主机连接的应用程序时,代码工作正常,它可以愉快地读取数据。

希望有人能知道发生了什么,我在过去的4个工作日里花了超过12个小时试图解决这个问题!

EN

回答 1

Stack Overflow用户

发布于 2016-03-23 17:10:03

这是为我工作的:

代码语言:javascript
复制
_opcServer = new Server(_comFactory, null) { Url = new Opc.URL("opcda://localhost/FactoryTalk Gateway") };
_opcServer.Connect();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30307892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档