예제 #1
0
        internal static FabSubEqp FindSubEqp(this FabAoEquipment eqp, ChamberInfo chamber)
        {
            var targetEqp = eqp.TargetEqp;

            string subEqpID = chamber.Label;

            if (string.IsNullOrEmpty(subEqpID))
            {
                return(null);
            }

            FabSubEqp subEqp;

            if (targetEqp.SubEqps.TryGetValue(subEqpID, out subEqp))
            {
                return(subEqp);
            }

            return(subEqp);
        }
예제 #2
0
        public void CHAMBER_LOADING_STATE_CHANGED0(Mozart.SeePlan.Simulation.AoEquipment aeqp, ChamberInfo chamber, IHandlingBatch hb, LoadingStates state, ref bool handled)
        {
            var eqp = aeqp.ToFabAoEquipment();
            var now = eqp.NowDT;

            if (ModelContext.Current.EndTime == now)
            {
                return;
            }

            var subEqp = eqp.FindSubEqp(chamber);

            if (subEqp == null)
            {
                return;
            }

            var lot = hb.ToFabLot();

            //if (eqp.EqpID == "THCVD300" && lot != null && lot.LotID == "TH011661N0H")
            //    Console.WriteLine("B");

            //PM/Down 이벤트 예외사항 처리
            if (SimHelper.IgnoreStateChange(eqp, state))
            {
                return;
            }

            if (state == LoadingStates.SETUP || state == LoadingStates.BUSY)
            {
                SetCurrentMask(eqp, lot);
            }

            subEqp.OnStateChanged(eqp, state, lot);
        }