Ejemplo n.º 1
0
 /// <summary>
 /// </summary>
 /// <param name="aoFactory"/>
 /// <param name="handled"/>
 public void ON_START0(Mozart.SeePlan.Simulation.AoFactory aoFactory, ref bool handled)
 {
     if (InputMart.Instance.GlobalParameters.ApplyArrangeMType)
     {
         EqpArrangeMaster.WriteHistory_Init();
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// </summary>
        /// <param name="aoFactory"/>
        /// <param name="handled"/>
        public void ON_DAY_CHANGED0(Mozart.SeePlan.Simulation.AoFactory aoFactory, ref bool handled)
        {
            DateTime now = aoFactory.NowDT;

            if (InputMart.Instance.GlobalParameters.ApplyArrangeMType)
            {
                EqpArrangeMaster.OnDayChanged(now);
                MaskMaster.OnDayChanged(now);
            }

            ReleasePlanMaster.OnDayChanged(now);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
            }
        }
Ejemplo n.º 5
0
        private void SetProductVersion(FabAoEquipment eqp, FabLot lot)
        {
            //if (eqp.EqpID == "THPHL100" && lot.LotID == "LARRAYI0021")
            //    Console.WriteLine("B");

            var    stdStep        = lot.CurrentFabStep.StdStep;
            string fromProductVer = lot.CurrentProductVersion;

            if (EqpArrangeMaster.AvailableChangeProductVer(stdStep, fromProductVer) == false)
            {
                return;
            }

            var currEqpArrange = lot.CurrentEqpArrange;

            if (currEqpArrange == null)
            {
                return;
            }

            string toProductVer = currEqpArrange.UsedMaskProductVersion;

            if (string.IsNullOrEmpty(toProductVer))
            {
                return;
            }

            if (fromProductVer == toProductVer)
            {
                return;
            }

            lot.OrigProductVersion    = toProductVer;
            lot.CurrentProductVersion = lot.OrigProductVersion;

            lot.CurrentFabPlan.ProductVersion = toProductVer;

            OutCollector.WriteLotVerChangeInfo(lot, eqp.Target as FabEqp, fromProductVer, toProductVer);
        }
Ejemplo n.º 6
0
        private bool InitInPortWip(AoFactory factory, IHandlingBatch hb)
        {
            FabLot lot = hb.ToFabLot();

            //if (lot.LotID == "TH961377N00")
            //	Console.WriteLine();

            if (lot.IsInPortWip == false)
            {
                return(false);
            }

            var    wipInitiator = ServiceLocator.Resolve <WipInitiator>();
            string eqpID        = wipInitiator.GetLoadingEquipment(hb);

            AoEquipment eqp;

            if (string.IsNullOrEmpty(eqpID) || factory.Equipments.TryGetValue(eqpID, out eqp) == false)
            {
                Logger.Warn("Can't Locate InportWip to Eqp {0}, check input data!", eqpID ?? "-");

                #region Write ErrorHistory
                ErrHist.WriteIf(string.Format("LocateInportWip{0}", lot.LotID),
                                ErrCategory.SIMULATION,
                                ErrLevel.INFO,
                                lot.CurrentFactoryID,
                                lot.CurrentShopID,
                                lot.LotID,
                                lot.CurrentProductID,
                                lot.CurrentProductVersion ?? lot.Wip.ProductVersion,
                                lot.CurrentProcessID,
                                eqpID,
                                lot.CurrentStepID,
                                "NOT FOUND EQP",
                                "Can't Locate InportWip");
                #endregion

                return(false);
            }
            else
            {
                FabAoEquipment feqp = eqp.ToFabAoEquipment();

                //Inport Wip (M잔여 수량 체크 X)
                if (EqpArrangeMaster.IsLoadable(feqp, lot, false) == false)
                {
                    #region Write ErrorHistory
                    ErrHist.WriteIf(string.Format("LocateInportWip{0}", lot.LotID),
                                    ErrCategory.SIMULATION,
                                    ErrLevel.INFO,
                                    lot.CurrentFactoryID,
                                    lot.CurrentShopID,
                                    lot.LotID,
                                    lot.CurrentProductID,
                                    lot.CurrentProductVersion ?? lot.Wip.ProductVersion,
                                    lot.CurrentProcessID,
                                    eqpID,
                                    lot.CurrentStepID,
                                    "NOT FOUND EQP_ARRANGE",
                                    "Can't Locate InportWip");
                    #endregion

                    return(false);
                }

                if (feqp.InitInPortWips == null)
                {
                    feqp.InitInPortWips = new List <IHandlingBatch>();
                }

                feqp.InitInPortWips.Add(hb);

                InFlowMaster.ChangeWipLocation(hb, EventType.StartTOWait);

                return(true);
            }
        }