/// <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();
     }
 }
Exemple #2
0
 public bool GoLast()
 {
     CurIdx--;
     if (CurIdx >= 0)
     {
         LG.Start();
         return(true);
     }
     else
     {
         CurIdx = 0;
         return(false);
     }
 }
Exemple #3
0
 public bool GoNext()
 {
     CurIdx++;
     if (CurIdx < Num_Level)
     {
         LG.Start();
         return(true);
     }
     else
     {
         Finish = true;
         return(false);
     }
 }
Exemple #4
0
 /// <summary>
 /// 运行任务
 /// </summary>
 public virtual void Start()
 {
     LG.Start();
 }
Exemple #5
0
        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;
            }
        }
Exemple #7
0
        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;
            }
        }