private void btnSaveParament_Click(object sender, EventArgs e)//修改产品选择使能 { DialogResult result = MessageBox.Show("请确定是否更改产品穴位选择?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { iniFunctionSelect.filePath = CAMiClsVariable.montionIniPath; int productIndex = 0, productEnable = 0; foreach (CheckBox cb in grbProductSelect.Controls) { productIndex = Convert.ToInt32(cb.Tag); productEnable = cb.Checked ? 1 : 0; CAMiClsVariable.isProductSelect[productIndex - 1] = productEnable; if (cb.Checked != (iniFunctionSelect.ReadIni("穴位选择", "穴位" + productIndex.ToString()) == "1" ? true : false)) { methodFunctionSelect.RecordParaModification("穴位" + productIndex.ToString(), iniFunctionSelect.ReadIni("穴位选择", "穴位" + productIndex.ToString()), productEnable.ToString()); iniFunctionSelect.WriteIni("穴位选择", "穴位" + productIndex.ToString(), productEnable.ToString()); CAMiClsVariable.isProductSelect[productIndex - 1] = productEnable; } Application.DoEvents(); } CAMiClsMethod.ChangeResultDisplay();//改变颜色 } }
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()); } } }