Exemple #1
0
 public void MoveToTossingPos(int num)//马达移动到抛料位置
 {
     Main.frmMain.ListBoxDisplay("流线2--CCD2 Y轴运行到抛料位置");
     GClsMontion.AbsoluteMove(3, CAMiClsVariable.CCD2TossingPosYValue[0], CAMiClsVariable.speedCCD2Y, CAMiClsVariable.TaccCCD2Y);
     GClsMontion.WaitMotorStop(3);
     Main.frmMain.ListBoxDisplay("流线2--Z轴运行到抛料位置");
     GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2flingPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
     GClsMontion.WaitMotorStop(4);
     Main.frmMain.PauseCheck();                                                                            //暂停
     Main.frmMain.ListBoxDisplay("流线2--关闭抛料穴位真空吸");                                                        //一个一个抛,关闭NG产品对应真空吸
     CAMiClsCylinder.GeneralClynderMotion(2, 0, num, 0);                                                   //真空吸Off
     CAMiClsCylinder.GeneralClynderMotion(2, 0, num + 12, 1);                                              //去真空On
     CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, num, 0, 3000, 44 + (num + 1) * 2);
     CAMiClsCylinder.GeneralClynderMotion(2, 0, num + 12, 0);                                              //去真空Off
     if (CAMiClsVariable.strProduct != "P104")                                                             //当项目为D4X时
     {
         if (num < 8)                                                                                      //--------------带小气缸机台部分
         {
             CAMiClsCylinder.GeneralClynderMotion(2, 0, num + 24, 0);                                      //小气缸
             CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, num + 12, 0, 3000, 44 + (num + 12 + 1) * 2); //小气缸感应off
         }
         if (num == 8)
         {
             CAMiClsCylinder.CldSmallControl9Retract();
         }
         if (num == 9)
         {
             CAMiClsCylinder.CldSmallControl10Retract();
         }
         if (num == 10)
         {
             CAMiClsCylinder.CldSmallControl11Retract();
         }
         if (num == 11)
         {
             CAMiClsCylinder.CldSmallControl12Retract();
         }
     }
 }
Exemple #2
0
        public void StreamLine2VaccumOpenOrClose(int openOrClose)//真空吸打开或关闭
        {
            switch (openOrClose)
            {
            case 0:
                for (int i = 0; i < 12; i++)    //关闭所有真空吸
                {
                    CAMiClsCylinder.GeneralClynderMotion(2, 0, i, 0);
                    CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 12, 1);
                    CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i, 0, 3000, 44 + (i + 1) * 2);
                    CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 12, 0);
                    if (CAMiClsVariable.strProduct != "P104")    //当项目为D4X时
                    {
                        if (i < 8)
                        {
                            CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 24, 0);    //小气缸
                            CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i + 12, 0, 3000, 44 + (i + 12 + 1) * 2);
                        }
                        if (i == 8)
                        {
                            CAMiClsCylinder.CldSmallControl9Retract();
                        }
                        if (i == 9)
                        {
                            CAMiClsCylinder.CldSmallControl10Retract();
                        }
                        if (i == 10)
                        {
                            CAMiClsCylinder.CldSmallControl11Retract();
                        }
                        if (i == 11)
                        {
                            CAMiClsCylinder.CldSmallControl12Retract();
                        }
                    }
                    Main.frmMain.PauseCheck();    //暂停
                }
                break;

            case 1:
                for (int i = 0; i < 12; i++)                     //打开所有真空吸以及小气缸伸出
                {
                    if (CAMiClsVariable.isProductSelect[i] == 1) //产品选中
                    {
                        CAMiClsCylinder.GeneralClynderMotion(2, 0, i, CAMiClsVariable.isProductSelect[i]);
                        CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i, CAMiClsVariable.isProductSelect[i], 3000, 44 + (i + 1) * 2 - CAMiClsVariable.isProductSelect[i]);
                        if (CAMiClsVariable.strProduct != "P104")    //当项目为D4X时
                        {
                            if (i < 8)
                            {
                                CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 24, 1);    //小气缸
                                CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i + 12, CAMiClsVariable.isProductSelect[i], 3000, 44 + (i + 12 + 1) * 2 - CAMiClsVariable.isProductSelect[i]);
                            }
                            if (i == 8)
                            {
                                CAMiClsCylinder.CldSmallControl9Extend();
                            }
                            if (i == 9)
                            {
                                CAMiClsCylinder.CldSmallControl10Extend();
                            }
                            if (i == 10)
                            {
                                CAMiClsCylinder.CldSmallControl11Extend();
                            }
                            if (i == 11)
                            {
                                CAMiClsCylinder.CldSmallControl12Extend();
                            }
                        }
                    }
                    Main.frmMain.PauseCheck();    //暂停
                }
                break;
            }
        }
Exemple #3
0
        public void ThStreamSecondLineEmptyRunning()//第二条流线自动
        {
            while (true)
            {
                try
                {
                    Main.frmMain.ListBoxDisplay("流线2--运行开始-----------------------");
                    CAMiClsVariable.CCD2productSelectNO = 0;
                    Main.frmMain.PauseCheck();           //暂停
                    Main.frmMain.ListBoxDisplay("清空结果区");
                    CAMiClsMethod.StreamCCDDataClear(2); //清空数据存放区
                    #region  加载流线2产品使能                   //4,2,3,1,5,7,6,8,12,10,11,9------用于位置运动   28行
                    Main.frmMain.dgvData.Rows[28].Cells[1].Value  = (CAMiClsVariable.isProductSelect[3] + CAMiClsVariable.isProductSelect[1]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[2].Value  = Main.frmMain.dgvData.Rows[28].Cells[1].Value;
                    Main.frmMain.dgvData.Rows[28].Cells[3].Value  = (CAMiClsVariable.isProductSelect[2] + CAMiClsVariable.isProductSelect[0]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[4].Value  = Main.frmMain.dgvData.Rows[28].Cells[3].Value;
                    Main.frmMain.dgvData.Rows[28].Cells[5].Value  = (CAMiClsVariable.isProductSelect[4] + CAMiClsVariable.isProductSelect[6]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[6].Value  = Main.frmMain.dgvData.Rows[28].Cells[5].Value;
                    Main.frmMain.dgvData.Rows[28].Cells[7].Value  = (CAMiClsVariable.isProductSelect[5] + CAMiClsVariable.isProductSelect[7]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[8].Value  = Main.frmMain.dgvData.Rows[28].Cells[7].Value;
                    Main.frmMain.dgvData.Rows[28].Cells[9].Value  = (CAMiClsVariable.isProductSelect[11] + CAMiClsVariable.isProductSelect[9]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[10].Value = Main.frmMain.dgvData.Rows[28].Cells[9].Value;
                    Main.frmMain.dgvData.Rows[28].Cells[11].Value = (CAMiClsVariable.isProductSelect[10] + CAMiClsVariable.isProductSelect[8]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[28].Cells[12].Value = Main.frmMain.dgvData.Rows[28].Cells[11].Value;
                    #endregion
                    #region 加载流线2产品使能、、4,3,2,1,5,6,7,8,12,11,10,9---按照产品在tray盘里的实际位置来定 49行
                    Main.frmMain.dgvData.Rows[49].Cells[1].Value  = (CAMiClsVariable.isProductSelect[3] + CAMiClsVariable.isProductSelect[1]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[3].Value  = Main.frmMain.dgvData.Rows[49].Cells[1].Value;
                    Main.frmMain.dgvData.Rows[49].Cells[2].Value  = (CAMiClsVariable.isProductSelect[2] + CAMiClsVariable.isProductSelect[0]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[4].Value  = Main.frmMain.dgvData.Rows[49].Cells[2].Value;
                    Main.frmMain.dgvData.Rows[49].Cells[5].Value  = (CAMiClsVariable.isProductSelect[4] + CAMiClsVariable.isProductSelect[6]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[7].Value  = Main.frmMain.dgvData.Rows[49].Cells[5].Value;
                    Main.frmMain.dgvData.Rows[49].Cells[6].Value  = (CAMiClsVariable.isProductSelect[5] + CAMiClsVariable.isProductSelect[7]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[8].Value  = Main.frmMain.dgvData.Rows[49].Cells[6].Value;
                    Main.frmMain.dgvData.Rows[49].Cells[9].Value  = (CAMiClsVariable.isProductSelect[11] + CAMiClsVariable.isProductSelect[9]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[11].Value = Main.frmMain.dgvData.Rows[49].Cells[9].Value;
                    Main.frmMain.dgvData.Rows[49].Cells[10].Value = (CAMiClsVariable.isProductSelect[10] + CAMiClsVariable.isProductSelect[8]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[49].Cells[12].Value = Main.frmMain.dgvData.Rows[49].Cells[10].Value;
                    #endregion
                    #region   加载流线2产品使能   结果输出、、 1,2,3,4,5,6,7,8,9,10,11,12----按照正常排序  80行
                    Main.frmMain.dgvData.Rows[80].Cells[1].Value  = (CAMiClsVariable.isProductSelect[2] + CAMiClsVariable.isProductSelect[0]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[3].Value  = Main.frmMain.dgvData.Rows[80].Cells[1].Value;
                    Main.frmMain.dgvData.Rows[80].Cells[2].Value  = (CAMiClsVariable.isProductSelect[3] + CAMiClsVariable.isProductSelect[1]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[4].Value  = Main.frmMain.dgvData.Rows[80].Cells[2].Value;
                    Main.frmMain.dgvData.Rows[80].Cells[5].Value  = (CAMiClsVariable.isProductSelect[4] + CAMiClsVariable.isProductSelect[6]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[7].Value  = Main.frmMain.dgvData.Rows[80].Cells[5].Value;
                    Main.frmMain.dgvData.Rows[80].Cells[6].Value  = (CAMiClsVariable.isProductSelect[5] + CAMiClsVariable.isProductSelect[7]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[8].Value  = Main.frmMain.dgvData.Rows[80].Cells[6].Value;
                    Main.frmMain.dgvData.Rows[80].Cells[9].Value  = (CAMiClsVariable.isProductSelect[10] + CAMiClsVariable.isProductSelect[8]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[11].Value = Main.frmMain.dgvData.Rows[80].Cells[9].Value;
                    Main.frmMain.dgvData.Rows[80].Cells[10].Value = (CAMiClsVariable.isProductSelect[11] + CAMiClsVariable.isProductSelect[9]) != 0 ? 1 : 0;
                    Main.frmMain.dgvData.Rows[80].Cells[12].Value = Main.frmMain.dgvData.Rows[80].Cells[10].Value;
                    #endregion
                    for (int i = 0; i < 12; i++)
                    {
                        CAMiClsVariable.CCD2productSelectNO += Convert.ToInt32(Main.frmMain.dgvData.Rows[28].Cells[i + 1].Value);
                    }
                    Main.frmMain.ListBoxDisplay(string.Format("流线2--流线2产品需检测的个数为{0}", CAMiClsVariable.CCD2productSelectNO));
                    CAMiClsVariable.CCD2productSelectNO = CAMiClsVariable.CCD2productSelectNO / 2;
                    Main.frmMain.ListBoxDisplay("流线2--等待流线1完成");
                    Main.frmMain.PauseCheck(); //暂停
                    do                         //等待流线1完成
                    {
                        Thread.Sleep(10);
                        Application.DoEvents();
                        Main.frmMain.PauseCheck();//暂停
                    } while (!CAMiClsVariable.isStreamLine1Done);
                    CAMiClsVariable.isStreamLine1Done = false;

                    CAMiClsMethod.ChangeResultDisplay();           //初始化结果显示颜色
                    Main.frmMain.PauseCheck();                     //暂停
                    Main.frmMain.ListBoxDisplay("流线2--启动流线2");
                    GClsMontion.WriteCardExtendOutputBit(1, 8, 0); //流线2高速
                    GClsMontion.WriteCardExtendOutputBit(1, 6, 1); //流线2启动
                    Main.frmMain.PauseCheck();                     //暂停
                    Main.frmMain.ListBoxDisplay("流线2--等待流线2到位感应1感应");
                    //do//等待流线2到位1感应
                    //{
                    //    Thread.Sleep(10);
                    //    Application.DoEvents();
                    //} while (GClsMontion.ReadCardExtendInputBit(1, 10) != 1);
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--等待流线2到位感应2感应");
                    //do//等待到位2感应
                    //{
                    //    Thread.Sleep(10);
                    //    Application.DoEvents();
                    //    Main.frmMain.PauseCheck();//暂停
                    //} while (GClsMontion.ReadCardExtendInputBit(1, 11) != 1);
                    Thread.Sleep(200);                                   //先延时再停止,根据需求更改
                    Main.frmMain.PauseCheck();                           //暂停
                    Main.frmMain.ListBoxDisplay("流线2--停止流线2");
                    GClsMontion.WriteCardExtendOutputBit(1, 6, 0);       //流线2停止
                    CAMiClsVariable.isProductLocateInStreamLine2 = true; //流线2产品到位
                    CAMiClsMethod.StreamTrayLocate(2);                   //流线2产品定位
                    Main.frmMain.PauseCheck();                           //暂停
                    Main.frmMain.ListBoxDisplay("流线2--马达模组运动到抓料位置");
                    GClsMontion.AbsoluteMove(3, CAMiClsVariable.CCD2PickPosY, CAMiClsVariable.speedCCD2Y, CAMiClsVariable.TaccCCD2Y);
                    GClsMontion.WaitMotorStop(3);
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--Z轴下降到抓料位置");
                    GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2PickPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                    GClsMontion.WaitMotorStop(4);
                    Main.frmMain.PauseCheck();//暂停
                    Thread.Sleep(10);
                    #region  真空吸打开及判断
                    Main.frmMain.ListBoxDisplay("流线2--打开所有真空吸");
                    for (int i = 0; i < 12; i++)                     //打开所有真空吸以及小气缸伸出
                    {
                        if (CAMiClsVariable.isProductSelect[i] == 1) //产品选中
                        {
                            CAMiClsCylinder.GeneralClynderMotion(2, 0, i, CAMiClsVariable.isProductSelect[i]);
                            //CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i, CAMiClsVariable.isProductSelect[i], 3000, 44 + (i + 1) * 2 - CAMiClsVariable.isProductSelect[i]);
                            if (CAMiClsVariable.strProduct != "P104")//当项目为D4X时
                            {
                                if (i < 8)
                                {
                                    CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 24, 1);//小气缸
                                    CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i + 12, CAMiClsVariable.isProductSelect[i], 3000, 44 + (i + 12 + 1) * 2 - CAMiClsVariable.isProductSelect[i]);
                                }
                                if (i == 8)
                                {
                                    CAMiClsCylinder.CldSmallControl9Extend();
                                }
                                if (i == 9)
                                {
                                    CAMiClsCylinder.CldSmallControl10Extend();
                                }
                                if (i == 10)
                                {
                                    CAMiClsCylinder.CldSmallControl11Extend();
                                }
                                if (i == 11)
                                {
                                    CAMiClsCylinder.CldSmallControl12Extend();
                                }
                            }
                        }
                        Main.frmMain.PauseCheck();//暂停
                    }
                    Thread.Sleep(500);
                    #endregion
                    Main.frmMain.PauseCheck();//暂停PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--Z轴上升到初始高度");
                    GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2InitialPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                    #region  cyclone二维码临时转移至第29行
                    Main.frmMain.dgvData.Rows[29].Cells[1].Value  = Main.frmMain.dgvData.Rows[18].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[2].Value  = Main.frmMain.dgvData.Rows[16].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[3].Value  = Main.frmMain.dgvData.Rows[17].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[4].Value  = Main.frmMain.dgvData.Rows[15].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[5].Value  = Main.frmMain.dgvData.Rows[19].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[6].Value  = Main.frmMain.dgvData.Rows[21].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[7].Value  = Main.frmMain.dgvData.Rows[20].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[8].Value  = Main.frmMain.dgvData.Rows[22].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[9].Value  = Main.frmMain.dgvData.Rows[26].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[10].Value = Main.frmMain.dgvData.Rows[24].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[11].Value = Main.frmMain.dgvData.Rows[25].Cells[10].Value;
                    Main.frmMain.dgvData.Rows[29].Cells[12].Value = Main.frmMain.dgvData.Rows[23].Cells[10].Value;
                    #endregion
                    GClsMontion.WaitMotorStop(4);
                    //开始拍照
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--清空CCD2缓存数据");
                    //CAMiClsVariable.cClient.ClientReceive(2, 0);
                    #region CCD2拍照
                    Main.frmMain.ListBoxDisplay("流线2--开始拍照");
                    for (int i = 0; i < 12; i++)
                    {
                        if (Main.frmMain.dgvData.Rows[28].Cells[i + 1].Value.ToString() == "1")
                        {
                            //运行到拍照位置
                            Main.frmMain.ListBoxDisplay("流线2--运行到CCD2-第" + (i + 1).ToString() + "个拍照位置");
                            GClsMontion.AbsoluteMove(2, CAMiClsVariable.CCD2PosXValue[i], CAMiClsVariable.speedCCD2X, CAMiClsVariable.TaccCCD2X);
                            GClsMontion.AbsoluteMove(3, CAMiClsVariable.CCD2PosYValue[i], CAMiClsVariable.speedCCD2Y, CAMiClsVariable.TaccCCD2Y);
                            GClsMontion.WaitMotorStop(2);
                            GClsMontion.WaitMotorStop(3);
                            GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2TakePhotoPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                            GClsMontion.WaitMotorStop(4);
                            Thread.Sleep(10);
                            Main.frmMain.PauseCheck();                //暂停
                            Main.frmMain.ListBoxDisplay("流线2--触发拍照"); //触发拍照
                            //if (i % 2 == 0)
                            //{
                            //    CAMiClsVariable.cClient.ClientSend(2, (CAMiClsVariable.strTrig2 + ",0," + CAMiClsMethod.GetCavityNum(i) + ","
                            //        + Main.frmMain.dgvData.Rows[29].Cells[i + 1].Value.ToString().Trim() + "," + Main.frmMain.dgvData.Rows[29].Cells[i + 2].Value.ToString().Trim()));//",DLC845700BPL8WX2N+067,DLC8457003VL8WX26+067"
                            //    Thread.Sleep(10);
                            //    Main.frmMain.ListBoxDisplay("流线2--接收数据");
                            //    Main.frmMain.PauseCheck();//暂停
                            //    CAMiClsVariable.strCCD2Recv1 = CAMiClsMethod.ReceiveData(i, 2);
                            //    if (CAMiClsVariable.strCCD2Recv1.Substring(0, 3) != "T21")
                            //    {
                            //        MessageBox.Show("CCD2 拍照T21反馈异常");
                            //    }
                            //}
                            //else if (i % 2 == 1)
                            //{
                            //    CAMiClsVariable.cClient.ClientSend(2, (CAMiClsVariable.strTrig3 + ",0," + CAMiClsMethod.GetCavityNum(i) + ","
                            //        + Main.frmMain.dgvData.Rows[29].Cells[i].Value.ToString().Trim() + "," + Main.frmMain.dgvData.Rows[29].Cells[i + 1].Value.ToString().Trim()));//T22...",DLC845700BPL8WX2N+067,DLC8457003VL8WX26+067"
                            //    Thread.Sleep(10);
                            //    Main.frmMain.PauseCheck();//暂停
                            //    Main.frmMain.ListBoxDisplay("流线2--接收数据");
                            //    CAMiClsVariable.strCCD2Recv2 = CAMiClsMethod.ReceiveData(i, 2);
                            //    if (CAMiClsVariable.strCCD2Recv2.Substring(0, 3) != "T22")
                            //    {
                            //        MessageBox.Show("CCD2 拍照T22反馈异常");
                            //    }
                            //    Main.frmMain.PauseCheck();//暂停
                            //    Thread.Sleep(2000);
                            //    Application.DoEvents();
                            //}
                        }
                    }
                    Main.frmMain.ListBoxDisplay("流线2--获取CCD2数据");
                    //while (CAMiClsVariable.strRecvCCD2Data2Array[CAMiClsVariable.CCD2productSelectNO - 1] == "0")
                    //{
                    //    CAMiClsVariable.recvCCD2DataNO = 0;
                    //    CAMiClsVariable.strCCD2Recv2 = CAMiClsMethod.ReceiveData(0, 2);
                    //}
                    //for (int i = 0; i < 6; i++)
                    //{
                    //T22,Status_1:CCD2视野中物料是否存在,”1”代表有, ”0”代表无;
                    //Status_2:CCD2综合判断状态, ,”1”代表OK,  ”0”代表NG
                    //Status_3:线圈偏位 内;Status_4:线圈偏位;Status_5:UV溢胶判断;Status_6:UV溢胶判断
                    //Status_7:黑点;Status_8:黑点;Status_9:烫伤;Status_10:烫伤
                    //Status_11:气泡;Status_12:气泡;Status_13:缺锡;Status_14:缺锡......Status_20:
                    //Status_21........Status_40同上
                    //2号产品得到的数据是第3号产品的数据------------------------------------------------------------
                    //int strCCD2Recv2Length = receiveData2[i].Length;//获取CCD2反馈数据长度,用于去掉最后的\n\r
                    //ClsVariable.strCCD2Recv2 = receiveData2[i].Substring(0, strCCD2Recv2Length - 1);
                    //ClsVariable.recvCCD2DataArray = ClsVariable.strCCD2Recv2.Split(',');
                    //if (i % 2 == 0)
                    //{
                    //    try
                    //    {
                    //        if (Convert.ToInt32(Main.frmMain.dgvData.Rows[49].Cells[i * 2 + 1].Value) == 1)
                    //        {
                    //            CAMiClsVariable.recvCCD2DataNO = 0;
                    //            for (int m = 0; m < i * 2 + 1; m++)
                    //            {
                    //                CAMiClsVariable.recvCCD2DataNO += Convert.ToInt32(Main.frmMain.dgvData.Rows[49].Cells[m + 1].Value);
                    //            }
                    //            CAMiClsVariable.recvCCD2DataNO += Convert.ToInt32(Main.frmMain.dgvData.Rows[49].Cells[i * 2 + 1 + 2].Value);
                    //            CAMiClsVariable.recvCCD2DataNO = CAMiClsVariable.recvCCD2DataNO / 2;
                    //            CAMiClsVariable.recvCCD2DataArray = CAMiClsVariable.strRecvCCD2Data2Array[CAMiClsVariable.recvCCD2DataNO - 1].Split(',');
                    //            Main.frmMain.dictSecondLine.Clear();//将数据存放到指定位置,以便后续使用
                    //            for (int j = 0; j < CAMiClsVariable.recvCCD2DataArray.Length; j++)
                    //            {
                    //                if (j < 21)
                    //                {
                    //                    Main.frmMain.dgvData.Rows[i * 2 + 30].Cells[j + 1].Value = CAMiClsVariable.recvCCD2DataArray[j];//第一组数据
                    //                }
                    //                else
                    //                {
                    //                    Main.frmMain.dgvData.Rows[i * 2 + 31].Cells[j - 21 + 2].Value = CAMiClsVariable.recvCCD2DataArray[j];//换行放第二组数据
                    //                }
                    //            }
                    //        }
                    //    }
                    //    catch (Exception err)
                    //    {
                    //        MessageBox.Show(err.ToString());
                    //    }
                    //}
                    //else if (i % 2 == 1)
                    //{
                    //    try
                    //    {
                    //        if (Convert.ToInt32(Main.frmMain.dgvData.Rows[49].Cells[i * 2].Value) == 1)
                    //        {
                    //            CAMiClsVariable.recvCCD2DataNO = 0;
                    //            for (int m = 0; m < (i + 1) * 2; m++)
                    //            {
                    //                CAMiClsVariable.recvCCD2DataNO += Convert.ToInt32(Main.frmMain.dgvData.Rows[49].Cells[m + 1].Value);
                    //            }
                    //            CAMiClsVariable.recvCCD2DataNO = CAMiClsVariable.recvCCD2DataNO / 2;
                    //            //CAMiClsVariable.recvCCD2DataArray = CAMiClsVariable.strRecvCCD2Data2Array[CAMiClsVariable.recvCCD2DataNO - 1].Split(',');
                    //            Main.frmMain.dictSecondLine.Clear(); //将数据存放到指定位置,以便后续使用
                    //            for (int j = 0; j < CAMiClsVariable.recvCCD2DataArray.Length; j++)
                    //            {
                    //                if (j < 21)
                    //                {
                    //                    Main.frmMain.dgvData.Rows[i * 2 + 30].Cells[j + 1].Value = CAMiClsVariable.recvCCD2DataArray[j];//第一组数据
                    //                }
                    //                else
                    //                {
                    //                    Main.frmMain.dgvData.Rows[i * 2 + 31].Cells[j - 21 + 2].Value = CAMiClsVariable.recvCCD2DataArray[j];//换行放第二组数据
                    //                }
                    //            }
                    //        }
                    //    }
                    //    catch (Exception exx)
                    //    {
                    //        MessageBox.Show(exx.ToString());
                    //    }
                    //}
                    //}
                    CAMiClsVariable.recvCCD2DataNO = 0;
                    #endregion
                    Main.frmMain.ListBoxDisplay("流线2--转移数据至第51行开始的行号");
                    #region 流线2--转移数据至第51行开始的行号
                    for (int i = 0; i < 22; i++)
                    {
                        Main.frmMain.dgvData.Rows[51].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[33].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[33].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[52].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[31].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[31].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[53].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[32].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[32].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[54].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[30].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[30].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[55].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[34].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[34].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[56].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[36].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[36].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[57].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[35].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[35].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[58].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[37].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[37].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[59].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[41].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[41].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[60].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[39].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[39].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[61].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[40].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[40].Cells[i + 1].Value : 1;
                        Main.frmMain.dgvData.Rows[62].Cells[i + 1].Value = Main.frmMain.dgvData.Rows[38].Cells[i + 1].Value.ToString() != "" ? Main.frmMain.dgvData.Rows[38].Cells[i + 1].Value : 1;
                    }
                    #endregion
                    //判断结果--------流线1和流线2的产品一一对应得到12个结果以作最终结果------根据对应的结果抛料,抛掉所对应的产品。--------------------------------------
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("判断产品OKNG");
                    //for (int i = 0; i < 12; i++)//每一片产品对应的结果
                    //{
                    //    CAMiClsVariable.productResult[i] = (1 - Convert.ToInt32(Main.frmMain.dgvData.Rows[i + 15].Cells[3].Value)) * (1 - Convert.ToInt32(Main.frmMain.dgvData.Rows[i + 51].Cells[3].Value)) * (1 - Convert.ToInt32(Main.frmMain.dgvData.Rows[i + 51].Cells[13].Value));
                    //    Main.frmMain.dgvData.Rows[65].Cells[i + 1].Value = CAMiClsVariable.productResult[i] == 1 ? "OK" : "NG";
                    //}
                    camiEmptyClsMethod.YieldDisplay();//显示良率
                    CAMiClsVariable.isProductOkNG = (CAMiClsVariable.isProductSelect.Sum() != CAMiClsVariable.productResult.Sum()) ? false : true;
                    CAMiClsVariable.isProductOkNG = true;
                    Main.frmMain.PauseCheck();   //暂停
                    Main.frmMain.ListBoxDisplay("流线2--综合结果输出到表格");
                    for (int i = 0; i < 12; i++) //综合结果输出到表格
                    {
                        if (Main.frmMain.dgvData.Rows[80].Cells[i + 1].Value.ToString() == "1")
                        {
                            CAMiClsVariable.resultFinalData = "Cognex," + (i + 1).ToString() + "," + Main.frmMain.dgvData.Rows[i + 15].Cells[10].Value.ToString() + ",";
                            CAMiClsVariable.resultOKorNG    = Main.frmMain.dgvData.Rows[65].Cells[i + 1].Value.ToString();
                            //每片产品综合结果从表格整合成字符串
                            for (int j = 1; j < 11; j++)//上视觉部分
                            {
                                CAMiClsVariable.resultFinalData += Main.frmMain.dgvData.Rows[i + 15].Cells[j].Value.ToString() + ",";
                            }
                            CAMiClsVariable.resultFinalData += "T21,";
                            for (int k = 2; k < 22; k++)////下视觉部分
                            {
                                CAMiClsVariable.resultFinalData = CAMiClsVariable.resultFinalData + Main.frmMain.dgvData.Rows[i + 51].Cells[k].Value.ToString() + ",";
                            }
                            myEmptyMethod.RecordResultToExcel(CAMiClsVariable.resultFinalData, CAMiClsVariable.resultOKorNG, Main.configsn);//输出结果到excel
                        }
                    }
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("刷新结果区");
                    foreach (Label lb in Main.frmMain.groupPictDisplay.Controls.OfType <Label>())
                    {
                        if (CAMiClsVariable.isProductSelect[lb.TabIndex] == 1)
                        {
                            Main.frmMain.ChangeColor(lb, CAMiClsVariable.productResult[Convert.ToInt32(lb.TabIndex)] == 1 ? Color.Green : Color.Red);//改变label颜色
                        }
                    }
                    Main.frmMain.PauseCheck();          //暂停
                    #region 产品NG时
                    if (!CAMiClsVariable.isProductOkNG) //产品NG时
                    {
                        Main.frmMain.ListBoxDisplay("产品NG");
                        Main.frmMain.PauseCheck();//暂停
                        Main.frmMain.ListBoxDisplay("流线2--Z轴运行到初始位置");
                        GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2InitialPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                        GClsMontion.WaitMotorStop(4);
                        Main.frmMain.PauseCheck(); //暂停
                        do                         //等待NG Tray 更换动作完成
                        {
                            Thread.Sleep(10);
                            Application.DoEvents();
                            Main.frmMain.PauseCheck();//暂停
                        } while (!CAMiClsVariable.isNGTrayOK);
                        do
                        {
                            if (CAMiClsVariable.isTrayChange)
                            {
                                DialogResult result = MessageBox.Show("Tray盘已满,请更换!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                if (result == DialogResult.Yes)
                                {
                                    CAMiClsVariable.isNGTrayOK = false;
                                    do//等待NG Tray 更换动作完成
                                    {
                                        Thread.Sleep(10);
                                        Application.DoEvents();
                                        Main.frmMain.PauseCheck();//暂停
                                    } while (!CAMiClsVariable.isNGTrayOK);
                                    CAMiClsVariable.isTrayChange = false;
                                }
                                else
                                {
                                    CAMiClsVariable.isTrayChange = true;
                                }
                            }
                            for (int i = 0; i < 12; i++)//每个穴位判断
                            {
                                if (CAMiClsVariable.isProductSelect[i] == 1)
                                {
                                    if (CAMiClsVariable.productResult[i] != 1)
                                    {
                                        if (CAMiClsMethod.TrayCheck(i) == 1)//判断Tray是否可以放料
                                        {
                                            Main.frmMain.ListBoxDisplay("流线2--CCD2 Y轴运行到抛料位置");
                                            GClsMontion.AbsoluteMove(3, CAMiClsVariable.CCD2TossingPosYValue[0], CAMiClsVariable.speedCCD2Y, CAMiClsVariable.TaccCCD2Y);
                                            GClsMontion.WaitMotorStop(3);
                                            Main.frmMain.ListBoxDisplay("流线2--Z轴运行到抛料位置");
                                            GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2flingPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                                            GClsMontion.WaitMotorStop(4);
                                            Main.frmMain.PauseCheck();                             //暂停
                                            Main.frmMain.ListBoxDisplay("流线2--关闭抛料穴位真空吸");         //一个一个抛,关闭NG产品对应真空吸
                                            CAMiClsCylinder.GeneralClynderMotion(2, 0, i, 0);      //真空吸Off
                                            CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 12, 1); //去真空On
                                            CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i, 0, 3000, 44 + (i + 1) * 2);
                                            CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 12, 0); //去真空Off
                                            //if (i < 8)//--------------带小气缸机台部分
                                            //{
                                            //    CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 24, 0);//小气缸
                                            //    CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i + 12, 0, 3000, 44 + (i + 12 + 1) * 2);//小气缸感应off
                                            //}
                                            //if (i == 8) CAMiClsCylinder.CldSmallControl9Retract();
                                            //if (i == 9) CAMiClsCylinder.CldSmallControl10Retract();
                                            //if (i == 10) CAMiClsCylinder.CldSmallControl11Retract();
                                            //if (i == 11) CAMiClsCylinder.CldSmallControl12Retract();
                                            Thread.Sleep(300);
                                            CAMiClsVariable.productResult[i] = 1;
                                        }
                                        else
                                        {
                                            CAMiClsVariable.isTrayChange = true;
                                        }
                                    }
                                }
                            }
                        } while (CAMiClsVariable.isTrayChange);
                    }
                    #endregion
                    Main.frmMain.ListBoxDisplay("流线2--Z轴运行到初始位置");
                    GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2InitialPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                    GClsMontion.WaitMotorStop(4);
                    CAMiClsVariable.isNGTrayOK = false;
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--CCD2 Y轴运行到抓料位置");
                    GClsMontion.AbsoluteMove(3, CAMiClsVariable.CCD2PickPosY, CAMiClsVariable.speedCCD2Y, CAMiClsVariable.TaccCCD2Y);
                    GClsMontion.AbsoluteMove(2, CAMiClsVariable.CCD2InitialPosX, CAMiClsVariable.speedCCD2X, CAMiClsVariable.TaccCCD2X);
                    GClsMontion.WaitMotorStop(3);
                    Thread.Sleep(100);
                    Main.frmMain.ListBoxDisplay("流线2--Z轴运行到抓料高度");
                    GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2PickPosZ - 10 * 1000, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                    GClsMontion.WaitMotorStop(4);
                    Main.frmMain.PauseCheck();   //暂停
                    Main.frmMain.ListBoxDisplay("流线2--关闭所有真空吸及小气缸缩回");
                    for (int i = 0; i < 12; i++) //关闭所有真空吸
                    {
                        CAMiClsCylinder.GeneralClynderMotion(2, 0, i, 0);
                        CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 12, 0);
                        CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i, 0, 3000, 44 + (i + 1) * 2);
                        if (CAMiClsVariable.strProduct != "P104")//当项目为D4X时
                        {
                            if (i < 8)
                            {
                                CAMiClsCylinder.GeneralClynderMotion(2, 0, i + 24, 0);//小气缸
                                CAMiClsCylinder.GeneralClynderMotionSensor(2, 0, i + 12, 0, 3000, 44 + (i + 12 + 1) * 2);
                            }
                            if (i == 8)
                            {
                                CAMiClsCylinder.CldSmallControl9Retract();
                            }
                            if (i == 9)
                            {
                                CAMiClsCylinder.CldSmallControl10Retract();
                            }
                            if (i == 10)
                            {
                                CAMiClsCylinder.CldSmallControl11Retract();
                            }
                            if (i == 11)
                            {
                                CAMiClsCylinder.CldSmallControl12Retract();
                            }
                        }
                        Main.frmMain.PauseCheck();//暂停
                    }
                    Thread.Sleep(100);
                    Main.frmMain.PauseCheck();//暂停
                    Main.frmMain.ListBoxDisplay("流线2--Z轴运行到初始位置");
                    GClsMontion.AbsoluteMove(4, CAMiClsVariable.CCD2InitialPosZ, CAMiClsVariable.speedCCD2Z, CAMiClsVariable.TaccCCD2Z);
                    GClsMontion.WaitMotorStop(4);
                    GClsMontion.WaitMotorStop(2);
                    Main.frmMain.PauseCheck();                     //暂停
                    CAMiClsMethod.StreamTrayRelease(2);            //流线2产品放行
                    Main.frmMain.ListBoxDisplay("流线2--启动流线2");
                    GClsMontion.WriteCardExtendOutputBit(1, 8, 0); //流线2高速
                    GClsMontion.WriteCardExtendOutputBit(1, 6, 1); //流线2启动
                    Main.frmMain.PauseCheck();                     //暂停
                    Main.frmMain.ListBoxDisplay("流线2--等待流线2产品流出");
                    do                                             //等待到位1感应
                    {
                        Thread.Sleep(10);
                        Application.DoEvents();
                        Main.frmMain.PauseCheck();//暂停
                    } while (GClsMontion.ReadCardExtendInputBit(1, 10) == 1 || GClsMontion.ReadCardExtendInputBit(1, 11) == 1 ||
                             GClsMontion.ReadCardExtendInputBit(1, 12) == 1);
                    Thread.Sleep(3000);                            //临时空跑延时
                    Main.frmMain.ListBoxDisplay("流线2--停止流线2");
                    GClsMontion.WriteCardExtendOutputBit(1, 6, 0); //流线2停止
                    Thread.Sleep(20);                              //气缸连续动作增加间隔延时
                    Main.frmMain.ListBoxDisplay("流线2--流线2阻挡气缸伸出");
                    CAMiClsCylinder.StreamLine2StopExtend();       //阻挡气缸伸出
                    Main.frmMain.PauseCheck();                     //暂停
                    CAMiClsVariable.isStreamLine2Ready = true;
                    Main.frmMain.PauseCheck();                     //暂停
                }
                catch (Exception ex)
                {
                    myEmptyMethod.LogRecord(ex.ToString());
                }
            }
        }