|
|
@@ -800,8 +800,16 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
_lstFIMSs.Any(x => x.IsAvailable && x.IsReadyForPlace(ModuleName.CarrierRobot, 0)) &&
|
|
|
!SC.GetValue<bool>("WaferRobot.BypassFIMSMap"))
|
|
|
{
|
|
|
+ //有job执行且在charging和discharge状态,先不执行mapping
|
|
|
+ if (DATA.Poll("Scheduler.CurrentProcessJob") is ProcessJobInfo job && job != null &&
|
|
|
+ (job.ProcessingState == EnumProcessingState.CoolingBeforeDischarge || job.ProcessingState == EnumProcessingState.Charging || job.ProcessingState == EnumProcessingState.Discharging
|
|
|
+ || (job.ProcessingState == EnumProcessingState.Processing && DATA.Poll("PM1.RemainTimeToEnterCooling") is double t && t <= SC.GetValue<double>("System.Scheduler.LoadMappingForecastTime"))))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (tj.CarrierParas.Any(x => x.Stocker == carrier.InternalModuleName))
|
|
|
{
|
|
|
+
|
|
|
stocker = st;
|
|
|
break;
|
|
|
}
|
|
|
@@ -853,10 +861,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //map正常完成或者FIMS不具备map条件
|
|
|
- if (stocker != null && ((carrier.IsMapped && carrier.IsMapOK) ||
|
|
|
- SC.GetValue<bool>("WaferRobot.BypassFIMSMap") ||
|
|
|
- !_lstFIMSs.Any(x => x.IsOnline && CarrierManager.Instance.CheckNoCarrier(x.Module, 0))))
|
|
|
+ if (stocker != null)
|
|
|
{
|
|
|
if (_carrierRobot.Place(stocker.Module, 0, Hand.Blade1))
|
|
|
{
|
|
|
@@ -983,6 +988,13 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
SchedulerFIMS fims = null;
|
|
|
foreach (var st in _lstFIMSs)
|
|
|
{
|
|
|
+ if (DATA.Poll("Scheduler.CurrentProcessJob") is ProcessJobInfo job && job != null &&
|
|
|
+ (job.ProcessingState == EnumProcessingState.CoolingBeforeDischarge || job.ProcessingState == EnumProcessingState.Charging || job.ProcessingState == EnumProcessingState.Discharging
|
|
|
+ || (job.ProcessingState == EnumProcessingState.Processing && DATA.Poll("PM1.RemainTimeToEnterCooling") is double t && t <= SC.GetValue<double>("System.Scheduler.LoadMappingForecastTime"))))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
if (!st.IsAvailable || !st.IsReadyForPlace(ModuleName.CarrierRobot, 0))
|
|
|
continue;
|
|
|
var fimsDevice = DEVICE.GetDevice<IoFIMS>($"PM1.{st.Module}");
|