Esempio n. 1
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public bool IS_BUCKET_PROCESSING0(Mozart.SeePlan.Simulation.DispatchingAgent da, IHandlingBatch hb, ref bool handled, bool prevReturnValue)
        {
            try
            {
                MicronBEAssyBELot lot = hb as MicronBEAssyBELot;

                MicronBEAssyBEStep step = hb.CurrentStep as MicronBEAssyBEStep;

                foreach (EqpArrange eqpArrange in InputMart.Instance.EqpArrange.DefaultView)
                {
                    if (lot.Product.LineID != eqpArrange.LINE_ID)
                    {
                        continue;
                    }

                    if (step.StepID != eqpArrange.STEP_ID)
                    {
                        continue;
                    }

                    return(false);
                }

                return(true);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(false);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="info"/>
        /// <param name="handled"/>
        public void WRITE_DISPATCH_LOG0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.EqpDispatchInfo info, ref bool handled)
        {
            var    targetEqp = info.TargetEqp as FabEqp;
            string eqpID     = targetEqp.EqpID;

            if (eqpID == "THCVD200")
            {
                Console.WriteLine();
            }

            var eqp = da.GetEquipment(eqpID) as FabAoEquipment;

            //ParallelChamber는 SubEqp별로 별도로 기록 (더미Lot선택은 기록)
            if (eqp.IsParallelChamber && info.DispatchWipLog.StartsWith("DUMMY"))
            {
                foreach (var subEqp in targetEqp.SubEqps.Values)
                {
                    if (subEqp.Current != null)
                    {
                        continue;
                    }

                    DispatchLogHelper.WriteDispatchLog(eqp, info, subEqp);
                }
            }

            //ParallelChamber도 ParentEqpID 기준으로 추가 기록함(2019.11.08)
            ////ParallelChamber는 SubEqp별로 별도로 기록
            //if (eqp.IsParallelChamber)
            //    return;

            DispatchLogHelper.WriteDispatchLog(eqp, info);
        }
Esempio n. 3
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="destCount"/>
        /// <param name="handled"/>
        public void ON_NOT_FOUND_DESTINATION0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, int destCount, ref bool handled)
        {
            FabLot lot = hb.ToFabLot();


            //TODO:
            if (lot.CurrentFabStep.StdStep.IsMandatory)
            {
                ErrHist.WriteIf(string.Format("{0}/{1}/{2}", "NotFoundArrange", lot.CurrentFabStep.StepID, lot.CurrentProductID),
                                ErrCategory.SIMULATION,
                                ErrLevel.INFO,
                                lot.CurrentFactoryID,
                                lot.CurrentShopID,
                                lot.LotID,
                                lot.CurrentProductID,
                                lot.CurrentProductVersion ?? lot.Wip.ProductVersion,
                                lot.CurrentProcessID,
                                Constants.NULL_ID,
                                lot.CurrentStepID,
                                "ON NOT FOUND DESTINATION0",
                                string.Format("Check Arrange → LOT_ID:{0}", lot.ToString())
                                );

                return;
            }

            da.Factory.AddToBucketer(hb);
        }
Esempio n. 4
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public IList <string> GET_LOADABLE_EQP_LIST0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled, IList <string> prevReturnValue)
        {
            var lot = hb.Sample as FabLot;

            if ((hb.CurrentStep as FabStep).StdStep.IsMandatory == false)
            {
                return(null);
            }

            List <string> eqps = EqpArrangeMaster.GetLoadableEqpList(lot);

            return(eqps);
        }
Esempio n. 5
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="aeqp"/>
        /// <param name="wips"/>
        /// <param name="handled"/>
        public void ON_DISPATCHED0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.AoEquipment aeqp, Mozart.SeePlan.Simulation.IHandlingBatch[] wips, ref bool handled)
        {
            var eqp = aeqp.ToFabAoEquipment();

            foreach (var item in wips)
            {
                var lot = item.ToFabLot();

                SetProductVersion(eqp, lot);
                EqpArrangeMaster.OnDispatched(eqp, lot);

                FilterMaster.StartEqpRecipeTime(lot, eqp);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public Time GET_HOLD_TIME0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled, Mozart.Simulation.Engine.Time prevReturnValue)
        {
            Time t = Time.Zero;

            FabLot     lot = hb.ToFabLot();
            FabWipInfo wip = lot.Wip;

            //FabPlanInfo plan = lot.CurrentFabPlan;

            if (lot.IsInitHold)
            {
                t = wip.AvailableTime - da.NowDT;

                lot.HoldStartTime = da.NowDT;
                lot.HoldTime      = t;


                lot.IsInitHold = false; // Hold → ExitHold  → IsHold 이므로 false로 설정해야됨. 바꿔주지 않을 경우 계속 Hold됨.
            }

            return(t);
        }
Esempio n. 7
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public bool IS_BUCKET_PROCESSING0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled, bool prevReturnValue)
        {
            FabLot lot = hb.ToFabLot();

            if (lot.LotID == "TH930454N01")
            {
                Console.WriteLine();
            }

            FabStep step = hb.CurrentStep as FabStep;



            if (step.IsMandatoryStep == false)
            {
                return(true);
            }

            //if(step.StdStep != null && step.StdStep.)
            //    return true;

            return(false);
        }
Esempio n. 8
0
        /// <summary>
        /// </summary>
        /// <param name="da"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public IList <string> GET_LOADABLE_EQP_LIST0(Mozart.SeePlan.Simulation.DispatchingAgent da, IHandlingBatch hb, ref bool handled, IList <string> prevReturnValue)
        {
            try
            {
                List <string> list = new List <string>();

                return(list);

                MicronBEAssyBELot lot = hb as MicronBEAssyBELot;

#if DEBUG
                if (lot.LotID == "LOT10_L")
                {
                    Console.WriteLine();
                }
#endif

                MicronBEAssyBEStep step = hb.CurrentStep as MicronBEAssyBEStep;

                foreach (EqpArrange eqpArrange in InputMart.Instance.EqpArrange.DefaultView)
                {
                    if (step.StepID != eqpArrange.STEP_ID)
                    {
                        continue;
                    }

                    if (lot.Product.LineID != eqpArrange.LINE_ID)
                    {
                        continue;
                    }

                    if (LikeUtility.Like(lot.Product.ProductID, eqpArrange.PRODUCT_ID) == false)
                    {
                        continue;
                    }

                    //if (LikeUtility.Like(lot.Product.Process.ProcessID, eqpArrange.PROCESS_ID) == false)
                    //    continue;

                    foreach (MicronBEAssyEqp eqp in InputMart.Instance.MicronBEAssyEqp.Values)
                    {
                        //if (LikeUtility.Like(eqp.EqpModel, eqpArrange.EQP_MODEL) == false)
                        //    continue;

                        if (LikeUtility.Like(eqp.EqpID, eqpArrange.EQP_ID) == false)
                        {
                            continue;
                        }

                        list.Add(eqp.EqpID);
                    }
                }

                return(list);
            }

            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(default(IList <string>));
            }
        }
Esempio n. 9
0
        /// <summary>
        /// </summary>
        /// <param name="dispatchingAgent"/>
        /// <param name="hb"/>
        /// <param name="handled"/>
        public void ON_HOLD_EXIT0(Mozart.SeePlan.Simulation.DispatchingAgent dispatchingAgent, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled)
        {
            FabLot lot = hb.ToFabLot();

            lot.HoldTime = 0;
        }
Esempio n. 10
0
 /// <summary>
 /// </summary>
 /// <param name="da"/>
 /// <param name="hb"/>
 /// <param name="handled"/>
 public void ON_DISPATCH_IN0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled)
 {
 }