|
@@ -139,22 +139,23 @@ namespace CyberX8_RT.Schedulers
|
|
|
/// <param name="waferHolderInfo"></param>
|
|
|
/// <param name="sequenceRecipe"></param>
|
|
|
/// <returns></returns>
|
|
|
- public List<SchedulerSequence> AnalyWaferHolderAllSchedulerSequence(WaferHolderInfo waferHolderInfo, SequenceRecipe sequenceRecipe,int waferCount)
|
|
|
+ public List<SchedulerSequence> AnalyWaferHolderAllSchedulerSequence(WaferHolderInfo waferHolderInfo, SequenceRecipe sequenceRecipe,int productWaferCount,int dummyWaferCount)
|
|
|
{
|
|
|
+ int totalWaferCount = productWaferCount + dummyWaferCount;
|
|
|
int index = 0;
|
|
|
List<SchedulerSequence> schedulerSequences = new List<SchedulerSequence>();
|
|
|
//Buffer To Loader
|
|
|
ModuleName currentLocationModuleName = (ModuleName)Enum.Parse(typeof(ModuleName), waferHolderInfo.CurrentLocation);
|
|
|
TransporterAction transporterAction = GenerateTransporterTransferAction(currentLocationModuleName, ModuleType.Buffer, ModuleName.Loader1, ModuleType.Loader);
|
|
|
- string strTRNP = AnalyseLoadTransporterSide(sequenceRecipe, waferCount);
|
|
|
+ string strTRNP = AnalyseLoadTransporterSide(sequenceRecipe, productWaferCount,dummyWaferCount);
|
|
|
List<SchedulerSyncModuleMessage> synModules = GenerateLoaderTransporterSyncModuleMessage(strTRNP);
|
|
|
SchedulerSequence bufferToLoaderSequence = CreateLoaderTransporterSequence(transporterAction,synModules,waferHolderInfo.WaferSize, ref index);
|
|
|
schedulerSequences.Add(bufferToLoaderSequence);
|
|
|
//尺寸不一致
|
|
|
- bool needFlip = CheckLoaderWaferSizeNotEqual() && waferCount == 2;
|
|
|
+ bool needFlip = CheckLoaderWaferSizeNotEqual() && totalWaferCount == 2;
|
|
|
//Loader
|
|
|
LoaderParameter parameter = new LoaderParameter();
|
|
|
- parameter.WaferCount= needFlip?1: waferCount;
|
|
|
+ parameter.WaferCount= needFlip?1: totalWaferCount;
|
|
|
parameter.LoadCompleteToTransporterSide = strTRNP;
|
|
|
parameter.NeedWaitFlip = needFlip;
|
|
|
SchedulerSequence loaderSequence = CreateLoaderSequence(parameter,sequenceRecipe.SubstrateSize, ref index);
|
|
@@ -184,12 +185,12 @@ namespace CyberX8_RT.Schedulers
|
|
|
/// <param name="sequenceRecipe"></param>
|
|
|
/// <param name="waferCount"></param>
|
|
|
/// <returns></returns>
|
|
|
- private string AnalyseLoadTransporterSide(SequenceRecipe sequenceRecipe,int waferCount)
|
|
|
+ private string AnalyseLoadTransporterSide(SequenceRecipe sequenceRecipe,int productWaferCount,int dummyWaferCount)
|
|
|
{
|
|
|
int sideAWaferSize = SC.GetValue<int>($"Loader1.SideAWaferSize");
|
|
|
int sideBWaferSize = SC.GetValue<int>($"Loader1.SideBWaferSize");
|
|
|
//单片,同时loader两边尺寸不一致
|
|
|
- if (waferCount == 1 && sideAWaferSize != sideBWaferSize)
|
|
|
+ if ((productWaferCount == 1||dummyWaferCount==1) && sideAWaferSize != sideBWaferSize)
|
|
|
{
|
|
|
//recipe使用B面工艺,但loader A面与recipe尺寸一致
|
|
|
if (sequenceRecipe.LastSingleWaferToSideB && sequenceRecipe.SubstrateSize == sideAWaferSize)
|
|
@@ -270,11 +271,11 @@ namespace CyberX8_RT.Schedulers
|
|
|
/// </summary>
|
|
|
/// <param name="waferHolderInfo"></param>
|
|
|
/// <returns></returns>
|
|
|
- public List<SchedulerSequence> AnalyseDummyWaferHolderAllSchedulerSequence(WaferHolderInfo waferHolderInfo,int waferCount)
|
|
|
+ public List<SchedulerSequence> AnalyseDummyWaferHolderAllSchedulerSequence(WaferHolderInfo waferHolderInfo,int productWaferCount,int dummyWaferCount)
|
|
|
{
|
|
|
int index = 0;
|
|
|
List<SchedulerSequence> schedulerSequences = new List<SchedulerSequence>();
|
|
|
- string strTRNP = AnalyseLoadTransporterSide(waferHolderInfo.SequenceRecipe, waferCount);
|
|
|
+ string strTRNP = AnalyseLoadTransporterSide(waferHolderInfo.SequenceRecipe, productWaferCount,dummyWaferCount);
|
|
|
//Buffer To Loader
|
|
|
ModuleName currentLocationModuleName = (ModuleName)Enum.Parse(typeof(ModuleName), waferHolderInfo.CurrentLocation);
|
|
|
ModuleName bufferModule = (ModuleName)Enum.Parse(typeof(ModuleName), waferHolderInfo.OriginalBuffer);
|
|
@@ -284,10 +285,10 @@ namespace CyberX8_RT.Schedulers
|
|
|
schedulerSequences.Add(bufferToLoaderSequence);
|
|
|
|
|
|
//尺寸不一致
|
|
|
- bool needFlip = CheckLoaderWaferSizeNotEqual() && waferCount == 2;
|
|
|
+ bool needFlip = CheckLoaderWaferSizeNotEqual() && dummyWaferCount == 2;
|
|
|
//Loader
|
|
|
LoaderParameter parameter = new LoaderParameter();
|
|
|
- parameter.WaferCount = needFlip ? 1 : waferCount; ;
|
|
|
+ parameter.WaferCount = needFlip ? 1 : dummyWaferCount; ;
|
|
|
parameter.LoadCompleteToTransporterSide = strTRNP;
|
|
|
parameter.NeedWaitFlip = needFlip;
|
|
|
SchedulerSequence loaderSequence = CreateLoaderSequence(parameter,waferHolderInfo.WaferSize,ref index);
|