1.整理Cassette CreateDeleteWaferTray

This commit is contained in:
HCL 2024-03-12 10:55:46 +08:00
parent 1710b8cb9f
commit 3e7e41a679
14 changed files with 110 additions and 126 deletions

View File

@ -19,7 +19,7 @@ namespace SicModules.Aligners
public override bool Initialize()
{
WaferManager.Instance.SubscribeLocation(Module, _slot,true,false);
WaferManager.Instance.SubscribeLocation(Module, _slot);
return base.Initialize();
}

View File

@ -182,7 +182,6 @@ namespace SicModules.Cassettes
endSlot = endSlot - 1;
int slotFrom = 0;
int slotTo = 0;
WaferStatus state = WaferStatus.Normal;
ModuleName chamber = ModuleHelper.Converter(Module);
if (chamber == ModuleName.CassBL)
@ -198,25 +197,25 @@ namespace SicModules.Cassettes
if (slotTo >= slotFrom)
{
//if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, 0) && WaferManager.Instance.IsWaferSlotLocationValid(chamber, slotTo - 1))
//{
// WaferManager.Instance.DeleteWafer(chamber, 0, slotTo);
//}
//else
//{
// EV.PostWarningLog("Cassette", string.Format($"Invalid slot{Module} slot from {slotFrom}, slot to {slotTo}"));
// return false;
//}
for (int slot = slotFrom; slot <= slotTo; slot++)
{
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
if (WaferManager.Instance.CreateWafer(chamber, slot, state) == null)
if (chamber == ModuleName.CassBL)
{
EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} wafer failed."));
return false;
if (WaferManager.Instance.CreateTray(chamber, slot) == null)
{
EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} tray failed."));
return false;
}
}
else
{
if (WaferManager.Instance.CreateWafer(chamber, slot) == null)
{
EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} wafer failed."));
return false;
}
}
}
else
@ -226,7 +225,14 @@ namespace SicModules.Cassettes
}
}
EV.PostInfoLog("Cassette", $"Create wafer from {slotFrom} to {slotTo} successed.");
if (chamber == ModuleName.CassBL)
{
EV.PostInfoLog("Cassette", $"Create tray from {slotFrom + 1} to {slotTo + 1} successed.");
}
else
{
EV.PostInfoLog("Cassette", $"Create wafer from {slotFrom + 1} to {slotTo + 1} successed.");
}
return true;
}
@ -257,22 +263,18 @@ namespace SicModules.Cassettes
if (slotTo >= slotFrom)
{
//if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, 0) && WaferManager.Instance.IsWaferSlotLocationValid(chamber, slotTo - 1))
//{
// WaferManager.Instance.DeleteWafer(chamber, 0, slotTo);
//}
//else
//{
// EV.PostWarningLog("Cassette", string.Format($"Invalid slot{Module} slot from {slotFrom}, slot to {slotTo}"));
// return false;
//}
for (int slot = startSlot; slot <= slotTo; slot++)
for (int slot = slotFrom; slot <= slotTo; slot++)
{
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
WaferManager.Instance.DeleteWafer(chamber, slot);
if (chamber == ModuleName.CassBL)
{
WaferManager.Instance.DeleteTray(chamber, slot);
}
else
{
WaferManager.Instance.DeleteWafer(chamber, slot);
}
}
else
{
@ -281,7 +283,14 @@ namespace SicModules.Cassettes
}
}
EV.PostInfoLog("Cassette", $"Delete wafer from {slotFrom} to {slotTo} successed.");
if (chamber == ModuleName.CassBL)
{
EV.PostInfoLog("Cassette", $"Delete tray from {slotFrom + 1} to {slotTo + 1} successed.");
}
else
{
EV.PostInfoLog("Cassette", $"Delete wafer from {slotFrom + 1} to {slotTo + 1} successed.");
}
return true;
}

View File

@ -19,14 +19,8 @@ namespace SicModules.Cassettes
public override bool Initialize()
{
if (Module == ModuleName.CassBL.ToString())
{
WaferManager.Instance.SubscribeLocation(Module, _slot, false, true);
}
else
{
WaferManager.Instance.SubscribeLocation(Module, _slot, true, false);
}
WaferManager.Instance.SubscribeLocation(Module, _slot);
CarrierManager.Instance.SubscribeLocation(Module, 1);
return base.Initialize();

View File

@ -955,7 +955,7 @@ namespace SicRT.Modules
foreach (var needProcessWafer in cj.LotWafers)
{
if (CheckWaferNeedProcess((ModuleName)needProcessWafer.WaferOriginStation, needProcessWafer.WaferOriginSlot, ModuleName.PM1))
if (CheckWaferNeedProcess(ModuleHelper.Converter(needProcessWafer.WaferOriginStation), needProcessWafer.WaferOriginSlot, ModuleName.PM1))
{
if (_pm1.IsError)
{
@ -969,7 +969,7 @@ namespace SicRT.Modules
return;
}
}
else if (CheckWaferNeedProcess((ModuleName)needProcessWafer.WaferOriginStation, needProcessWafer.WaferOriginSlot, ModuleName.PM2))
else if (CheckWaferNeedProcess(ModuleHelper.Converter(needProcessWafer.WaferOriginStation), needProcessWafer.WaferOriginSlot, ModuleName.PM2))
{
if (_pm2.IsError)
{
@ -2890,7 +2890,7 @@ namespace SicRT.Modules
if (canPlaceCassette)
{
var wafer = _waferRobot.GetWaferInfo(0);
if (GetWaferReturnedCassette((ModuleName)wafer.WaferOriginStation) == ModuleName.CassAL)
if (GetWaferReturnedCassette(ModuleHelper.Converter(wafer.WaferOriginStation)) == ModuleName.CassAL)
{
if (_cassetteAL.IsAvailable && _cassetteAL.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot))
{
@ -2901,7 +2901,7 @@ namespace SicRT.Modules
}
}
}
else if (GetWaferReturnedCassette((ModuleName)wafer.WaferOriginStation) == ModuleName.CassAR)
else if (GetWaferReturnedCassette(ModuleHelper.Converter(wafer.WaferOriginStation)) == ModuleName.CassAR)
{
if (_cassetteAR.IsAvailable && _cassetteAR.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot))
{

View File

@ -615,7 +615,7 @@ namespace SicRT.Modules
if (canPlaceCassette)
{
var wafer = _waferRobot.GetWaferInfo(0);
if (wafer.WaferOriginStation == (int)ModuleName.CassAL)
if (wafer.WaferOriginStation == ModuleName.CassAL.ToString())
{
if (_cassetteAL.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot) && WaferManager.Instance.CheckNoWafer(ModuleName.CassAL, wafer.WaferOriginSlot))
{
@ -626,7 +626,7 @@ namespace SicRT.Modules
}
}
}
else if (wafer.WaferOriginStation == (int)ModuleName.CassAR)
else if (wafer.WaferOriginStation == ModuleName.CassAR.ToString())
{
if (_cassetteAR.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot) && WaferManager.Instance.CheckNoWafer(ModuleName.CassAR, wafer.WaferOriginSlot))
{

View File

@ -484,12 +484,14 @@ namespace SicRT.Equipments.Systems
{
OP.Subscribe("CreateWafer", InvokeCreateWafer);
OP.Subscribe("CreateTray", InvokeCreateTray);
OP.Subscribe("DeleteWafer", InvokeDeleteWafer);
OP.Subscribe("ReturnWafer", InvokeReturnWafer);
OP.Subscribe("DeleteTray", InvokeDeleteTray);
OP.Subscribe("ReturnWafer", InvokeReturnWafer);
OP.Subscribe("AlterWaferInfo", InvokeAlterWaferInfo);
OP.Subscribe("UpdatTrayBelongTo", (string cmd, object[] args) => { return true; });//注册空的方法,否则调用时日志有错误输出
@ -1186,50 +1188,29 @@ namespace SicRT.Equipments.Systems
return CheckToPostMessage((int)MSG.MoveWafer,
target, slot,
(ModuleName)wafer.WaferOriginStation, wafer.WaferOriginSlot,
ModuleHelper.Converter(wafer.WaferOriginStation), wafer.WaferOriginSlot,
false, 0, false, 0);
}
private bool InvokeDeleteWafer(string arg1, object[] args)
private bool InvokeCreateWafer(string arg1, object[] args)
{
ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
int slot = (int)args[1];
WaferStatus status = WaferStatus.Normal;
if (chamber == ModuleName.TrayRobot || chamber == ModuleName.CassBL)
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
if (WaferManager.Instance.CheckHasTray(chamber, slot))
if (WaferManager.Instance.CheckHasWafer(chamber, slot))
{
WaferManager.Instance.DeleteWafer(chamber, slot);
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot + 1);
EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot));
}
else
else if (WaferManager.Instance.CreateWafer(chamber, slot, status) != null)
{
EV.PostInfoLog("System", string.Format("No wafer at {0} {1}, delete not valid", chamber.ToString(), slot + 1));
}
}
else if (WaferManager.Instance.CheckHasWafer(chamber, slot))
{
if (chamber == ModuleName.TMRobot || chamber == ModuleName.LoadLock || chamber == ModuleName.UnLoad
|| chamber == ModuleName.Buffer || chamber == ModuleName.PM1 || chamber == ModuleName.PM2)
{
if (WaferManager.Instance.CheckHasTray(chamber, slot))
{
WaferManager.Instance.DeleteWaferOnly(chamber, slot);
}
else
{
WaferManager.Instance.DeleteWafer(chamber, slot);
}
}
else
{
WaferManager.Instance.DeleteWafer(chamber, slot);
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot, status.ToString());
}
}
else
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
}
@ -1237,51 +1218,55 @@ namespace SicRT.Equipments.Systems
return true;
}
private bool InvokeCreateWafer(string arg1, object[] args)
private bool InvokeCreateTray(string arg1, object[] args)
{
ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
int slot = (int)args[1];
WaferStatus state = WaferStatus.Normal;
TrayStatus status = TrayStatus.Normal;
if (chamber == ModuleName.TrayRobot || chamber == ModuleName.CassBL)
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
if (WaferManager.Instance.CheckHasTray(chamber, slot))
{
if (WaferManager.Instance.CheckHasTray(chamber, slot))
{
EV.PostInfoLog("System", string.Format("{0} slot {1} already has tray.create wafer is not valid", chamber, slot));
}
else if (WaferManager.Instance.CreateWafer(chamber, slot, state) != null)
{
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, state.ToString());
}
EV.PostInfoLog("System", string.Format("{0} slot {1} already has tray.create tray is not valid", chamber, slot));
}
else
else if (WaferManager.Instance.CreateTray(chamber, slot, status) != null)
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
//EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, status.ToString());
}
}
else
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
}
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
return true;
}
private bool InvokeDeleteWafer(string arg1, object[] args)
{
ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
int slot = (int)args[1];
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
if (!WaferManager.Instance.CheckHasWafer(chamber, slot))
{
if (WaferManager.Instance.CheckHasWafer(chamber, slot))
{
EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot));
}
else if (WaferManager.Instance.CreateWafer(chamber, slot, state) != null)
{
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, state.ToString());
}
EV.PostInfoLog("System", string.Format("{0} slot {1} no wafer.delete wafer is not valid", chamber, slot));
}
else
else
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
WaferManager.Instance.DeleteWafer(chamber, slot);
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot);
}
}
else
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
}
return true;
}
@ -1290,28 +1275,24 @@ namespace SicRT.Equipments.Systems
ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
int slot = (int)args[1];
if (WaferManager.Instance.CheckHasTray(chamber, slot))
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
{
if (chamber == ModuleName.Buffer)
if (!WaferManager.Instance.CheckHasTray(chamber, slot))
{
WaferManager.Instance.DeleteWafer(chamber, slot);
}
else if (WaferManager.Instance.CheckHasWafer(chamber, slot))
{
if(chamber == ModuleName.PM1 || chamber == ModuleName.PM2)
{
WaferManager.Instance.DeleteWafer(chamber, slot);
}
else
{
WaferManager.Instance.GetWafer(chamber, slot).TrayState = TrayStatus.Empty;
}
EV.PostInfoLog("System", string.Format("{0} slot {1} no tray.delete tray is not valid", chamber, slot));
}
else
{
WaferManager.Instance.DeleteWafer(chamber, slot);
WaferManager.Instance.DeleteTray(chamber, slot);
//EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot);
}
}
else
{
EV.PostWarningLog("System", string.Format("Invalid position{0}{1}", chamber.ToString(), slot.ToString()));
return false;
}
return true;
}

View File

@ -162,7 +162,7 @@
ToolTip="{lex:Loc ID_BTN_CreateWafer_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="CreateWafer">
<cal:ActionMessage MethodName="CreateAll">
<cal:Parameter Value="CassAL" />
<cal:Parameter Value="{Binding CassALeft1}" />
<cal:Parameter Value="{Binding CassALeft2}" />
@ -181,7 +181,7 @@
ToolTip="{lex:Loc ID_BTN_DeleteWafer_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="DeleteWafer">
<cal:ActionMessage MethodName="DeleteAll">
<cal:Parameter Value="CassAL" />
<cal:Parameter Value="{Binding CassALeft1}" />
<cal:Parameter Value="{Binding CassALeft2}" />
@ -283,7 +283,7 @@
ToolTip="{lex:Loc ID_BTN_CreateWafer_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="CreateWafer">
<cal:ActionMessage MethodName="CreateAll">
<cal:Parameter Value="CassAR" />
<cal:Parameter Value="{Binding CassARight1}" />
<cal:Parameter Value="{Binding CassARight2}" />
@ -302,7 +302,7 @@
ToolTip="{lex:Loc ID_BTN_DeleteWafer_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="DeleteWafer">
<cal:ActionMessage MethodName="DeleteAll">
<cal:Parameter Value="CassAR" />
<cal:Parameter Value="{Binding CassARight1}" />
<cal:Parameter Value="{Binding CassARight2}" />
@ -863,7 +863,7 @@
ToolTip="{lex:Loc ID_BTN_CreateTray_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="CreateWafer">
<cal:ActionMessage MethodName="CreateAll">
<cal:Parameter Value="CassBL" />
<cal:Parameter Value="{Binding CassBL1}" />
<cal:Parameter Value="{Binding CassBL2}" />
@ -881,7 +881,7 @@
ToolTip="{lex:Loc ID_BTN_DeleteTray_ToolTip}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="DeleteWafer">
<cal:ActionMessage MethodName="DeleteAll">
<cal:Parameter Value="CassBL" />
<cal:Parameter Value="{Binding CassBL1}" />
<cal:Parameter Value="{Binding CassBL2}" />

View File

@ -1179,7 +1179,7 @@ namespace SicUI.Models.Operations.Overviews
public bool IsCassARLoadEnable => true;
public bool IsCassBLLoadEnable => true;
public void CreateWafer(string cassName, string startSlotStr, string endSlotStr)
public void CreateAll(string cassName, string startSlotStr, string endSlotStr)
{
int startSlot = 0;
int endSlot = 0;
@ -1189,7 +1189,7 @@ namespace SicUI.Models.Operations.Overviews
}
}
public void DeleteWafer(string cassName, string startSlotStr, string endSlotStr)
public void DeleteAll(string cassName, string startSlotStr, string endSlotStr)
{
int startSlot = 0;
int endSlot = 0;