Exemple #1
0
        public fn AtmRobot_Load_Lami()
        {
            if (!isAcceptRun())
            {
                return(fn.busy);
            }
            nPreSeqNo = nSeqNo;

            AtmStage stage = GlobalVariable.manualInfo.mnlStageATM; //매뉴얼에서 선택한 Stage 연결
            int      nSlot = GlobalVariable.manualInfo.nSelectSource;

            AtmRobot_Arm = (CJ_Controls.Communication.CybogRobot_HTR.ARM)GlobalVariable.manualInfo.SelArmATM;

            switch (nSeqNo)
            {
            case 0:
                break;

            case 10:
                break;

            case 20:
                if (GlobalSeq.autoRun.prcATM.Load_Lami(AtmRobot_Arm) != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 50:
                nSeqNo = 0;
                return(fn.success);
            }

            //wrong seq check
            if (nSeqNo > 10000)
            {
                //error occur
                return(fn.err);
            }
            nSeqNo++;

            return(fn.busy);
        }
Exemple #2
0
        public fn FmRobot_Place_Buffer()
        {
            if (!isAcceptRun())
            {
                return(fn.busy);
            }
            nPreSeqNo = nSeqNo;

            FMStage stage = GlobalVariable.manualInfo.mnlStageFM; //매뉴얼에서 선택한 Stage 연결
            int     nSlot = GlobalVariable.manualInfo.nSelectSource;

            FmRobot_Arm = (CJ_Controls.Communication.CybogRobot_HTR.ARM)GlobalVariable.manualInfo.SelArmFM;
            FMStatus fmStatus = FMStatus.BUFFER_UNLOAD;

            switch (nSeqNo)
            {
            case 0:
                break;

            case 10:
                break;

            case 15:
                //Door Open Check

                break;

            case 20:
                GlobalSeq.autoRun.prcFM.MoveFmRobot(stage, nSlot, FmRobot_Arm, fmStatus);
                break;

            case 30:
                if (GlobalSeq.autoRun.prcFM.CheckCompl_FM() != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 35:
                GlobalSeq.autoRun.prcFM.MoveFmRobot(stage, nSlot, FmRobot_Arm, fmStatus, true);
                break;

            case 40:
                if (GlobalSeq.autoRun.prcFM.CheckCompl_FM() != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 50:
                nSeqNo = 0;
                return(fn.success);
            }

            //wrong seq check
            if (nSeqNo > 10000)
            {
                //error occur
                return(fn.err);
            }
            nSeqNo++;

            return(fn.busy);
        }
Exemple #3
0
        public fn FmRobot_Place_LPM()
        {
            if (!isAcceptRun())
            {
                return(fn.busy);
            }
            nPreSeqNo = nSeqNo;

            FMStage stage = GlobalVariable.manualInfo.mnlStageFM; //매뉴얼에서 선택한 Stage 연결
            int     nSlot = GlobalVariable.manualInfo.nSelectSource;

            FmRobot_Arm = (CJ_Controls.Communication.CybogRobot_HTR.ARM)GlobalVariable.manualInfo.SelArmFM;
            EFEM     Lpm      = EFEM.LPMA;
            FMStatus fmStatus = FMStatus.LPM_UNLOAD;

            //LPM 구분
            switch (stage)
            {
            case FMStage.LPMA: Lpm = EFEM.LPMA; break;

            case FMStage.LPMB: Lpm = EFEM.LPMB; break;

            case FMStage.LPMC: Lpm = EFEM.LPMC; break;

            case FMStage.LPMD: Lpm = EFEM.LPMD; break;

            default:
                //LPM Index Error
                return(fn.err);
            }

            switch (nSeqNo)
            {
            case 0:
                break;

            case 10:
                if (GlobalSeq.autoRun.prcFM.CheckUnload_LPM(Lpm) != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 15:
                //Door Open Check

                break;

            case 20:
                GlobalSeq.autoRun.prcFM.MoveFmRobot(stage, nSlot, FmRobot_Arm, fmStatus);
                break;

            case 30:
                if (GlobalSeq.autoRun.prcFM.CheckCompl_FM() != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 35:
                GlobalSeq.autoRun.prcFM.MoveFmRobot(stage, nSlot, FmRobot_Arm, fmStatus, true);
                break;

            case 40:
                if (GlobalSeq.autoRun.prcFM.CheckCompl_FM() != fn.success)
                {
                    return(fn.busy);
                }
                break;

            case 50:
                nSeqNo = 0;
                return(fn.success);
            }

            //wrong seq check
            if (nSeqNo > 10000)
            {
                //error occur
                return(fn.err);
            }
            nSeqNo++;

            return(fn.busy);
        }