|
|
@@ -298,7 +298,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
|
|
|
List<Tuple<string, string, List<int>>> useStockers = new List<Tuple<string, string, List<int>>>();
|
|
|
|
|
|
- if (RecipeParser.LayoutRecipeParse(layoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out reason))
|
|
|
+ if (RecipeParser.LayoutRecipeParse(layoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out RecipeLayoutEntityConfig layoutRecipeDataConfig, out reason))
|
|
|
{
|
|
|
if (param.ContainsKey("CarrierPara"))
|
|
|
{
|
|
|
@@ -4597,7 +4597,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
if (pj == null)
|
|
|
return null;
|
|
|
|
|
|
- if (!RecipeParser.LayoutRecipeParse(pj.LayoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out string reason))
|
|
|
+ if (!RecipeParser.LayoutRecipeParse(pj.LayoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out RecipeLayoutEntityConfig layoutRecipeDataConfig, out string reason))
|
|
|
{
|
|
|
//Singleton<EquipmentManager>.Instance.ChargeWaferJobStartFailedWarning.Set($"Load layout recipe {pj.LayoutRecipe} failed, {reason}");
|
|
|
|
|
|
@@ -4672,7 +4672,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
//needCheckPWafer = false;
|
|
|
reason = string.Empty;
|
|
|
|
|
|
- if (!RecipeParser.LayoutRecipeParse(pj.LayoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out reason))
|
|
|
+ if (!RecipeParser.LayoutRecipeParse(pj.LayoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out RecipeLayoutEntityConfig layoutRecipeDataConfig, out reason))
|
|
|
{
|
|
|
//Singleton<EquipmentManager>.Instance.ChargeWaferJobStartFailedWarning.Set($"Load layout recipe {pj.LayoutRecipe} failed, {reason}");
|
|
|
|
|
|
@@ -4736,6 +4736,8 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
// reason = "extra dummy wafer are short.";
|
|
|
// return false;
|
|
|
//}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
if (SC.GetStringValue("System.ChargingOrderToBoat") == "FromTopToBottom")
|
|
|
{
|
|
|
@@ -4753,7 +4755,19 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
monitor2Slots.Sort((x, y) => x.CompareTo(y));//升序
|
|
|
productSlots.Sort((x, y) => x.CompareTo(y));//升序
|
|
|
}
|
|
|
+ //if (layoutRecipeDataConfig.FillDummyTransfer.ToLower() == "exist" && layoutRecipeDataConfig.ProductZeroNotFill.ToLower() == "exist" && layoutRecipeDataConfig.ProductTransferPosition.ToLower() == "none")
|
|
|
+ //{
|
|
|
+ // int currentPWaferNum = GetCurrentDummyWaferNum(WaferType.P);
|
|
|
+ // //dumy wafer补充p逻辑
|
|
|
+ // var needPAndCurrect = productSlots.Count - iCurrentPWaferNum;
|
|
|
+ // if (needPAndCurrect > 0)
|
|
|
+ // {
|
|
|
|
|
|
+
|
|
|
+ // }
|
|
|
+
|
|
|
+ // return false;
|
|
|
+ //}
|
|
|
pj.SideDummySlots = sideDummySlots;
|
|
|
pj.ExtraDummySlots = extraDummySlots;
|
|
|
pj.Monitor1Slots = monitor1Slots;
|
|
|
@@ -5301,7 +5315,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
return iWaferNum;
|
|
|
}
|
|
|
|
|
|
- private int GetCurrentDummyWaferNum(WaferType targetWaferType)
|
|
|
+ private int GetCurrentDummyWaferNum(WaferType targetWaferType, bool isPWafer = false)
|
|
|
{
|
|
|
int iWaferNum = 0;
|
|
|
var targetCarrierType = (CarrierType)(Enum.Parse(typeof(CarrierType), targetWaferType.ToString()));
|
|
|
@@ -5324,6 +5338,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
|
|
|
foreach (var wafer in wafers)
|
|
|
{
|
|
|
+
|
|
|
if (!wafer.IsEmpty && wafer.WaferType == targetWaferType)
|
|
|
iWaferNum++;
|
|
|
}
|
|
|
@@ -7310,7 +7325,7 @@ namespace FurnaceRT.Equipments.Jobs
|
|
|
}
|
|
|
|
|
|
List<Tuple<string, string, List<int>>> useStockers = new List<Tuple<string, string, List<int>>>();
|
|
|
- if (RecipeParser.LayoutRecipeParse(layoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out reason))
|
|
|
+ if (RecipeParser.LayoutRecipeParse(layoutRecipe, ModuleName.PM1.ToString(), out RecipeLayoutEntityNormal layoutRecipeDataNormal, out RecipeLayoutEntityExpert layoutRecipeDataExpert, out RecipeLayoutEntityConfig layoutRecipeDataConfig, out reason))
|
|
|
{
|
|
|
if (param.ContainsKey("CarrierPara"))
|
|
|
{
|