⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opc.cs

📁 OPC client communication with opc server by reading data
💻 CS
📖 第 1 页 / 共 2 页
字号:


                //splash.ProgressBar.Value = i;


            } while (i < RI65);


        }
        private void InitRItemLbl66()
        {
            int i = 0;
            int DBXH = 0;
            int DBXL = 0;
            do
            {
                ClientHandles66[i] = i;
                i = i + 1;
                ReadItemLbl66[i] = OPCWay + "DB66," + DBXH + "." + DBXL;

                DBXL = DBXL + 1;
                if (DBXL > 7)
                {
                    DBXL = 0;
                    DBXH = DBXH + 1;
                }



               // splash.ProgressBar.Value = i;


            } while (i < RI66);


        }
        private void InitRItemLbl90()
        {
            int i = 0;
            int DBXH = 0;
            int DBXL = 0;
            do
            {
                ClientHandles90[i] = i;
                i = i + 1;
                ReadItemLbl90[i] = OPCWay + "DB90," + DBXH + "." + DBXL;

                DBXL = DBXL + 1;
                if (DBXL > 7)
                {
                    DBXL = 0;
                    DBXH = DBXH + 1;
                }




                //splash.ProgressBar.Value = i;


            } while (i < RI90);


        }
     


        #endregion
        #region method
        public void ReadOPC()
        {

            //int ItemNum;
            //long TarnscationID;
            //long CanceID;
            //检测一段代码运行时间间隔用的
            long Btime;
            long Etime;



            //TarnscationID = 1;
            //初始化所有
            //Formsplash splash = new Formsplash();
            // splash.timer1.Enabled = true;
            // splash.ProgressBar.Minimum = 1;
            // splash.ProgressBar.Maximum = 400;
            // splash.ProgressBar.Value = 2;


            InitRItemLbl50();
             InitRItemLbl51();
              InitRItemLbl52();
              InitRItemLbl53();
              InitRItemLbl54();
              InitRItemLbl55();
              InitRItemLbl56();
              InitRItemLbl57();
              InitRItemLbl58();
              InitRItemLbl59();
              InitRItemLbl61();
              // InitRItemLbl63
              InitRItemLbl65();
              InitRItemLbl66();
              InitRItemLbl90();
            //生成OPC对象,
            OPCServer MyOPCServer;
            OPCGroups MyOPCGroups;
            long serverstate;
            MyOPCServer = new OPCServer();


            MyOPCServer.Connect(ServerName, null);
            serverstate = MyOPCServer.ServerState;
            MessageBox.Show("the server state is " + serverstate);


            MyOPCGroups = MyOPCServer.OPCGroups;


            //MyOPCGroups = (OPCGroups)tmpg;

            //OPCGroups MyOPCGroups = (OPCGroups)Marshal.CreateWrapperOfType(tmpg, typeof(OPCGroups));
            //tmpg = null;


            //  MyOPCGroups=MyOPCServer.OPCGroups;
            //  MyOPCGroups = new OPCGroups();




            MyOPCServer.OPCGroups.DefaultGroupIsActive = true;

            OPCGroup50 = MyOPCGroups.Add("OPCGroup50");
            OPCGroup51 = MyOPCGroups.Add("OPCGroup51");
            OPCGroup52 = MyOPCGroups.Add("OPCGroup52");
            OPCGroup53 = MyOPCGroups.Add("OPCGroup53");
            OPCGroup54 = MyOPCGroups.Add("OPCGroup54");
            OPCGroup55 = MyOPCGroups.Add("OPCGroup55");
            OPCGroup56 = MyOPCGroups.Add("OPCGroup56");
            OPCGroup57 = MyOPCGroups.Add("OPCGroup57");
            OPCGroup58 = MyOPCGroups.Add("OPCGroup58");
            OPCGroup59 = MyOPCGroups.Add("OPCGroup59");
            OPCGroup61 = MyOPCGroups.Add("OPCGroup61");
            OPCGroup63 = MyOPCGroups.Add("OPCGroup63");
            OPCGroup65 = MyOPCGroups.Add("OPCGroup65");
            OPCGroup66 = MyOPCGroups.Add("OPCGroup66");
            OPCGroup90 = MyOPCGroups.Add("OPCGroup90");



            OPCItemColl50 = OPCGroup50.OPCItems;
            OPCItemColl51 = OPCGroup51.OPCItems;
            OPCItemColl52 = OPCGroup52.OPCItems;
            OPCItemColl53 = OPCGroup53.OPCItems;
            OPCItemColl54 = OPCGroup54.OPCItems;
            OPCItemColl55 = OPCGroup55.OPCItems;
            OPCItemColl56 = OPCGroup56.OPCItems;
            OPCItemColl57 = OPCGroup57.OPCItems;
            OPCItemColl58 = OPCGroup58.OPCItems;
            OPCItemColl59 = OPCGroup59.OPCItems;
            OPCItemColl61 = OPCGroup61.OPCItems;
            OPCItemColl63 = OPCGroup63.OPCItems;
            OPCItemColl65 = OPCGroup65.OPCItems;
            OPCItemColl66 = OPCGroup66.OPCItems;
            OPCItemColl90 = OPCGroup90.OPCItems;




            //byte[] myBytes = Array.CreateInstance(typeof(byte), new int[]{32}, new int[]{1}); 



            Btime = GetTickCount();
            // OPCGroup50.IsSubscribed = true;
            //OPCGroup50.IsActive = true;
            // OPCItemColl50.AddItems(RI50, ref ReadItemLbl50, ref ClientHandles50, out ServerHandlesOut, out ErrorsOut,"VT_EMPTY","");


            /*  OPCItemColl51.AddItems(RI51, ref ReadItemLbl51, ref ClientHandles51, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup51.IsSubscribed = true;

              OPCItemColl52.AddItems(RI52, ref ReadItemLbl52, ref ClientHandles52, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup52.IsSubscribed = true;

              OPCItemColl53.AddItems(RI53, ref ReadItemLbl53, ref ClientHandles53, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup53.IsSubscribed = true;

              OPCItemColl54.AddItems(RI54, ref ReadItemLbl54, ref ClientHandles54, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup54.IsSubscribed = true;

              OPCItemColl55.AddItems(RI55, ref ReadItemLbl55, ref ClientHandles55, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup55.IsSubscribed = true;

              OPCItemColl56.AddItems(RI56, ref ReadItemLbl56, ref ClientHandles56, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup56.IsSubscribed = true;

              OPCItemColl57.AddItems(RI57, ref ReadItemLbl57, ref ClientHandles57, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup57.IsSubscribed = true;

              OPCItemColl58.AddItems(RI58, ref ReadItemLbl58, ref ClientHandles58, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup58.IsSubscribed = true;

              OPCItemColl59.AddItems(RI59, ref ReadItemLbl59, ref ClientHandles59, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup59.IsSubscribed = true;

              OPCItemColl61.AddItems(RI61, ref ReadItemLbl61, ref ClientHandles61, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup61.IsSubscribed = true;

               

              OPCItemColl63.AddItems(RI63, ref ReadItemLbl63, ref ClientHandles63, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup63.IsSubscribed = true;

              OPCItemColl65.AddItems(RI65, ref ReadItemLbl65, ref ClientHandles65, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup65.IsSubscribed = true;

              OPCItemColl66.AddItems(RI66, ref ReadItemLbl66, ref ClientHandles66, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup66.IsSubscribed = true;

              OPCItemColl90.AddItems(RI90, ref ReadItemLbl90, ref ClientHandles90, out ServerHandlesOut, out ErrorsOut, "VT_EMPTY", "");
              OPCGroup90.IsSubscribed = true;


            
            
          *///激活组
            OPCGroup50.IsSubscribed = true;
            OPCGroup50.IsActive = true;
            OPCGroup51.IsSubscribed = true;
            OPCGroup51.IsActive = true;
            OPCGroup52.IsActive = true;
            OPCGroup52.IsSubscribed = true;
            OPCGroup53.IsActive = true;
            OPCGroup53.IsSubscribed = true;
            OPCGroup54.IsSubscribed = true;
            OPCGroup54.IsSubscribed = true;
            OPCGroup55.IsActive = true;
            OPCGroup55.IsSubscribed = true;
            OPCGroup56.IsActive = true;
            OPCGroup56.IsSubscribed = true;
            OPCGroup57.IsActive = true;
            OPCGroup57.IsSubscribed = true;
            OPCGroup58.IsActive = true;
            OPCGroup58.IsSubscribed = true;
            OPCGroup59.IsActive = true;
            OPCGroup59.IsSubscribed = true;
            OPCGroup61.IsActive = true;
            OPCGroup61.IsSubscribed = true;
            OPCGroup63.IsActive = true;
            OPCGroup63.IsSubscribed = true;
            OPCGroup65.IsActive = true;
            OPCGroup65.IsSubscribed = true;
            OPCGroup66.IsActive = true;
            OPCGroup66.IsSubscribed = true;
            OPCGroup90.IsActive = true;
            OPCGroup90.IsSubscribed = true;


            for (int i = 1; i < RI50; i++)
            {                
                OPCItemColl50.AddItem(ReadItemLbl50[i], ClientHandles50[i]);
            }

                //初始化OCP连接
      for (int i = 1; i < RI51; i++)
      {
          

          OPCItemColl51.AddItem(ReadItemLbl51[i], ClientHandles51[i]);

      }

    Etime = GetTickCount();
        if (Etime - Btime > 5000)
        {
            goto HANDLEeRROR;

        }
        for (int i = 1; i < RI52; i++)
        {
          
            
            OPCItemColl52.AddItem(ReadItemLbl52[i], ClientHandles52[i]);
        }
        for (int i = 1; i < RI53; i++)
         {
            
            OPCItemColl53.AddItem(ReadItemLbl53[i], ClientHandles53[i]);
            

         }


         for (int i = 1; i < RI54; i++)
         {
             
             OPCItemColl54.AddItem(ReadItemLbl54[i], ClientHandles54[i]);
            

         }
         for (int i = 1; i < RI55; i++)
         {
             
             OPCItemColl55.AddItem(ReadItemLbl55[i], ClientHandles55[i]);
             
         }
         for (i = 1; i > RI56; i++)
         {
             
             OPCItemColl56.AddItem(ReadItemLbl56[i], ClientHandles56[i]);
             
         }
         for (int i = 1; i < RI57; i++)
         {
             
             OPCItemColl57.AddItem(ReadItemLbl57[i], ClientHandles57[i]);
             
         }
         for (i = 1; i > RI58; i++)
         {
             
             OPCItemColl58.AddItem(ReadItemLbl58[i], ClientHandles58[i]);
             
         }
         for (int i = 1; i < RI59; i++)
         {
             
             OPCItemColl59.AddItem(ReadItemLbl59[i], ClientHandles59[i]);
             
         }
         for (int i = 1; i > RI61; i++)
         {
             
             OPCItemColl61.AddItem(ReadItemLbl61[i], ClientHandles61[i]);
         }
             
         for (i = 1; i > RI63; i++)
         {
             
             OPCItemColl63.AddItem(ReadItemLbl63[i], ClientHandles63[i]);
             
         }
         for (int i = 1; i < RI65; i++)
         {
             
             OPCItemColl65.AddItem(ReadItemLbl65[i], ClientHandles65[i]);
             
         }
         for (int i = 1; i < RI66; i++)
         {
             
             OPCItemColl66.AddItem(ReadItemLbl66[i], ClientHandles66[i]);
             
         }
         for (int i = 1; i < RI90; i++)
         {
             
             OPCItemColl90.AddItem(ReadItemLbl90[i], ClientHandles90[i]);
             
         }
       


      MessageBox.Show("complete OK!");

                return;
            //splash.ProgressBar.Maximum = 400;


            HANDLEeRROR:
                {
                    //splash.ProgressBar.Maximum = 400;
                    return;
                }



            }
        
        public void QuanlitiConnection()
        {

            if (GetQualityText(OPCItemColl51.Item(15).Quality) != "GOOD")         //取的转盘变频器运行点的质量
            {
                //FormMain main = new FormMain();
               // main.AniLineConnection.Visible = true;
            }
            else
            {
                //F//ormMain main = new FormMain();
               // main.AniLineConnection.Visible = false;
            }

            // if (1 != 1)
            {
                //   FormMain main = new FormMain();
                //   main.AniLineConnection.Visible =true;
                //   return;


                //  }
            }
        }
        public string GetQualityText(int Quality)
        {
            string quality;
            switch (Quality)
            {
                case 0: quality = "BAD! Check You Connection"; break;
                case 64: quality = "UNCERTAIN"; break;
                case 192: quality = "GOOD"; break;
                case 8: quality = "NOT_CONNECTED"; break;
                case 13: quality = "DEVICE_FAILURE"; break;
                case 16: quality = "SENSOR_FAILURE"; break;
                case 20: quality = "LAST_KNOWN"; break;
                case 24: quality = "COMM_FAILURE"; break;
                case 28: quality = "OUT_OF_SERVICE"; break;
                case 132: quality = "LAST_USABLE"; break;
                case 144: quality = "SENSOR_CAL"; break;
                case 148: quality = "EGU_EXCEEDED"; break;
                case 152: quality = "SUB_NORMAL"; break;
                case 216: quality = "LOCAL_OVERRIDE"; break;

                default: quality = "UNKNOWN ERROR"; break;




            }
            return quality;

        }


        #endregion

    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -