|
@@ -5907,6 +5907,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
|
|
|
private bool CheckDummyWaferUse(ProcessJobInfo pj, ControlJobInfo cj)
|
|
|
{
|
|
|
+ var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
|
|
|
foreach (var module in Singleton<EquipmentManager>.Instance.Modules.Keys)
|
|
|
{
|
|
|
if (!ModuleHelper.IsStocker(module) || !pj.Stockers.Any(x => x.Item1 == module.ToString()))
|
|
@@ -5945,23 +5946,29 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
bool IsEnableSDWaferUseTimeWarning = SDTimeWarning > 0;
|
|
|
if (wafer.WaferType == WaferType.SD && IsEnableSDWaferUseCountWarning && wafer.UseCount > SDCountWarning && wafer.UseCount < SDCountAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set, $"more than {SDCountWarning} 次");
|
|
|
+
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDCarrierUseFreq.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set, $"more than {SDCountWarning} 次"));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.SD && IsEnableSDWaferUseTimeWarning && wafer.UseTime > SDTimeWarning && wafer.UseTime < SDTimeAlarm)
|
|
|
{
|
|
|
DateTimeUtil.ConvertSecondsToHoursAndMinutes(SDTimeWarning, out var hours, out var minutes);
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDWaferUserTime.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set, $"more than {hours} hour {minutes} min");
|
|
|
+
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDWaferUserTime.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set, $"more than {hours} hour {minutes} min"));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.SD && IsEnableSDWaferThicknessWarning && wafer.UseThick > SDThicknessWarning && wafer.UseThick < SDThicknessAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDWaferThickness.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set, $"more than {SDThicknessWarning} nm");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDWaferThickness.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set, $"more than {SDThicknessWarning} nm"));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.SD && IsEnableSDWaferUseCountWarning && wafer.UseCount >= SDCountAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set, $"more than {SDCountAlarm} 次");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDCarrierUseFreq.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set, $"more than {SDCountAlarm} 次"));
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -5969,13 +5976,15 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
{
|
|
|
|
|
|
DateTimeUtil.ConvertSecondsToHoursAndMinutes(SDTimeAlarm, out var hours, out var minutes);
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDWaferUserTime.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set, $"more than {hours} hour {minutes}");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDWaferUserTime.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set, $"more than {hours} hour {minutes}"));
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.SD && IsEnableSDWaferThicknessWarning && wafer.UseThick >= SDThicknessAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemSDWaferThickness.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set, $"more than {SDThicknessAlarm} nm");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemSDWaferThickness.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set, $"more than {SDThicknessAlarm} nm"));
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
#endregion
|
|
@@ -6001,60 +6010,69 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
{
|
|
|
//Singleton<ScheduleMaintenanceDataManager>.Instance.MaintenanceProcessingCommandExec(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set, $"more than {EDCountWarning} 次");
|
|
|
//return false;
|
|
|
- if (Enum.TryParse<MaintenanceProcessingCommandEnum>(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, out var command))
|
|
|
- {
|
|
|
- switch (command)
|
|
|
- {
|
|
|
- case MaintenanceProcessingCommandEnum.None:
|
|
|
- break;
|
|
|
- case MaintenanceProcessingCommandEnum.AlarmReport:
|
|
|
- Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
|
|
|
- break;
|
|
|
- case MaintenanceProcessingCommandEnum.JobProhibition:
|
|
|
- break;
|
|
|
- case MaintenanceProcessingCommandEnum.JobManualStart:
|
|
|
- break;
|
|
|
- case MaintenanceProcessingCommandEnum.JobAutoStart:
|
|
|
-
|
|
|
- Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
|
|
|
- Singleton<EquipmentManager>.Instance.CheckToPostMessage((int)EquipmentManager.MSG.JobAutoStart, cj.Name);
|
|
|
- var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
|
|
|
- if (pmModule != null)
|
|
|
- pmModule.Process(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName, false, true, out string reson);
|
|
|
-
|
|
|
- return false;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ pm.MaintenanceProcessingCommandExec(
|
|
|
+ maintenanceItemEDCarrierUseFreq.MaintenanceProcessing,
|
|
|
+ new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set, $"more than {EDCountWarning} 次")
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ //if (Enum.TryParse<MaintenanceProcessingCommandEnum>(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, out var command))
|
|
|
+ //{
|
|
|
+ // switch (command)
|
|
|
+ // {
|
|
|
+ // case MaintenanceProcessingCommandEnum.None:
|
|
|
+ // break;
|
|
|
+ // case MaintenanceProcessingCommandEnum.AlarmReport:
|
|
|
+ // Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
|
|
|
+ // break;
|
|
|
+ // case MaintenanceProcessingCommandEnum.JobProhibition:
|
|
|
+ // break;
|
|
|
+ // case MaintenanceProcessingCommandEnum.JobManualStart:
|
|
|
+ // break;
|
|
|
+ // case MaintenanceProcessingCommandEnum.JobAutoStart:
|
|
|
+
|
|
|
+ // Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
|
|
|
+ // Singleton<EquipmentManager>.Instance.CheckToPostMessage((int)EquipmentManager.MSG.JobAutoStart, cj.Name);
|
|
|
+ // var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
|
|
|
+ // if (pmModule != null)
|
|
|
+ // pmModule.Process(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName, false, true, out string reson);
|
|
|
+
|
|
|
+ // return false;
|
|
|
+
|
|
|
+ // }
|
|
|
+ //}
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseTimeWarning && wafer.UseTime > EDTimeWarning && wafer.UseTime < EDTimeAlarm)
|
|
|
{
|
|
|
DateTimeUtil.ConvertSecondsToHoursAndMinutes(EDTimeWarning, out var hours, out var minutes);
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemEDWaferUserTime.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseTimeWarning.Set, $"more than {hours} hour {minutes} min");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemEDWaferUserTime.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeUseTimeWarning.Set, $"more than {hours} hour {minutes} min"));
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.ED && IsEnableEDWaferThicknessWarning && wafer.UseThick > EDThicknessWarning && wafer.UseThick < EDThicknessAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemEDWaferThickness.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeThicknessWarning.Set, $"more than {EDThicknessWarning} nm");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemEDWaferThickness.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeThicknessWarning.Set, $"more than {EDThicknessWarning} nm"));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseCountWarning && wafer.UseCount >= EDCountAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountAlarm.Set, $"more than {EDCountAlarm} 次");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountAlarm.Set, $"more than {EDCountAlarm} 次"));
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseTimeWarning && wafer.UseTime >= EDTimeAlarm)
|
|
|
{
|
|
|
DateTimeUtil.ConvertSecondsToHoursAndMinutes(EDTimeAlarm, out var hours, out var minutes);
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemEDWaferUserTime.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseTimeAlarm.Set, $"more than {hours} hour {minutes}");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemEDWaferUserTime.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeUseTimeAlarm.Set, $"more than {hours} hour {minutes}"));
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (wafer.WaferType == WaferType.ED && IsEnableEDWaferThicknessWarning && wafer.UseThick >= EDThicknessAlarm)
|
|
|
{
|
|
|
- (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).MaintenanceProcessingCommandExec(maintenanceItemEDWaferThickness.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeThicknessAlarm.Set, $"more than {EDThicknessAlarm} nm");
|
|
|
+ pm.MaintenanceProcessingCommandExec(maintenanceItemEDWaferThickness.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.EDWaferTypeThicknessAlarm.Set, $"more than {EDThicknessAlarm} nm"));
|
|
|
return false;
|
|
|
}
|
|
|
#endregion
|