/// <summary> /// </summary> /// <param name="db"/> /// <param name="aeqp"/> /// <param name="wips"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public IHandlingBatch[] SELECT0(Mozart.SeePlan.Simulation.DispatcherBase db, Mozart.SeePlan.Simulation.AoEquipment aeqp, IList <Mozart.SeePlan.Simulation.IHandlingBatch> wips, ref bool handled, Mozart.SeePlan.Simulation.IHandlingBatch[] prevReturnValue) { var eqp = aeqp.ToFabAoEquipment(); if (wips == null || wips.Count == 0) { return(null); } var lot = wips[0].ToFabLot(); //if (eqp.EqpID == "THCVD300" && eqp.NowDT >= LcdHelper.StringToDateTime("20191107 075929")) // Console.WriteLine("B"); if (lot.IsDummy) { eqp.IsDummyWait = true; return(null); } if (eqp.IsParallelChamber) { if (ChamberMaster.IsLoadable_ParallelChamber(eqp, lot) == false) { return(null); } } eqp.IsDummyWait = false; return(new IHandlingBatch[] { lot }); }
/// <summary> /// </summary> /// <param name="aeqp"/> /// <param name="loadableChambers"/> /// <param name="hb"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public ISet <string> GET_NEED_SETUP_CHAMBERS0(Mozart.SeePlan.Simulation.AoEquipment aeqp, Mozart.SeePlan.Simulation.ChamberInfo[] loadableChambers, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled, ISet <string> prevReturnValue) { FabLot lot = hb.ToFabLot(); FabEqp eqp = aeqp.Target as FabEqp; List <FabSubEqp> list = ChamberMaster.GetSubEqps(eqp, loadableChambers); return(ChamberMaster.GetNeedSetupChamberIDs(list, lot)); }
/// <summary> /// 설비 초기화를 합니다. GetEqpList 직후 호출됨 /// </summary> /// <param name="aeqp"/> /// <param name="handled"/> public void INITIALIZE_EQUIPMENT0(Mozart.SeePlan.Simulation.AoEquipment aeqp, ref bool handled) { //※ Inline 설비의 경우 설정확인 (true : ProessTime 사용, False : FlowTime 사용) aeqp.UseProcessingTime = false; //AoEqp 초기화 FabAoEquipment eqp = aeqp.ToFabAoEquipment(); var now = eqp.NowDT; eqp.LoadInfos = new List <FabLoadInfo>(); eqp.LastIdleStartTime = now; eqp.LastIdleRunStartTime = now; eqp.AvailablePMTime = DateTime.MaxValue; eqp.InitAcidDensity(); ResHelper.AddEqpByGroup(eqp); //FabEqp 초기화 FabEqp targetEqp = eqp.TargetEqp; targetEqp.InitPM(); targetEqp.SetInitEqpStatus(eqp); //패럴러챔버 초기화 if (aeqp.IsParallelChamber) { ChamberMaster.InitializeParallelChamber(eqp); } //설비상태가 Down 설정 if (targetEqp.StatusInfo.Status == ResourceState.Down) { targetEqp.State = ResourceState.Down; } }