|
@@ -903,6 +903,9 @@ namespace Venus_RT.Modules
|
|
|
public RState CycleState => _cycleState;
|
|
|
private Dictionary<string, ControlJobInfo> _loadportControlJobDic = new Dictionary<string, ControlJobInfo>();
|
|
|
public List<string> InUseRecipes = new List<string>();
|
|
|
+ public List<string> LP1InUseRecipes = new List<string>();
|
|
|
+ public List<string> LP2InUseRecipes = new List<string>();
|
|
|
+ public List<string> LP3InUseRecipes = new List<string>();
|
|
|
#region public interface
|
|
|
public SystemDispatcher()
|
|
|
{
|
|
@@ -932,6 +935,9 @@ namespace Venus_RT.Modules
|
|
|
DATA.Subscribe($"{lp}.CycleSetPoint", () => _lpCycleSP[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{lp}.Throughput", () => _lpThroughput[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
}
|
|
|
+ DATA.Subscribe("Scheduler.LP1.InUsingRecipe", () => LP1InUseRecipes);
|
|
|
+ DATA.Subscribe("Scheduler.LP2.InUsingRecipe", () => LP2InUseRecipes);
|
|
|
+ DATA.Subscribe("Scheduler.LP3.InUsingRecipe", () => LP3InUseRecipes);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1195,6 +1201,9 @@ namespace Venus_RT.Modules
|
|
|
return false;
|
|
|
}
|
|
|
InUseRecipes.Clear();
|
|
|
+ LP1InUseRecipes.Clear();
|
|
|
+ LP2InUseRecipes.Clear();
|
|
|
+ LP3InUseRecipes.Clear();
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -1204,21 +1213,34 @@ namespace Venus_RT.Modules
|
|
|
{
|
|
|
if (cj.State == EnumControlJobState.Completed && !cj.BeenPosted)
|
|
|
{
|
|
|
+ if (cj.Module == "LP1")
|
|
|
+ {
|
|
|
+ LP1InUseRecipes.Clear();
|
|
|
+ }
|
|
|
+ else if (cj.Module == "LP2")
|
|
|
+ {
|
|
|
+ LP2InUseRecipes.Clear();
|
|
|
+ }
|
|
|
+ else if (cj.Module == "LP3")
|
|
|
+ {
|
|
|
+ LP3InUseRecipes.Clear();
|
|
|
+ }
|
|
|
+ //_lstControlJobs.Remove(doneJob);
|
|
|
+ _loadportControlJobDic[cj.Module] = null;
|
|
|
//LP;WaferSize;Lot;Number;Start;End;
|
|
|
sJobName = $"{cj.Module};{cj.JobWaferSize};{cj.LotName};{cj.LotWafers.Count};{cj.StartTime:T};{cj.EndTime:T}";
|
|
|
cj.BeenPosted = true;
|
|
|
- //return true;
|
|
|
+ return true;
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
- var doneJob = _lstControlJobs.Where(cj => cj.State == EnumControlJobState.Completed && !cj.BeenPosted).FirstOrDefault();
|
|
|
- if (doneJob != null)
|
|
|
- {
|
|
|
- sJobName = $"{doneJob.Module};{doneJob.JobWaferSize};{doneJob.LotName};{doneJob.LotWafers.Count};{doneJob.StartTime:T};{doneJob.EndTime:T}";
|
|
|
- //_lstControlJobs.Remove(doneJob);
|
|
|
- _loadportControlJobDic[doneJob.Module] = null;
|
|
|
+ //var doneJob = _lstControlJobs.Where(cj => cj.State == EnumControlJobState.Completed && !cj.BeenPosted).FirstOrDefault();
|
|
|
+ //if (doneJob != null)
|
|
|
+ //{
|
|
|
|
|
|
- return true;
|
|
|
- }
|
|
|
+
|
|
|
+ // return true;
|
|
|
+ //}
|
|
|
sJobName = "NULL";
|
|
|
return false;
|
|
|
}
|
|
@@ -1395,13 +1417,22 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
if (RtInstance.ConfigType == ConfigType.Kepler2200)
|
|
|
{
|
|
|
- foreach (var item in _lstProcessJobs)
|
|
|
+ var item = _lstProcessJobs.Where(x => x.LotName == cj.LotName).FirstOrDefault();
|
|
|
+ if (item != null && item.ControlJobName == cj.Name && !CheckSequenceKepler2200TemperatureReady(item.Sequence))
|
|
|
{
|
|
|
- if (item.ControlJobName == cj.Name && !CheckSequenceKepler2200TemperatureReady(item.Sequence))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- GetAllJobRecipe(cj, item.Sequence);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (cj.Module == "LP1")
|
|
|
+ {
|
|
|
+ GetAllJobRecipe(LP1InUseRecipes, cj, item.Sequence);
|
|
|
+ }
|
|
|
+ else if (cj.Module == "LP2")
|
|
|
+ {
|
|
|
+ GetAllJobRecipe(LP2InUseRecipes, cj, item.Sequence);
|
|
|
+ }
|
|
|
+ else if (cj.Module == "LP3")
|
|
|
+ {
|
|
|
+ GetAllJobRecipe(LP3InUseRecipes, cj, item.Sequence);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1460,6 +1491,9 @@ namespace Venus_RT.Modules
|
|
|
_lstControlJobs.Clear();
|
|
|
_lstProcessJobs.Clear();
|
|
|
InUseRecipes.Clear();
|
|
|
+ LP1InUseRecipes.Clear();
|
|
|
+ LP2InUseRecipes.Clear();
|
|
|
+ LP3InUseRecipes.Clear();
|
|
|
_qePollingJobs.Clear();
|
|
|
_cycleState = RState.End;
|
|
|
}
|
|
@@ -4864,7 +4898,7 @@ namespace Venus_RT.Modules
|
|
|
_LLInOutPath = SequenceLLInOutPath.DInDOut;
|
|
|
}
|
|
|
|
|
|
- private bool GetAllJobRecipe(ControlJobInfo cj,SequenceInfo seq)
|
|
|
+ private bool GetAllJobRecipe(List<string> InUseRecipes, ControlJobInfo cj,SequenceInfo seq)
|
|
|
{
|
|
|
for (int i = 0; i < seq.Steps.Count; i++)
|
|
|
{
|