/// <summary> /// 上料XYZ跳跃 /// </summary> /// <param name="Pos_Tar">目标位</param> public void Start(float x, float y, float z) { if (LG.Execute == false && LG.Step == 0) { this.x = x; this.y = y; this.z = z; LG.Start(); } }
public bool GoLast() { CurIdx--; if (CurIdx >= 0) { LG.Start(); return(true); } else { CurIdx = 0; return(false); } }
public bool GoNext() { CurIdx++; if (CurIdx < Num_Level) { LG.Start(); return(true); } else { Finish = true; return(false); } }
/// <summary> /// 运行任务 /// </summary> public virtual void Start() { LG.Start(); }
protected override void LogicImpl() { var Para = Product.Inst; LG.Start(); switch (LG.Step) { case 1: //Z轴抬起到安全高度 if (CTRCard.ZArrive) { for (int i = 0; i < 2; i++) { CTRCard.Axis_Z[i].MC_MoveAbs(Para.Stickdata.GiveUpPara.SafePos_Z); } LG.StepNext(2); } whichNuzzle = 0; break; case 2: //判断轴到达 if (CTRCard.ZArrive) { LG.StepNext(3); } break; case 3: if (Para.ProcessData.NuzzlePara[whichNuzzle].isOk != 1 && Para.ProcessData.NuzzlePara[whichNuzzle].isHave == true) { LG.StepNext(4); } else { LG.StepNext(8); } break; case 4: //XY到弃标位 if (CTRCard.ZArrive) { if (whichNuzzle == 0) { CTRCard.Axis_X.MC_MoveAbs(Para.Stickdata.GiveUpPara.LiftGiveUpPos.X); CTRCard.Axis_Y.MC_MoveAbs(Para.Stickdata.GiveUpPara.LiftGiveUpPos.Y); LG.StepNext(5); } else { CTRCard.Axis_X.MC_MoveAbs(Para.Stickdata.GiveUpPara.RightGiveUpPos.X); CTRCard.Axis_Y.MC_MoveAbs(Para.Stickdata.GiveUpPara.RightGiveUpPos.Y); LG.StepNext(5); } } break; case 5: //Z到弃标高度 if (CTRCard.XYArrive) { if (whichNuzzle == 0) { CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.GiveUpPara.LiftGiveUp_Z); LG.StepNext(6); } else { CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.GiveUpPara.RightGiveUp_Z); LG.StepNext(6); } } break; case 6: //破真空,吹气 if (CTRCard.ZArrive) { CTRCard.Q_Nuzzle[whichNuzzle].OFF(); CTRCard.Q_Blow[whichNuzzle].ON(); Para.Stickdata.GiveUpPara.giveUpNum++; LG.StepNext(7); } break; case 7: if (LG.Delay(Para.Stickdata.GiveUpPara.GiveUpDelay)) /*弃料延时*/ { LG.StepNext(8); Para.ProcessData.NuzzlePara[whichNuzzle].isHave = false; CTRCard.Q_Blow[whichNuzzle].Value = false; CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.GiveUpPara.SafePos_Z); } break; case 8: //Z轴回到安全位 if (CTRCard.ZArrive) { whichNuzzle++; if (whichNuzzle < CTRCard.Axis_Z.Count) { LG.StepNext(2); } else { LG.StepNext(0xef); } } break; case 0xef: LG.End(); break; } }
protected override void LogicImpl() { var Para = Product.Inst; LG.Start(); switch (LG.Step) { case 1: NuzzleParaInit(); LG.StepNext(2); CanMarkscan = true; break; case 2: feeder.Start(); if (Para.Stickdata.StickSysData.stright) { LG.StepNext(0xef); } else { Para.ProcessData.StickPosList.Clear(); Para.ProcessData.currWhichPoint = 0; Para.ProcessData.currWhichProduct = 0; for (int i = 0; i < Product.Inst.Stickdata.TrayData.ProductList.Count; i++) { Para.ProcessData.StickPosList.Add(Product.Inst.Stickdata.TrayData.ProductList[i].Clone()); } LG.StepNext(3); } break; case 3: if (feeder.GetDone) { takelabel.Start(); //取料 LG.StepNext(4); } break; case 4: if (takelabel.GetDone) { downCCD.Start(); //下相机拍照 LG.StepNext(5); } break; case 5: if (downCCD.GetDone) { bool isGiveUp = false; for (int i = 0; i < 2; i++) { //根据吸嘴上是否有料,并且下相机拍照NG,则满足弃料条件 if (Para.ProcessData.NuzzlePara[i].isOk != 1 && Para.ProcessData.NuzzlePara[i].isHave) { isGiveUp = true; } } if (isGiveUp) { giveup.Start(); feeder.Start(); LG.StepNext(101); break; } else { LG.StepNext(6); } feeder.Start(); } break; case 101: if (giveup.GetDone && feeder.GetDone) { LG.StepNext(3); } break; case 6: if (TaskMain.feed.GetDone && //暂时替代皮带流程 DeviceRsDef.I_BeltFeedIn.Value && TaskManager.Default.FSM.Status.ID == FSMStaDef.RUN || Product.Inst.IsAging ) { if (CanMarkscan) { markscan.Start(); LG.StepNext(7); CanMarkscan = false; } else { LG.StepNext(7); } } break; case 7: if (markscan.GetDone) { stick.Start(); LG.StepNext(8); } break; case 8: if (stick.GetDone) { if (Para.ProcessData.currWhichProduct >= Para.ProcessData.StickPosList.Count) { CanMarkscan = true; LG.StepNext(9); } else { LG.StepNext(102); } } break; case 102: LG.StepNext(3); break; case 9: scancode.Start(); LG.StepNext(10); break; case 10: if (scancode.GetDone) { LG.StepNext(11); } break; case 11: backCT.Start(); LG.StepNext(12); break; case 12: if (backCT.GetDone) { LG.StepNext(0xef); } break; case 0xef: if (Product.Inst.IsAging) { LG.StepNext(1); } else { LG.End(); } break; } }
protected override void LogicImpl() { var Para = Product.Inst.Stickdata; LG.Start(); switch (LG.Step) { case 1: whichProduct = 0; LG.StepNext(2); break; case 2: for (int i = 0; i < CTRCard.Axis_Z.Count; i++) { CTRCard.Axis_Z[i].MC_MoveAbs(0); } LG.StepNext(3); break; case 3: if (CTRCard.ZArrive) { if (Product.Inst.Stickdata.TrayData.ProductList.Count > 0) { LG.StepNext(4); } else { LG.StepNext(0xef); } } break; case 4: if (Para.CanBackCT) { CTRCard.Axis_X.MC_MoveAbs(TrayData.ProductList[whichProduct].BackCT.X); CTRCard.Axis_Y.MC_MoveAbs(TrayData.ProductList[whichProduct].BackCT.Y); LG.StepNext(5); } else { LG.StepNext(0xef); } break; case 5: if (CTRCard.XYArrive) { LG.StepNext(6); } break; case 6: if (CTRCard.XYArrive) { LG.StepNext(7); DeviceRsDef.Q_HoldLightCtrl.ON(); DeviceRsDef.Q_Light.OFF(); } break; case 7: if (LG.Delay(Para.CTDelay)) { //VisionProject.Instance.visionApi.TrigRun(3, 0); LG.StepNext(8); } break; case 8: if (Product.Inst.IsAging) { //老化模式下,不判断拍照结果 if (LG.TCnt(100)) { LG.StepNext(0xA0); } } else { //正常模式下 //if (VisionProject.Instance.visionApi.Trig == false) //{ // VisionProject.Instance.SaveBackCTFunImage(); // if (VisionProject.Instance.visionApi.Error == 0) // { // LG.StepNext(0xA0); // } // else // { // LG.StepNext(9); // } //} } break; case 0xA0: if (Product.Inst.IsAging) { LG.StepNext(9); } else { //ShowMessge.SendStartMsg(string.Format("产品{0}上物料精度 X:{1}Y:{2}R:{3}", whichProduct, VisionProject.Instance.visionApi.CheckStick[0].X, VisionProject.Instance.visionApi.CheckStick[0].Y, VisionProject.Instance.visionApi.CheckStick[0].R)); //ShowMessge.SendStartMsg(string.Format("产品{0}上物料精度 X:{1}Y:{2}R:{3}", whichProduct, VisionProject.Instance.visionApi.CheckStick[1].X, VisionProject.Instance.visionApi.CheckStick[1].Y, VisionProject.Instance.visionApi.CheckStick[1].R)); //ShowMessge.SendStartMsg(string.Format("产品{0}上物料精度 X:{1}Y:{2}R:{3}", whichProduct, VisionProject.Instance.visionApi.CheckStick[2].X, VisionProject.Instance.visionApi.CheckStick[2].Y, VisionProject.Instance.visionApi.CheckStick[2].R)); //ShowMessge.SendStartMsg(string.Format("产品{0}上物料精度 X:{1}Y:{2}R:{3}", whichProduct, VisionProject.Instance.visionApi.CheckStick[3].X, VisionProject.Instance.visionApi.CheckStick[3].Y, VisionProject.Instance.visionApi.CheckStick[3].R)); LG.StepNext(9); } break; case 9: whichProduct++; if (whichProduct >= TrayData.ProductList.Count) { LG.StepNext(0xef); } else { LG.StepNext(3); } break; case 0xef: LG.End(); break; } }