|
|
@@ -158,7 +158,7 @@ namespace PunkHPX8_RT.Schedulers.EfemRobot
|
|
|
}
|
|
|
if (moveItem.DestinationModule == ModuleName.Unknown)
|
|
|
{
|
|
|
- bool result= UpdateUnkownTargetModule(schedulerSequences, moveItem, sequenceIndex);
|
|
|
+ bool result= UpdateUnkownTargetModule(schedulerSequences,materialId, moveItem, sequenceIndex);
|
|
|
if (!result)
|
|
|
{
|
|
|
reason = "efem robot confirm target module failed";
|
|
|
@@ -313,7 +313,7 @@ namespace PunkHPX8_RT.Schedulers.EfemRobot
|
|
|
/// <summary>
|
|
|
/// 更新未知目标模块
|
|
|
/// </summary>
|
|
|
- private bool UpdateUnkownTargetModule(List<SchedulerSequence> schedulerSequences, MoveItem moveItem, int sequenceIndex)
|
|
|
+ private bool UpdateUnkownTargetModule(List<SchedulerSequence> schedulerSequences,string materialId, MoveItem moveItem, int sequenceIndex)
|
|
|
{
|
|
|
SchedulerSequence currentSchedulerSequence= schedulerSequences[sequenceIndex];
|
|
|
if (sequenceIndex >= schedulerSequences.Count - 1)
|
|
|
@@ -341,11 +341,49 @@ namespace PunkHPX8_RT.Schedulers.EfemRobot
|
|
|
}
|
|
|
else if (moveItem.DestinationType == ModuleType.PlatingCell)
|
|
|
{
|
|
|
- DepRecipe depRecipe = (DepRecipe)nextSequence.Recipe;
|
|
|
- List<PlatingCellEntity> platingCellEntities= SchedulerSequenceManager.Instance.GetAvaiblePlatingCellList(depRecipe.Chemistry, nextSequence.SequenceType, nextSequence.WaferSize, true);
|
|
|
- if (platingCellEntities.Count > 0)
|
|
|
+ WaferTask waferTask = WaferTaskManager.Instance.GetWaferTask(materialId);
|
|
|
+ if (waferTask == null)
|
|
|
{
|
|
|
- moduleName = platingCellEntities[0].Module;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //第一片
|
|
|
+ if (string.IsNullOrEmpty(waferTask.MateWaferTask))
|
|
|
+ {
|
|
|
+ DepRecipe depRecipe = (DepRecipe)nextSequence.Recipe;
|
|
|
+ List<PlatingCellEntity> platingCellEntities = SchedulerSequenceManager.Instance.GetAvaiblePlatingCellList(depRecipe.Chemistry, nextSequence.SequenceType, nextSequence.WaferSize, true);
|
|
|
+ if (platingCellEntities.Count > 0)
|
|
|
+ {
|
|
|
+ moduleName = platingCellEntities[0].Module;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //第二片查询第一片所在的plating cell模块
|
|
|
+ WaferTask matchWaferTask = WaferTaskManager.Instance.GetWaferTask(waferTask.MateWaferTask);
|
|
|
+ if (matchWaferTask == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ SchedulerSequence schedulerSequence = matchWaferTask.GetCurrentSchedulerSequence();
|
|
|
+ if(schedulerSequence == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (schedulerSequence.ModuleType != ModuleType.PlatingCell)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (schedulerSequence.ModuleName == ModuleName.Unknown)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ string matchModule = schedulerSequence.ModuleName.ToString();
|
|
|
+ string materialModule = ModuleMatcherManager.Instance.GetMatcherByModule(matchModule);
|
|
|
+ if (string.IsNullOrEmpty(materialModule))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Enum.TryParse(materialModule, out moduleName);
|
|
|
}
|
|
|
}
|
|
|
else
|