Esempio n. 1
0
        List <T> InoutCoretypeList <T>(string name, List <T> v, fn <T> Conv)
        {
            int size = GetNrElements(name);

            nodeStack.Push(currentNode);
            currentNode = GetNode(name);

            v.Clear();

            for (int i = 0; i < size; i++)
            {
                XmlNode node = GetCurrentElement(i);
                T       res;
                if (Conv(node.InnerText.Trim(), out res))
                {
                    v.Add(res);
                }
                else
                {
                    throw new System.FormatException("Invalid value encountered in Xml-list. Name: '" + name + "', Value: " + node.InnerText.Trim());
                }
            }

            currentNode = nodeStack.Pop();

            return(v);
        }
Esempio n. 2
0
 public void b()
 {
     GC.SuppressFinalize(this);
     this.a();
     this.az.Clear();
     this.n   = null;
     this.ag  = null;
     this.au  = null;
     this.at  = null;
     this.@as = null;
     this.ar  = null;
     this.aq  = null;
     this.ap  = null;
     this.ao  = null;
     this.an  = null;
     this.am  = null;
     this.al  = null;
     this.ak  = null;
     this.aj  = null;
     this.ai  = null;
     this.ah  = null;
     this.af  = null;
     this.ae  = null;
     this.ad  = null;
     this.ac  = null;
     this.ab  = null;
     this.aa  = null;
     this.z   = null;
     this.y   = null;
     this.x   = null;
     this.w   = null;
     this.v   = null;
     this.u   = null;
     this.t   = null;
     this.s   = null;
     this.r   = null;
     this.q   = null;
     this.p   = null;
     this.c   = null;
     this.av  = null;
     this.o   = null;
     this.m   = null;
     this.l   = null;
     this.k   = null;
     this.j   = null;
     this.i   = null;
     this.h   = null;
     this.g   = null;
     this.f   = null;
     this.e   = null;
     this.d   = null;
     this.b   = null;
     this.a   = null;
     this.aw  = null;
     this.ax  = null;
     this.ay  = null;
 }
Esempio n. 3
0
        Newton(fn f, fn df, double x0, byte precision)
        {
            double tol = GetPrecisionTolerance(precision);
            double x1  = x0;

            do
            {
                x0 = x1;
                x1 = x0 - f(x0) / df(x0);
            }while(tol <= Math.Abs(x1 - x0));

            return(Math.Round(x1, precision));
        }
Esempio n. 4
0
        public fn Loadlock_Venting()
        {
            if (!isAcceptRun())
            {
                return(fn.busy);
            }
            nPreSeqNo = nSeqNo;

            fn fRet = fn.busy;

            switch (nSeqNo)
            {
            case 0:
                break;

            case 10:
                break;

            case 20:
                fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Venting();
                if (fRet == fn.success)
                {
                    break;
                }
                else
                {
                    if (fRet == fn.err)
                    {
                        //에러 일경우 Output 출력을 Off하자

                        return(fn.err);
                    }
                }
                return(fn.busy);

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

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

            return(fn.busy);
        }
Esempio n. 5
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        case AIState.Idle:
            chasing = false;

            break;

        case AIState.Wander:
            Behavior     = Wander;
            SelectTarget = WanderSelect;
            break;

        case AIState.Chase:
            chasing = true;

            break;
        }

        Behavior();
    }
Esempio n. 6
0
        Secant(fn f, double x0, double x1, byte precision)
        {
            if (x0 == x1)
            {
                throw new DivideByZeroException();
            }

            double tol = GetPrecisionTolerance(precision);

            while (tol <= Math.Abs(x1 - x0))
            {
                double
                    f0 = f(x0),
                    f1 = f(x1);

                double x2 = x1 - f1 * (x1 - x0) / (f1 - f0);

                x0 = x1;
                x1 = x2;
            }
            return(Math.Round(x1, precision));
        }
Esempio n. 7
0
 public static b FoldLeft <a, b> (a x, b acc, fn <a, b, b> f)
 {
     return(f.apply(x, acc));
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="function">The delegate to assign.</param>
 public ImportFunction_Lam(fn function)
 {
     this.function = function;
 }
Esempio n. 9
0
 public ev(CoreManager A_0, PluginHost A_1, PluginCore A_2)
 {
     this.aw = A_0;
     this.ax = A_1;
     this.ay = A_2;
     this.a  = new b2(this.ay);
     this.az.Add(this.a);
     this.b = new j();
     this.az.Add(this.b);
     this.d = new aj();
     this.az.Add(this.d);
     this.e = new cd((FileService)this.aw.get_FileService(), this);
     this.az.Add(this.e);
     this.f = new d6();
     this.az.Add(this.f);
     this.g = new dv(this);
     this.az.Add(this.g);
     this.z = new s(this.aw);
     this.az.Add(this.z);
     this.h = new cs(this);
     this.az.Add(this.h);
     this.i = new dg(this);
     this.az.Add(this.i);
     this.j = new dl(this);
     this.az.Add(this.j);
     this.k = new eo(this);
     this.az.Add(this.k);
     this.l = new bh();
     this.az.Add(this.l);
     this.m = new fq();
     this.az.Add(this.m);
     this.o = new bw();
     this.az.Add(this.o);
     this.c = new cLogic(this.g, this.ay, this.z);
     this.az.Add(this.c);
     this.p = new cj(new cj.a(ad.a), A_1.get_Actions());
     this.az.Add(this.p);
     this.q = new b5(this.aw, this.ay);
     this.az.Add(this.q);
     this.r = new cz(this.ay, this.aw, this.ax, this.p);
     this.az.Add(this.r);
     this.s = new ag();
     this.az.Add(this.s);
     this.t = new fc(this.aw, this.ay);
     this.az.Add(this.t);
     this.u = new b0(this.aw, this.ay, this.p);
     this.az.Add(this.u);
     this.v = new el(this.aw);
     this.az.Add(this.v);
     this.w = new bd();
     this.az.Add(this.w);
     this.x = new bv(this.aw);
     this.az.Add(this.x);
     this.y = new a7(this.aw);
     this.az.Add(this.y);
     this.n = new fn(this.aw, this.p);
     this.az.Add(this.n);
     this.aa = new d0(this.aw);
     this.az.Add(this.aa);
     this.ab = new da(this.p, this.ay);
     this.az.Add(this.ab);
     this.ac = new bj();
     this.az.Add(this.ac);
     this.ad = new fs();
     this.az.Add(this.ad);
     this.ae = new b9();
     this.az.Add(this.ae);
     this.af = new en();
     this.az.Add(this.af);
     this.ah = new e0();
     this.az.Add(this.ah);
     this.ai = new ar();
     this.az.Add(this.ai);
     this.aj = new y(this.ai);
     this.az.Add(this.aj);
     this.ak = new cRechargeManager();
     this.az.Add(this.ak);
     this.al = new q();
     this.az.Add(this.al);
     this.am = new fr();
     this.az.Add(this.am);
     this.an = new ei(this.g, this.p);
     this.az.Add(this.an);
     this.ao = new ca(this.x, this.an);
     this.az.Add(this.ao);
     this.ap = new cr(this.ay);
     this.az.Add(this.ap);
     this.aq = new bp();
     this.az.Add(this.aq);
     this.ar = new ay(this.p);
     this.az.Add(this.ar);
     this.@as = new h();
     this.az.Add(this.@as);
     this.at = new du();
     this.az.Add(this.at);
     this.au = new ac();
     this.az.Add(this.au);
     this.ag = new cc();
     this.az.Add(this.ag);
 }
Esempio n. 10
0
 void Start()
 {
     mov          = GetComponent <AIMovement>();
     SelectTarget = WanderSelect;
     Behavior     = Wander;
 }
Esempio n. 11
0
        public void Run()
        {
            if (!isAcceptRun())
            {
                return;
            }
            if (nSeqNo != nPreSeqNo)
            {
                resetCmd();
            }
            nPreSeqNo = nSeqNo;

            CaseVTM seqCase = (CaseVTM)nSeqNo;

            alwaysCheck();

            RUN_MODE RunMode = RecipeMgr.Inst.TempRcp.eRunMode; //현재 레시피

            if (RunMode == RUN_MODE.ONLY_LAMI)
            {
                //현재 진행 모드가 라미 모드일 경우 진행하지 않기 위함
                return;
            }


            switch (seqCase)
            {
            case CaseVTM.Initialze:
                break;

            case CaseVTM.Check_Interlock:
                break;

            case CaseVTM.Check_Status:

                //웨이퍼 로딩 상태 확인
                ReqStatus = CheckStatusReqeust();
                if (ReqStatus == ReqStatus_VTM.LOADLOCK_LOAD)
                {
                    //Pickup Loadlock
                    Working_Arm = ARM.UPPER;
                    nextSeq(CaseVTM.Check_LL_Pickup);
                }
                else if (ReqStatus == ReqStatus_VTM.LOAD_PMC)
                {
                    //Load PMC Seq
                    Working_Arm = ARM.UPPER;
                    nextSeq(CaseVTM.Start_VTM_Load_PMC);
                }
                else if (ReqStatus == ReqStatus_VTM.UNLOAD_PMC)
                {
                    //Unload Seq
                    Working_Arm = ARM.LOWER;
                    nextSeq(CaseVTM.Start_VTM_Unload_PMC);
                }
                else if (ReqStatus == ReqStatus_VTM.UNLOAD_BONDED)
                {
                    Working_Arm = ARM.LOWER;

                    nextSeq(CaseVTM.Check_LL_Place);
                }
                else
                {
                    //요청이 없을 경우 대기하자
                }
                return;

            /////////////////////////////////
            //VTM Pickup LL -> Load PMC
            /////////////////////////////////

            case CaseVTM.Check_WaferStatus:
                break;


            case CaseVTM.Check_LL_Pickup:
                //Loadlock이 동작 중인지 확인
                if (GlobalVariable.interlock.bLLMoving)
                {
                    return;
                }
                GlobalVariable.interlock.bLLMoving = true;
                break;

            case CaseVTM.Move_LL_Move_Pickup:
                //Pickup LL
                //GlobalSeq.autoRun.procLoadlock.Move(MotionPos.Pos3);
                GlobalSeq.autoRun.procLoadlock.MoveExit((int)MotionPos.Pos3);

                strLog = string.Format("Loadlock VTM Pickup Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Compl_LL_Move_Pickup:
                if (GlobalSeq.autoRun.procLoadlock.CheckMoveDone((int)MotionPos.Pos3) == false)
                {
                    return;
                }


                strLog = string.Format("Loadlock VTM Pickup Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;


            case CaseVTM.Start_VTM_Pickup_LL:

                break;

            case CaseVTM.Set_Pumping_Pickup_LL:

                GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status);
                if (status == (short)CTC_RunMode.ModeAtm)
                {
                    break;
                }

                //Loadlock Pumping 상태로 만든다.
                fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Pumping();
                if (fRet == fn.success)
                {
                    break;
                }
                else if (fRet == fn.busy)
                {
                    return;
                }
                else
                {
                    //Error
                    return;
                }

            case CaseVTM.Door_Open_Pickup_LL:

                //VTM Door Open
                GlobalVariable.io.VTM_Door_Open();
                break;

            case CaseVTM.Check_Open_Pickup_LL:

                //VTM Door Open Check
                if (GlobalVariable.io.Check_VTM_Door_Open() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;


            case CaseVTM.Move_VTM_Pickup_LL:

                Working_Stage = VtmStage.LL;
                Working_Arm   = ARM.UPPER;

                //VTM Pickup/Place 시 부분동작으로 변경 함

                if (GlobalSeq.autoRun.procLoadlock.SetBlock() == false)
                {
                    return;
                }
                MoveRobot(Working_Stage, Working_Arm, true);     //Arm Fold 이동
                //MoveRobot(Working_Stage, Working_Arm, false); //Arm Fold 이동

                strLog = string.Format("VTM Robot Pickup Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Move_VTM_Pickup_LL_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Pickup_LL_Stretch:
                //if (CheckComplete() != fn.success) return;
                MoveRobot_Stretch(Working_Stage, Working_Arm, UPDOWN_POS.DOWN);
                break;

            case CaseVTM.Move_VTM_Pickup_LL_Stretch_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Pickup_LL_HandUp:
                MoveRobot_HandUp(Working_Stage, Working_Arm);
                break;

            case CaseVTM.Move_VTM_Pickup_LL_HandUp_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Pickup_LL_Fold:
                MoveRobot_Fold(Working_Stage, Working_Arm, UPDOWN_POS.UP);
                break;

            case CaseVTM.Move_VTM_Pickup_LL_Fold_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                GlobalSeq.autoRun.procLoadlock.UnBlock();
                break;

            case CaseVTM.Compl_VTM_Pickup_LL:

                strLog = string.Format("VTM Robot Pickup Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Door_Close_Pickup_LL:

                //VTM Door Close
                GlobalVariable.io.VTM_Door_Close();

                break;

            case CaseVTM.Check_Close_Pickup_LL:

                //VTM Door Close Check
                if (GlobalVariable.io.Check_VTM_Door_Close() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.End_VTM_Pickup_LL:
                GlobalVariable.seqShared.LoadingLoadLockToVtm(WaferType.CARRIER, (HAND)Working_Arm);
                //GlobalVariable.seqShared.LoadingLoadLockToVtm(WaferType.DEVICE, (HAND)Working_Arm);

                GlobalVariable.interlock.bLLMoving   = false;
                GlobalVariable.interlock.bLLUsed_VTM = false;     //Loadlock 사용 해제 Flag

                //Loadlock 픽업 후 리턴
                nextSeq(CaseVTM.Check_Interlock);
                break;

            /////////////////////////////////
            //VTM Load PMC
            /////////////////////////////////
            case CaseVTM.Start_VTM_Load_PMC:

                strLog = string.Format("VTM PMC Load Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);

                break;

            case CaseVTM.Set_Pumping_Load_PMC:

                GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status);
                if (status == (short)CTC_RunMode.ModeAtm)
                {
                    break;
                }

                //PMC에 Vacuum 상태를 확인한다.
                fRet = GlobalSeq.autoRun.procLoadlock.VTM_Pumping();
                if (fRet == fn.success)
                {
                    break;
                }
                else if (fRet == fn.busy)
                {
                    return;
                }
                else
                {
                    //Error
                    return;
                }

            ////Convectron Sensor On Check
            //if (GlobalVariable.io.ReadInput(GlobalVariable.io.I_VacuumTm_ConvectronRy_1) == true
            //    && GlobalVariable.io.ReadInput(GlobalVariable.io.I_VacuumTm_ConvectronRy_2) == true)
            //{
            //    //조건이 맞으면 다음 케이스로 넘긴다
            //    break;
            //}
            //else
            //{
            //    //Error
            //    return;
            //}

            case CaseVTM.Door_Open_Load_PMC:

                //PMC Door Open
                GlobalVariable.io.BD_Door_Open();
                break;

            case CaseVTM.Check_Open_Load_PMC:

                //PMC Door Open Check
                if (GlobalVariable.io.Check_BD_Door_Open() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Load_PMC:
                if (Load_PMC(Working_Arm) != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Compl_VTM_Load_PMC:
                break;

            case CaseVTM.Door_Close_Load_PMC:

                //PMC Door Close
                GlobalVariable.io.BD_Door_Close();

                break;

            case CaseVTM.Check_Close_Load_PMC:

                //PMC Door Close Check
                if (GlobalVariable.io.Check_BD_Door_Close() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.End_VTM_Load_PMC:
                GlobalVariable.seqShared.LoadingVtmToBonder((HAND)Working_Arm);

                strLog = string.Format("VTM PMC Load Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Set_Recipe:

                break;

            case CaseVTM.Start_Process:

                //Set Process Start
                GlobalVariable.interlock.bBondingProcess = true;

                strLog = string.Format("Pmc Process On -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);

                nextSeq(CaseVTM.Check_Interlock);
                return;


            /////////////////////////////////
            //VTM Unload PMC
            /////////////////////////////////
            case CaseVTM.Start_VTM_Unload_PMC:

                strLog = string.Format("VTM PMC Unload Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Set_Pumping_Unload_PMC:

                GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status);
                if (status == (short)CTC_RunMode.ModeAtm)
                {
                    break;
                }

                //PMC에 Vacuum 상태를 확인한다.
                fRet = GlobalSeq.autoRun.procLoadlock.VTM_Pumping();
                if (fRet == fn.success)
                {
                    break;
                }
                else if (fRet == fn.busy)
                {
                    return;
                }
                else
                {
                    //Error
                    return;
                }

            case CaseVTM.Door_Open_Unload_PMC:

                //PMC Door Open
                GlobalVariable.io.BD_Door_Open();

                break;

            case CaseVTM.Check_Open_Unload_PMC:

                //PMC Door Open Check
                if (GlobalVariable.io.Check_BD_Door_Open() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Unload_PMC:
                Working_Arm = ARM.LOWER;     //언로드 시 Lower Hand
                if (Unload_PMC(Working_Arm) != fn.success)
                {
                    return;
                }

                strLog = string.Format("VTM PMC Unload Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Compl_VTM_Unload_PMC:
                break;

            case CaseVTM.Door_Close_Unload_PMC:

                //Door Close
                GlobalVariable.io.BD_Door_Close();
                break;

            case CaseVTM.Check_Close_Unload_PMC:

                //Door Close Check
                if (GlobalVariable.io.Check_BD_Door_Close() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.End_VTM_Unload_PMC:

                //데이터 이동
                GlobalVariable.seqShared.LoadingBonderToVtm((HAND)Working_Arm);

                nextSeq(CaseVTM.Check_Interlock);
                return;

            case CaseVTM.Check_LL_Place:
                //Loadlock이 동작 중인지 확인
                if (GlobalVariable.interlock.bLLMoving)
                {
                    return;
                }
                GlobalVariable.interlock.bLLMoving   = true;
                GlobalVariable.interlock.bLLUsed_VTM = true;     //Loadlock 사용 Flag

                break;

            case CaseVTM.Move_LL_Move_Place:
                //BD Place -> Unload
                //GlobalSeq.autoRun.procLoadlock.Move(MotionPos.Pos1);
                GlobalSeq.autoRun.procLoadlock.MoveExit((int)MotionPos.Pos1);

                strLog = string.Format("Loadlock VTM Place Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Compl_LL_Move_Place:
                // if (GlobalSeq.autoRun.procLoadlock.CheckComplete() != fn.success) return;
                if (GlobalSeq.autoRun.procLoadlock.CheckMoveDone((int)MotionPos.Pos1) == false)
                {
                    return;
                }

                strLog = string.Format("Loadlock VTM Place Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Start_VTM_Place_LL:
                if (Working_Arm != ARM.LOWER)
                {
                    //Hand Fail
                    return;
                }
                break;

            case CaseVTM.Set_Pumping_Place_LL:

                GlobalSeq.autoRun.prcVTM.Pmc.GetStatus(CTC_STATUS.CTCRunMode, ref status);
                if (status == (short)CTC_RunMode.ModeAtm)
                {
                    break;
                }

                //Loadlock Pumping 상태로 만든다.
                fRet = GlobalSeq.autoRun.procLoadlock.Loadlock_Pumping();
                if (fRet == fn.success)
                {
                    break;
                }
                else if (fRet == fn.busy)
                {
                    return;
                }
                else
                {
                    //Error
                    return;
                }

            case CaseVTM.Door_Open_Place_LL:

                //VTM Door Open
                GlobalVariable.io.VTM_Door_Open();

                break;

            case CaseVTM.Check_Open_Place_LL:

                //VTM Door Open Check
                if (GlobalVariable.io.Check_VTM_Door_Open() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Place_LL:
                Working_Stage = VtmStage.Bonded;
                if (GlobalSeq.autoRun.procLoadlock.SetBlock() == false)
                {
                    return;
                }
                //MoveRobot(Working_Stage, Working_Arm, false);

                MoveRobot(Working_Stage, Working_Arm, true);     //Hand Fold 이동

                strLog = string.Format("VTM Robot Place Move Start -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Move_VTM_Place_LL_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Place_LL_Stretch:
                MoveRobot_Stretch(Working_Stage, Working_Arm, UPDOWN_POS.UP);
                break;

            case CaseVTM.Move_VTM_Place_LL_Stretch_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Place_LL_HandDown:
                MoveRobot_HandDown(Working_Stage, Working_Arm);
                break;

            case CaseVTM.Move_VTM_Place_LL_HandDown_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                break;

            case CaseVTM.Move_VTM_Place_LL_Fold:
                MoveRobot_Fold(Working_Stage, Working_Arm, UPDOWN_POS.DOWN);
                break;

            case CaseVTM.Move_VTM_Place_LL_Fold_Check:
                if (CheckComplete() != fn.success)
                {
                    return;
                }
                GlobalSeq.autoRun.procLoadlock.UnBlock();
                break;

            case CaseVTM.Compl_VTM_Place_LL:
                strLog = string.Format("VTM Robot Place Move End -> {0}, {1}", Working_Stage.ToString(), Working_Arm.ToString());
                AddMessage(strLog);
                break;

            case CaseVTM.Door_Close_Place_LL:

                //VTM Door Close
                GlobalVariable.io.VTM_Door_Close();
                break;

            case CaseVTM.Check_Close_Place_LL:

                //VTM Door Close Check
                if (GlobalVariable.io.Check_VTM_Door_Close() == false)
                {
                    //타임아웃 체크
                    return;
                }
                break;


            case CaseVTM.End_VTM_Place_LL:
                //데이터 이동
                GlobalVariable.seqShared.LoadingVtmToLoadlock(WaferType.BONDED, (HAND)Working_Arm);
                GlobalVariable.interlock.bLLMoving = false;

                //본딩 완료 된 웨이퍼 LL에 언로딩 하고
                //LL에 투입된 웨이퍼 있는지 확인
                //있으면 Pickup 하자, Exchange

                if (GlobalVariable.seqShared.IsInLoadLock((int)WaferType.DEVICE) == true &&
                    GlobalVariable.seqShared.IsInLoadLock((int)WaferType.CARRIER) == true &&
                    GlobalVariable.seqShared.IsInVTM(HAND.UPPER) == false)
                {
                    //Pickup Loadlock
                    Working_Arm = ARM.UPPER;
                    nextSeq(CaseVTM.Check_LL_Pickup);
                    return;
                }
                else
                {
                    //Loadlock 사용 해제
                    GlobalVariable.interlock.bLLUsed_VTM = false;
                    nextSeq(CaseVTM.Check_Interlock);
                    return;
                }
                return;
            }
            nSeqNo++;
        }
Esempio n. 12
0
 static void test(fn f)
 {
     Console.WriteLine("{0}", f());
 }
Esempio n. 13
0
 public void AddPath(string path, fn function)
 {
     call.Add(path, function);
 }
Esempio n. 14
0
 ref libcall call = ref heap(new libcall(fn: fn, n: nargs, args: uintptr(unsafe.Pointer(&a1)), ), out ptr <libcall> _addr_call);