public static float GetSetupTime(AoEquipment aeqp, string shopID, string stepID, string productID, string prodVer, string ownerType, string ownerID, bool markingAcid = false) { FabAoEquipment eqp = aeqp.ToFabAoEquipment(); //if(eqp.EqpID == "THATS300") // Console.WriteLine("B"); //if (CheckLastPlan(eqp, shopID, stepID, productID, prodVer, ownerType, ownerID)) // return 0; SetupInfo info = CreateHelper.CreateSetupInfo(eqp, shopID, stepID, productID, prodVer, ownerType, ownerID); string eqpGroup = eqp.TargetEqp.EqpGroup; float setupTime = GetSetupTime(eqpGroup, info); float acidChangeTime = AcidMaster.GetAcidChangeTime(eqp, stepID, productID); float totalSetupTime = setupTime + acidChangeTime; //용액교체 Setup 발생시 EqpPlan 기록을 위해 표시 if (markingAcid && acidChangeTime > 0) { AcidMaster.SetSetupMark(eqp, true); } return(totalSetupTime); }
internal static bool IsNeedChangeAcid(FabAoEquipment eqp, string stepID, string productID) { if (eqp == null) { return(false); } if (eqp.IsAcidConst == false) { return(false); } AcidDensity acid = eqp.AcidDensity; //설비의 최대 농도 초과시 Setup필요 if (acid.CurrentAcid > acid.ChangeDensity) { return(true); } AcidLimit limit = AcidMaster.GetAcidLimit(eqp.ShopID, eqp.TargetEqp.EqpGroup, productID, stepID); if (limit == null) { return(false); } bool isLast = IsLastPlan(eqp, productID, stepID); float limitDensity = isLast ? limit.DENSITY_LIMIT : limit.DENSITY_JC; //제품별 농도 초과시 Setup필요 if (acid.CurrentAcid > limitDensity) { return(true); } return(false); }
private static FabLoadInfo SetLastFabLoadInfo(List <FabLoadInfo> infos, LoadingStates state, DateTime now, FabLot lot = null, bool isDone = false, bool isAheadSetup = false) { FabLoadInfo newInfo = new FabLoadInfo(); newInfo.State = state; newInfo.StartTime = now; if (lot != null && state == LoadingStates.BUSY) { lot.CurrentFabPlan.EqpLoadInfo = newInfo; } //PlanEndTime 마감처리 if (isDone) { newInfo.EndTime = now; } FabPlanInfo target = null; if (lot != null && IsRunState(state)) //true = BUSY or SETUP { target = lot.CurrentFabPlan; newInfo.Target = target; if (state == LoadingStates.BUSY) { newInfo.UnitQty = target.UnitQty; } if (state == LoadingStates.SETUP) { if (isAheadSetup) { newInfo.StateInfo = "AHEAD"; } if (target.IsIdleSetup) { newInfo.StateInfo = "IDLE_SETUP"; } if (isAheadSetup && target.IsIdleSetup) { newInfo.StateInfo = "AHEAD_IDLE_SETUP"; } var eqp = ResHelper.GetFabAoEquipment(lot.CurrentPlan.LoadedResource.ResID); if (eqp != null && eqp.IsAcidConst && eqp.AcidDensity.IsSetupMark) { if (isAheadSetup) { newInfo.StateInfo = "AHEAD_ACID"; } else { newInfo.StateInfo = "ACID"; } //용액교체 마크 해제 AcidMaster.SetSetupMark(eqp, false); } } } if (state == LoadingStates.PM) { if (isAheadSetup) { newInfo.StateInfo = "AHEAD"; } } infos.Add(newInfo); return(newInfo); }