|
@@ -38,6 +38,7 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
private PUFEntity _puf1Entity;
|
|
|
private SchedulerStep _currentStep;
|
|
|
private int _currentWaferIndex = 1;
|
|
|
+ private string _waferGroup = "";
|
|
|
#endregion
|
|
|
|
|
|
#region 属性
|
|
@@ -71,6 +72,7 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
_state = RState.Running;
|
|
|
_currentStep = SchedulerStep.WaitUnload;
|
|
|
_currentWaferIndex = 1;
|
|
|
+ _waferGroup = "";
|
|
|
return true;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -90,8 +92,9 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
//触发loaderEntity UnloadAll
|
|
|
if (preLoaderWaferInfo != null && !string.IsNullOrEmpty(preLoaderWaferInfo.LoaderSide))
|
|
|
{
|
|
|
+ _waferGroup = AnalyseWaferGroup(preLoaderWaferInfo);
|
|
|
_loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, ModuleName.Loader1.ToString(),
|
|
|
- (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide);
|
|
|
+ (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide,_waferGroup);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -185,6 +188,38 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
return true;
|
|
|
}
|
|
|
/// <summary>
|
|
|
+ /// 分析得到Wafer组
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="waferInfo"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private string AnalyseWaferGroup(WaferInfo waferInfo)
|
|
|
+ {
|
|
|
+ string matchWaferId = WaferTaskManager.Instance.GetMatchWaferIdByWaferId(waferInfo.WaferID);
|
|
|
+ if (string.IsNullOrEmpty(matchWaferId))
|
|
|
+ {
|
|
|
+ return $"{waferInfo.OriginStation}_{waferInfo.OriginSlot}_0";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ WaferInfo matchedWafer = WaferManager.Instance.GetWaferByWaferId(matchWaferId);
|
|
|
+ if (matchedWafer != null && !matchedWafer.IsEmpty)
|
|
|
+ {
|
|
|
+ if (matchedWafer.WaferType == WaferType.Assit)
|
|
|
+ {
|
|
|
+ return $"LP{waferInfo.OriginStation}_{waferInfo.OriginSlot+1}_0";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return $"LP{waferInfo.OriginStation}_{waferInfo.OriginSlot+1}_LP{matchedWafer.OriginStation}_{matchedWafer.OriginSlot+1}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return $"LP{waferInfo.SourceStation}_{waferInfo.OriginSlot+1}_0";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
/// 执行Loader Load动作
|
|
|
/// </summary>
|
|
|
/// <param name="loadComplete"></param>
|
|
@@ -206,7 +241,7 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
return false;
|
|
|
}
|
|
|
return _loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, Module.ToString(),
|
|
|
- (int)LoaderMSG.LoadSide, side, loadComplete,completeSide);
|
|
|
+ (int)LoaderMSG.LoadSide, side, loadComplete,completeSide,_waferGroup);
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
@@ -239,7 +274,7 @@ namespace CyberX8_RT.Schedulers.Loader
|
|
|
if (preLoaderWaferInfo != null && !string.IsNullOrEmpty(preLoaderWaferInfo.LoaderSide))
|
|
|
{
|
|
|
bool result = _loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, ModuleName.Loader1.ToString(),
|
|
|
- (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide);
|
|
|
+ (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide, _waferGroup);
|
|
|
}
|
|
|
}
|
|
|
}
|