Пример #1
0
        //internal static LoadingStates GetLoadingState(LoadStates loadState)
        //{
        //    LoadingStates states = LoadingStates.IDLE;

        //    switch (loadState)
        //    {
        //        case LoadStates.SETUP:
        //            states = LoadingStates.SETUP;
        //            break;

        //        case LoadStates.BUSY:
        //            states = LoadingStates.BUSY;
        //            break;

        //        case LoadStates.IDLERUN:
        //            states = LoadingStates.IDLERUN;
        //            break;

        //        case LoadStates.IDLE:
        //            states = LoadingStates.IDLE;
        //            break;

        //        case LoadStates.PM:
        //            states = LoadingStates.PM;
        //            break;

        //        case LoadStates.DOWN:
        //            states = LoadingStates.DOWN;
        //            break;

        //        case LoadStates.WAIT_SETUP:
        //            states = LoadingStates.WAIT_SETUP;
        //            break;

        //        case LoadStates.RENT:
        //            states = LoadingStates.PM;
        //            break;
        //    }

        //    return states;
        //}

        //internal static LoadStates GetLoadState(LoadingStates states)
        //{
        //    LoadStates loadState = LoadStates.IDLE;

        //    switch (states)
        //    {
        //        case LoadingStates.BUSY:
        //            loadState = LoadStates.BUSY;
        //            break;
        //        case LoadingStates.DOWN:
        //            loadState = LoadStates.DOWN;
        //            break;

        //        case LoadingStates.IDLE:
        //            loadState = LoadStates.IDLE;
        //            break;

        //        case LoadingStates.IDLERUN:
        //            loadState = LoadStates.IDLERUN;
        //            break;

        //        case LoadingStates.PM:
        //            loadState = LoadStates.PM;
        //            break;

        //        case LoadingStates.SETUP:
        //            loadState = LoadStates.SETUP;
        //            break;

        //        case LoadingStates.WAIT_SETUP:
        //            loadState = LoadStates.WAIT_SETUP;
        //            break;

        //    }

        //    return loadState;
        //}

        public static List <string> GetNowAvailableChambers(AoEquipment aeqp, FabLot lot, DateTime now)
        {
            if (aeqp.IsParallelChamber == false)
            {
                return(null);
            }

            //AoChamberProc2 가 Parallel Chamber임
            AoChamberProc2 proc = aeqp.FirstProcess <AoChamberProc2>();

            List <string> result = new List <string>();

            foreach (ChamberInfo chamber in proc.Chambers)
            {
                //chamber 진행여부(chamber.Current 는 현재 진행인 상태(currently in process)를 나타냄)
                if (chamber.Current != null)
                {
                    continue;
                }

                //chamber.GetrAvailableTime 이 미래이면 현재 가동중, 현재(now) 이면 idle인 상태
                if (chamber.GetAvailableTime() <= now)
                {
                    result.Add(chamber.Label);
                }
            }

            return(result);
        }
Пример #2
0
        //Chamber생성
        internal static void InitializeParallelChamber(AoEquipment aeqp)
        {
            var eqp = aeqp.ToFabAoEquipment();

            if (eqp.IsParallelChamber == false)
            {
                return;
            }

            FabEqp taretEqp = aeqp.Target as FabEqp;

            AoChamberProc2 proc     = eqp.FirstProcess <AoChamberProc2>();
            var            chambers = proc.Chambers;

            if (chambers != null)
            {
                int count = chambers.Length;
                eqp.SubEqps = new FabSubEqp[count];

                for (int i = 0; i < count; i++)
                {
                    var    chamberInfo = chambers[i];
                    string subEqpID    = chamberInfo.Label;

                    var subEqp = taretEqp.GetSubEqp(subEqpID) as FabSubEqp;
                    subEqp.ChamberInfo = chamberInfo;

                    eqp.SubEqps[i] = subEqp;

                    subEqp.LastPlan             = SimHelper.CreateInitLastPlan(subEqp.StatusInfo);
                    subEqp.LastIdleRunStartTime = aeqp.NowDT;
                    subEqp.LastIdleStartTime    = aeqp.NowDT;
                }
            }
        }