Пример #1
0
        static void Browser()
        {
            OPCBrowser        browser = _opcServer.CreateBrowser();
            OPCNamespaceTypes type    = (OPCNamespaceTypes)(browser.Organization);

            PrintInfo("browser Type", type.ToString());

            browser.ShowBranches();

            for (int i = 1; i <= browser.Count; i++)
            {
                Console.WriteLine(browser.Item(i));

                browser.MoveDown(browser.Item(i));
                browser.ShowBranches();

                for (int j = 1; j <= browser.Count; j++)
                {
                    Console.WriteLine(string.Format("   {0}", browser.Item(j)));


                    browser.MoveDown(browser.Item(j));
                    browser.ShowLeafs();

                    for (int k = 1; k <= browser.Count; k++)
                    {
                        Console.WriteLine(string.Format("      {0}   ItemID = {1}", browser.Item(k), browser.GetItemID(browser.Item(k))));
                    }
                }
            }
        }
Пример #2
0
        private void browseBranch(Branch Parent)
        {
            _OPCBrowser.ShowBranches();

            if (_OPCBrowser.Count > 0)
            {
                for (int i = 1; i <= _OPCBrowser.Count; i++)
                {
                    _OPCBrowser.MoveDown(_OPCBrowser.Item(i));

                    //string BranchName = _OPCBrowser.CurrentPosition;

                    //while(BranchName.Contains("."))
                    //{
                    //    BranchName = BranchName.Substring(_OPCBrowser.CurrentPosition.IndexOf(".") + 1);
                    //}

                    Branch b = new Branch(Name: _OPCBrowser.CurrentPosition, Server: this._OPCServer, Parent: Parent);

                    browseBranch(b);
                    browseLeaf(b);

                    _OPCBrowser.MoveUp();
                    _OPCBrowser.ShowBranches();
                }
            }
        }
Пример #3
0
        private bool LoadDataToTree(OPCBrowser oPCBrowser, TreeNodeCollection treeNodeCollection, string root)
        {
            oPCBrowser.Organization.ToString();

            oPCBrowser.ShowBranches();

            bool isLeaf = true;

            foreach (object turn in opcBrowser)
            {
                TreeNode node = null;
                node = treeNodeCollection.Add(turn.ToString());
                opcBrowser.MoveDown(turn.ToString());
                if (LoadDataToTree(oPCBrowser, node.Nodes, root + "\\" + turn.ToString()))
                {
                    //if (turn.ToString().Equals("PV"))
                    //{


                    //textBoxResult.Text +=root+"\\"+turn.ToString() + "\r\n";
                    File.AppendAllText(path, root + "\\" + turn.ToString() + "\r\n", Encoding.UTF8);

                    // }
                }
                oPCBrowser.MoveUp();
                isLeaf = false;
            }
            return(isLeaf);
        }
Пример #4
0
        /// <summary>
        /// OPCBrowser遍历组下所有点,并构建Tree节点
        /// </summary>
        /// <param name="nodes"></param>
        public void ShowBranchesByTree(TreeNodeCollection nodes)
        {
            TreeNode treeNode;

            oPCBrowser.ShowBranches();
            foreach (object branch in oPCBrowser)
            {
                if (branch.ToString().Equals("_Hints") || branch.ToString().Equals("_System"))//排除这两项
                {
                }
                else
                {
                    treeNode = nodes.Add(branch.ToString());
                    oPCBrowser.MoveDown(branch.ToString());
                    ShowBranchesByTree(treeNode.Nodes);
                    oPCBrowser.MoveUp();
                }
            }
        }
Пример #5
0
        /// <summary>
        /// OPCBrowser遍历组下一层节点,并构建Tree节点
        /// </summary>
        /// <param name="nodeId"></param>
        public List <OpcNode> ShowBranches(string nodeId = "")
        {
            if (nodeId.IsNullOrEmpty())
            {
                //返回根节点,需要顺序执行下列3个函数。
                oPCBrowser.MoveTo(oPCBrowser.CurrentPosition.Split('.'));
                oPCBrowser.ShowLeafs(true);
                oPCBrowser.MoveToRoot();
            }
            else
            {
                oPCBrowser.MoveTo(nodeId.Split('.'));
            }

            oPCBrowser.ShowBranches();
            List <OpcNode> listNode = Task.Run(() =>
            {
                List <OpcNode> list = new List <OpcNode>();
                foreach (object branch in oPCBrowser)
                {
                    string key          = "ClassIcon";
                    bool isExpand       = false;
                    string branchNodeId = "";
                    //拼接nodeId
                    if (nodeId.IsNullOrEmpty())
                    {
                        branchNodeId = branch.ToString();
                    }
                    else
                    {
                        branchNodeId = nodeId + "." + branch.ToString();
                    }
                    oPCBrowser.MoveDown(branch.ToString());
                    oPCBrowser.ShowBranches();
                    if (oPCBrowser.Count > 0)
                    {
                        isExpand = true;
                    }
                    var child = new OpcNode(branch.ToString(), branchNodeId, key, isExpand);
                    list.Add(child);
                    oPCBrowser.MoveUp();
                }
                return(list);
            }
                                               ).Result;

            oPCBrowser.MoveToRoot();
            return(listNode);
        }
Пример #6
0
 /// <summary>
 /// 将数据获取到treeview
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void LoadDataToTree(OPCBrowser oPCBrowser, TreeNodeCollection treeNodeCollection)
 {
     oPCBrowser.Organization.ToString();
     oPCBrowser.ShowBranches();
     foreach (object turn in oPCBrowser)
     {
         TreeNode node = treeNodeCollection.Add(turn.ToString());
         treeView1.SelectedNode = node;
         oPCBrowser.MoveDown(turn.ToString());
         LoadDataToTree(oPCBrowser, node.Nodes);
         oPCBrowser.MoveUp();
     }
     oPCBrowser.ShowLeafs(false);
     foreach (object turn in oPCBrowser)
     {
         treeView1.SelectedNode.Nodes.Add(turn.ToString());
     }
 }
Пример #7
0
        /// <summary>
        /// Рекурсивно обходит содержимое OPC-сервера.
        /// </summary>
        /// <param name="aBrowser">Браузер OPC-сервера.</param>
        /// <param name="aPrefix">Префикс для построения дерева.</param>
        private static void ShowOpcTagsRecurcive(OPCBrowser aBrowser, string aPrefix = "")
        {
            var isError = false;

            try {
                aBrowser.ShowBranches();
            }
            catch (Exception ex) {
                Console.WriteLine("Ошибка при отображении ветки.");
                isError = true;
            }

            if (!isError)
            {
                foreach (var item in aBrowser)
                {
                    Console.WriteLine(aPrefix + "Ветвь: " + item);
                    aBrowser.MoveDown(item.ToString());
                    ShowOpcTagsRecurcive(aBrowser, aPrefix + "-");
                    aBrowser.MoveUp();
                }
            }

            isError = false;
            try {
                aBrowser.ShowLeafs();
            }
            catch (Exception ex) {
                Console.WriteLine("Ошибка при отображении листа.");
                isError = true;
            }

            if (!isError)
            {
                foreach (var item in aBrowser)
                {
                    Console.WriteLine(aPrefix + "Лист:" + item);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// 列出OPC组下所有点
        /// </summary>
        /// <param name="oPCBrowser"></param>
        private void RecurBrowseItems(OPCBrowser oPCBrowser, string groupName)
        {
            //int len = groupName.Length;
            //ArrayList al = new ArrayList();
            ////展开分支
            //oPCBrowser.ShowBranches();
            ////展开叶子
            //oPCBrowser.ShowLeafs(true);
            //listBoxItems.Items.Clear();
            //listView1.Items.Clear();
            //foreach (object turn in oPCBrowser)
            //{
            //    if (turn.ToString().Contains(groupName))
            //    {
            //        al.Add(turn);
            //    }
            //}
            //foreach (var item in al)
            //{
            //    if (!item.ToString().Contains("._"))
            //    {
            //        listBoxItems.Items.Add(item.ToString());
            //        listView1.Items.Add(item.ToString());
            //    }
            //}

            listView1.Items.Clear();
            oPCBrowser.MoveDown(groupName);
            oPCBrowser.ShowBranches();
            oPCBrowser.ShowLeafs(true);
            listBoxItems.Items.Clear();
            listView1.Items.Clear();
            foreach (object turn in oPCBrowser)
            {
                listView1.Items.Add(turn.ToString());
                listBoxItems.Items.Add(turn.ToString());
            }
            oPCBrowser.MoveUp();
        }
Пример #9
0
        /// <summary>
        /// 建立分支树
        /// </summary>
        /// <param name="node"></param>
        /// <param name="oPCBrowser"></param>
        private void BuildBranchTree(ref TreeNode node, OPCBrowser oPCBrowser)
        {
            if (node == null)
            {
                MessageBox.Show("请创建根节点");
            }
            TreeNode treeNode;

            oPCBrowser.ShowBranches();
            foreach (object Branch in oPCBrowser)
            {
                treeNode = node.Nodes.Add(Branch.ToString());
                try
                {
                    oPCBrowser.MoveDown(Branch.ToString());
                    BuildBranchTree(ref treeNode, oPCBrowser);
                    oPCBrowser.MoveUp();
                }
                catch (Exception)
                {
                }
            }
            ListLeaf(ref node, oPCBrowser);
        }
Пример #10
0
        /// <summary>
        /// 显示节点树 不包含叶子节点
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public TagTreeNode GetTree(TagTreeNode node)
        {
            TagTreeNode subNode = null;

            opcBrowser.ShowBranches();

            foreach (var branch in opcBrowser)
            {
                if (node == null)
                {
                    node = new TagTreeNode(opcServer.ServerName);
                }
                //Console.WriteLine(branch);
                subNode = node.AddNode(branch.ToString());
                try
                {
                    opcBrowser.MoveDown(branch.ToString());
                    GetTree(subNode);
                    opcBrowser.MoveUp();
                }
                catch { }
            }
            return(node);
        }
Пример #11
0
        public void GetOPCTags(OPCType opc, bool SyncData)
        {
            string server  = "";
            string filter1 = "";
            string filter2 = "";
            string sep     = "";
            string device  = "";

            type = opc;

            switch (type)
            {
            case OPCType.Kepware:
                server  = "Kepware.KEPServerEX.V6";
                filter1 = "A3*";
                filter2 = "R*";
                sep     = ".";
                device  = "KEPWARE";
                break;

            case OPCType.Matrikon:
                server  = "Matrikon.OPC.AllenBradleyPLCs.1";
                filter1 = "A3*";
                filter2 = "";
                sep     = ":";
                device  = "MATRIKON";
                break;
            }

            Plcs.Clear();
            this.Sync = SyncData;
            List <string> sChannels = new List <string>();


            oServer.Connect(server);
            oServer.OPCGroups.DefaultGroupIsActive = true;
            int iChannels;

            oGroup = oServer.OPCGroups.Add(sGroup);
            oGroup.IsSubscribed             = true;
            oGroup.OPCItems.DefaultIsActive = true;
            oGroup.AsyncReadComplete       += OCPCallBack;

            oBrowser        = oServer.CreateBrowser();
            oBrowser.Filter = filter1;
            oBrowser.ShowBranches();

            iChannels = oBrowser.Count;

            for (int i = 0; i < iChannels; i++)
            {
                sChannels.Add(oBrowser.Item(i + 1));
            }

            foreach (string sChannel in sChannels)
            {
                oBrowser.MoveDown(sChannel);
                oBrowser.Filter = filter2;
                oBrowser.ShowBranches();

                for (int j = 0; j < oBrowser.Count; j++)
                {
                    this.AddPLC(sChannel + sep + oBrowser.Item(j + 1), device);
                }

                oBrowser.MoveUp();
            }
        }
Пример #12
0
        /// <summary>
        /// Рекурсивно обходит содержимое OPC-сервера.
        /// </summary>
        /// <param name="aBrowser">Браузер OPC-сервера.</param>
        /// <param name="aPrefix">Префикс для построения дерева.</param>
        private static void ShowOpcTagsRecurcive(OPCBrowser aBrowser, string aPrefix = "")
        {
            var isError = false;
            try {
                aBrowser.ShowBranches();
            }
            catch (Exception ex) {
                Console.WriteLine("Ошибка при отображении ветки.");
                isError = true;
            }

            if (!isError) {
                foreach (var item in aBrowser) {
                    Console.WriteLine(aPrefix + "Ветвь: " + item);
                    aBrowser.MoveDown(item.ToString());
                    ShowOpcTagsRecurcive(aBrowser, aPrefix + "-");
                    aBrowser.MoveUp();
                }
            }

            isError = false;
            try {
                aBrowser.ShowLeafs();
            }
            catch (Exception ex) {
                Console.WriteLine("Ошибка при отображении листа.");
                isError = true;
            }

            if (!isError) {
                foreach (var item in aBrowser) {
                    Console.WriteLine(aPrefix + "Лист:" + item);
                }
            }
        }